109
Capítulo 3: Camada de Transporte Metas do capítulo: entender os princípios atrás dos serviços da camada de transporte: multiplexação/ demultiplexação transferência confiável de dados controle de fluxo controle de congestionamento aprender sobre os protocolos da camada de transporte da Internet: UDP: transporte não orientado a conexões TCP: transporte orientado a conexões Controle de congestionamento do TCP 3: Camada de Transporte 1

Capítulo 3: Camada de Transporte

  • Upload
    kiona

  • View
    40

  • Download
    0

Embed Size (px)

DESCRIPTION

Metas do capítulo: entender os princípios atrás dos serviços da camada de transporte: multiplexação/ demultiplexação transferência confiável de dados controle de fluxo controle de congestionamento . Capítulo 3: Camada de Transporte. - PowerPoint PPT Presentation

Citation preview

Page 1: Capítulo 3: Camada de Transporte

Capiacutetulo 3 Camada de TransporteMetas do capiacutetulo entender os

princiacutepios atraacutes dos serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia

confiaacutevel de dados controle de fluxo controle de

congestionamento

aprender sobre os protocolos da camada de transporte da Internet UDP transporte natildeo

orientado a conexotildees

TCP transporte orientado a conexotildees

Controle de congestionamento do TCP 3 Camada de Transporte 1

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 2

Serviccedilos e protocolos de transporte fornecem comunicaccedilatildeo loacutegica

entre processos de aplicaccedilatildeo executando em diferentes hospedeiros

os protocolos de transporte satildeo executados nos sistemas finais lado transmissor quebra

as mensagens da aplicaccedilatildeo em segmentos repassa-os para a camada de rede

lado receptor remonta as mensagens a partir dos segmentos repassa-as para a camada de aplicaccedilatildeo

existe mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildees

Internet TCP e UDP

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesicarede

enlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 3

Camadas de Transporte x rede camada de rede comunicaccedilatildeo loacutegica entre

hospedeiros camada de transporte comunicaccedilatildeo loacutegica

entre os processos depende de estende serviccedilos da camada de rede

Analogia domeacutestica12 crianccedilas enviando cartas

para 12 crianccedilas processos = crianccedilas mensagens da apl =

cartas nos envelopes hospedeiros = casas protocolo de transporte

= Anna e Bill protocolo da camada de

rede = serviccedilo postal

3 Camada de Transporte 4

Protocolos da camada de transporte Internet entrega confiaacutevel

ordenada (TCP) controle de

congestionamento controle de fluxo estabelecimento de

conexatildeo (ldquosetuprdquo) entrega natildeo confiaacutevel natildeo

ordenada UDP extensatildeo sem ldquogordurasrdquo

do ldquomelhor esforccedilordquo do IP serviccedilos natildeo disponiacuteveis

garantias de atraso maacuteximo

garantias de largura de banda miacutenima

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesicarede

enlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 5

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 6

Multiplexaccedilatildeodemultiplexaccedilatildeo

Entrega dos segmentos recebidos ao socket correto

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e

do destino cada datagrama transporta 1 segmento da camada

de transporte cada segmento possui nuacutemeros das portas origem e

destino O hospedeiro usa os endereccedilos IP e os nuacutemeros

das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

formato de segmento TCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com

nuacutemeros de portaDatagramSocket mySocket1 =

new DatagramSocket(9911)DatagramSocket mySocket2 =

new DatagramSocket(9922) socket UDP

identificado pela dupla

(end IP dest no da porta destino)

Quando o hospedeiro recebe segmento UDP verifica no da porta de

destino no segmento encaminha o segmento

UDP para o socket com aquele no de porta

Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket

3 Camada de Transporte 9

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket

(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocket mySocket2 = new DatagramSocket (9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta

origem endereccedilo IP destino nuacutemero da porta

destino receptor usa todos os

quatro valores para direcionar o segmento para o socket apropriado

Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute

identificado pela sua proacutepria quaacutedrupla

Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente

teraacute sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos

server IP

address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

server IP

address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

threaded server

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 2: Capítulo 3: Camada de Transporte

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 2

Serviccedilos e protocolos de transporte fornecem comunicaccedilatildeo loacutegica

entre processos de aplicaccedilatildeo executando em diferentes hospedeiros

os protocolos de transporte satildeo executados nos sistemas finais lado transmissor quebra

as mensagens da aplicaccedilatildeo em segmentos repassa-os para a camada de rede

lado receptor remonta as mensagens a partir dos segmentos repassa-as para a camada de aplicaccedilatildeo

existe mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildees

Internet TCP e UDP

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesicarede

enlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 3

Camadas de Transporte x rede camada de rede comunicaccedilatildeo loacutegica entre

hospedeiros camada de transporte comunicaccedilatildeo loacutegica

entre os processos depende de estende serviccedilos da camada de rede

Analogia domeacutestica12 crianccedilas enviando cartas

para 12 crianccedilas processos = crianccedilas mensagens da apl =

cartas nos envelopes hospedeiros = casas protocolo de transporte

= Anna e Bill protocolo da camada de

rede = serviccedilo postal

3 Camada de Transporte 4

Protocolos da camada de transporte Internet entrega confiaacutevel

ordenada (TCP) controle de

congestionamento controle de fluxo estabelecimento de

conexatildeo (ldquosetuprdquo) entrega natildeo confiaacutevel natildeo

ordenada UDP extensatildeo sem ldquogordurasrdquo

do ldquomelhor esforccedilordquo do IP serviccedilos natildeo disponiacuteveis

garantias de atraso maacuteximo

garantias de largura de banda miacutenima

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesicarede

enlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 5

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 6

Multiplexaccedilatildeodemultiplexaccedilatildeo

Entrega dos segmentos recebidos ao socket correto

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e

do destino cada datagrama transporta 1 segmento da camada

de transporte cada segmento possui nuacutemeros das portas origem e

destino O hospedeiro usa os endereccedilos IP e os nuacutemeros

das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

formato de segmento TCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com

nuacutemeros de portaDatagramSocket mySocket1 =

new DatagramSocket(9911)DatagramSocket mySocket2 =

new DatagramSocket(9922) socket UDP

identificado pela dupla

(end IP dest no da porta destino)

Quando o hospedeiro recebe segmento UDP verifica no da porta de

destino no segmento encaminha o segmento

UDP para o socket com aquele no de porta

Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket

3 Camada de Transporte 9

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket

(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocket mySocket2 = new DatagramSocket (9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta

origem endereccedilo IP destino nuacutemero da porta

destino receptor usa todos os

quatro valores para direcionar o segmento para o socket apropriado

Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute

identificado pela sua proacutepria quaacutedrupla

Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente

teraacute sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos

server IP

address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

server IP

address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

threaded server

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 3: Capítulo 3: Camada de Transporte

Serviccedilos e protocolos de transporte fornecem comunicaccedilatildeo loacutegica

entre processos de aplicaccedilatildeo executando em diferentes hospedeiros

os protocolos de transporte satildeo executados nos sistemas finais lado transmissor quebra

as mensagens da aplicaccedilatildeo em segmentos repassa-os para a camada de rede

lado receptor remonta as mensagens a partir dos segmentos repassa-as para a camada de aplicaccedilatildeo

existe mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildees

Internet TCP e UDP

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesicarede

enlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 3

Camadas de Transporte x rede camada de rede comunicaccedilatildeo loacutegica entre

hospedeiros camada de transporte comunicaccedilatildeo loacutegica

entre os processos depende de estende serviccedilos da camada de rede

Analogia domeacutestica12 crianccedilas enviando cartas

para 12 crianccedilas processos = crianccedilas mensagens da apl =

cartas nos envelopes hospedeiros = casas protocolo de transporte

= Anna e Bill protocolo da camada de

rede = serviccedilo postal

3 Camada de Transporte 4

Protocolos da camada de transporte Internet entrega confiaacutevel

ordenada (TCP) controle de

congestionamento controle de fluxo estabelecimento de

conexatildeo (ldquosetuprdquo) entrega natildeo confiaacutevel natildeo

ordenada UDP extensatildeo sem ldquogordurasrdquo

do ldquomelhor esforccedilordquo do IP serviccedilos natildeo disponiacuteveis

garantias de atraso maacuteximo

garantias de largura de banda miacutenima

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesicarede

enlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 5

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 6

Multiplexaccedilatildeodemultiplexaccedilatildeo

Entrega dos segmentos recebidos ao socket correto

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e

do destino cada datagrama transporta 1 segmento da camada

de transporte cada segmento possui nuacutemeros das portas origem e

destino O hospedeiro usa os endereccedilos IP e os nuacutemeros

das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

formato de segmento TCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com

nuacutemeros de portaDatagramSocket mySocket1 =

new DatagramSocket(9911)DatagramSocket mySocket2 =

new DatagramSocket(9922) socket UDP

identificado pela dupla

(end IP dest no da porta destino)

Quando o hospedeiro recebe segmento UDP verifica no da porta de

destino no segmento encaminha o segmento

UDP para o socket com aquele no de porta

Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket

3 Camada de Transporte 9

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket

(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocket mySocket2 = new DatagramSocket (9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta

origem endereccedilo IP destino nuacutemero da porta

destino receptor usa todos os

quatro valores para direcionar o segmento para o socket apropriado

Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute

identificado pela sua proacutepria quaacutedrupla

Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente

teraacute sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos

server IP

address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

server IP

address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

threaded server

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 4: Capítulo 3: Camada de Transporte

Camadas de Transporte x rede camada de rede comunicaccedilatildeo loacutegica entre

hospedeiros camada de transporte comunicaccedilatildeo loacutegica

entre os processos depende de estende serviccedilos da camada de rede

Analogia domeacutestica12 crianccedilas enviando cartas

para 12 crianccedilas processos = crianccedilas mensagens da apl =

cartas nos envelopes hospedeiros = casas protocolo de transporte

= Anna e Bill protocolo da camada de

rede = serviccedilo postal

3 Camada de Transporte 4

Protocolos da camada de transporte Internet entrega confiaacutevel

ordenada (TCP) controle de

congestionamento controle de fluxo estabelecimento de

conexatildeo (ldquosetuprdquo) entrega natildeo confiaacutevel natildeo

ordenada UDP extensatildeo sem ldquogordurasrdquo

do ldquomelhor esforccedilordquo do IP serviccedilos natildeo disponiacuteveis

garantias de atraso maacuteximo

garantias de largura de banda miacutenima

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesicarede

enlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 5

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 6

Multiplexaccedilatildeodemultiplexaccedilatildeo

Entrega dos segmentos recebidos ao socket correto

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e

do destino cada datagrama transporta 1 segmento da camada

de transporte cada segmento possui nuacutemeros das portas origem e

destino O hospedeiro usa os endereccedilos IP e os nuacutemeros

das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

formato de segmento TCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com

nuacutemeros de portaDatagramSocket mySocket1 =

new DatagramSocket(9911)DatagramSocket mySocket2 =

new DatagramSocket(9922) socket UDP

identificado pela dupla

(end IP dest no da porta destino)

Quando o hospedeiro recebe segmento UDP verifica no da porta de

destino no segmento encaminha o segmento

UDP para o socket com aquele no de porta

Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket

3 Camada de Transporte 9

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket

(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocket mySocket2 = new DatagramSocket (9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta

origem endereccedilo IP destino nuacutemero da porta

destino receptor usa todos os

quatro valores para direcionar o segmento para o socket apropriado

Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute

identificado pela sua proacutepria quaacutedrupla

Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente

teraacute sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos

server IP

address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

server IP

address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

threaded server

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 5: Capítulo 3: Camada de Transporte

Protocolos da camada de transporte Internet entrega confiaacutevel

ordenada (TCP) controle de

congestionamento controle de fluxo estabelecimento de

conexatildeo (ldquosetuprdquo) entrega natildeo confiaacutevel natildeo

ordenada UDP extensatildeo sem ldquogordurasrdquo

do ldquomelhor esforccedilordquo do IP serviccedilos natildeo disponiacuteveis

garantias de atraso maacuteximo

garantias de largura de banda miacutenima

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

aplicaccedilatildeotransporte

redeenlacefiacutesica

redeenlacefiacutesica

redeenlacefiacutesicarede

enlacefiacutesica

redeenlacefiacutesica

transporte loacutegico fim a fim

3 Camada de Transporte 5

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 6

Multiplexaccedilatildeodemultiplexaccedilatildeo

Entrega dos segmentos recebidos ao socket correto

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e

do destino cada datagrama transporta 1 segmento da camada

de transporte cada segmento possui nuacutemeros das portas origem e

destino O hospedeiro usa os endereccedilos IP e os nuacutemeros

das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

formato de segmento TCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com

nuacutemeros de portaDatagramSocket mySocket1 =

new DatagramSocket(9911)DatagramSocket mySocket2 =

new DatagramSocket(9922) socket UDP

identificado pela dupla

(end IP dest no da porta destino)

Quando o hospedeiro recebe segmento UDP verifica no da porta de

destino no segmento encaminha o segmento

UDP para o socket com aquele no de porta

Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket

3 Camada de Transporte 9

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket

(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocket mySocket2 = new DatagramSocket (9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta

origem endereccedilo IP destino nuacutemero da porta

destino receptor usa todos os

quatro valores para direcionar o segmento para o socket apropriado

Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute

identificado pela sua proacutepria quaacutedrupla

Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente

teraacute sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos

server IP

address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

server IP

address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

threaded server

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 6: Capítulo 3: Camada de Transporte

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 6

Multiplexaccedilatildeodemultiplexaccedilatildeo

Entrega dos segmentos recebidos ao socket correto

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e

do destino cada datagrama transporta 1 segmento da camada

de transporte cada segmento possui nuacutemeros das portas origem e

destino O hospedeiro usa os endereccedilos IP e os nuacutemeros

das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

formato de segmento TCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com

nuacutemeros de portaDatagramSocket mySocket1 =

new DatagramSocket(9911)DatagramSocket mySocket2 =

new DatagramSocket(9922) socket UDP

identificado pela dupla

(end IP dest no da porta destino)

Quando o hospedeiro recebe segmento UDP verifica no da porta de

destino no segmento encaminha o segmento

UDP para o socket com aquele no de porta

Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket

3 Camada de Transporte 9

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket

(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocket mySocket2 = new DatagramSocket (9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta

origem endereccedilo IP destino nuacutemero da porta

destino receptor usa todos os

quatro valores para direcionar o segmento para o socket apropriado

Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute

identificado pela sua proacutepria quaacutedrupla

Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente

teraacute sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos

server IP

address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

server IP

address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

threaded server

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 7: Capítulo 3: Camada de Transporte

Multiplexaccedilatildeodemultiplexaccedilatildeo

Entrega dos segmentos recebidos ao socket correto

Demultiplexaccedilatildeo no receptorreuacutene dados de muitos sockets envelopa os dados com o cabeccedilalho (usado posteriormente para a demultiplexaccedilatildeo)

Multiplexaccedilatildeo no transm

processo

sockettransporte

aplicaccedilatildeo

fiacutesicaenlacerede

P2P1

transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P4transporte

aplicaccedilatildeo

fiacutesicaenlacerede

P3

3 Camada de Transporte 7

computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e

do destino cada datagrama transporta 1 segmento da camada

de transporte cada segmento possui nuacutemeros das portas origem e

destino O hospedeiro usa os endereccedilos IP e os nuacutemeros

das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

formato de segmento TCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com

nuacutemeros de portaDatagramSocket mySocket1 =

new DatagramSocket(9911)DatagramSocket mySocket2 =

new DatagramSocket(9922) socket UDP

identificado pela dupla

(end IP dest no da porta destino)

Quando o hospedeiro recebe segmento UDP verifica no da porta de

destino no segmento encaminha o segmento

UDP para o socket com aquele no de porta

Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket

3 Camada de Transporte 9

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket

(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocket mySocket2 = new DatagramSocket (9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta

origem endereccedilo IP destino nuacutemero da porta

destino receptor usa todos os

quatro valores para direcionar o segmento para o socket apropriado

Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute

identificado pela sua proacutepria quaacutedrupla

Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente

teraacute sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos

server IP

address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

server IP

address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

threaded server

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 8: Capítulo 3: Camada de Transporte

computador recebe os datagramas IP cada datagrama possui os endereccedilos IP da origem e

do destino cada datagrama transporta 1 segmento da camada

de transporte cada segmento possui nuacutemeros das portas origem e

destino O hospedeiro usa os endereccedilos IP e os nuacutemeros

das portas para direcionar o segmento ao socket apropriado

Como funciona a demultiplexaccedilatildeo

porta origem porta destino32 bits

dados daaplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

formato de segmento TCPUDP

3 Camada de Transporte 8

Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com

nuacutemeros de portaDatagramSocket mySocket1 =

new DatagramSocket(9911)DatagramSocket mySocket2 =

new DatagramSocket(9922) socket UDP

identificado pela dupla

(end IP dest no da porta destino)

Quando o hospedeiro recebe segmento UDP verifica no da porta de

destino no segmento encaminha o segmento

UDP para o socket com aquele no de porta

Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket

3 Camada de Transporte 9

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket

(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocket mySocket2 = new DatagramSocket (9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta

origem endereccedilo IP destino nuacutemero da porta

destino receptor usa todos os

quatro valores para direcionar o segmento para o socket apropriado

Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute

identificado pela sua proacutepria quaacutedrupla

Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente

teraacute sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos

server IP

address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

server IP

address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

threaded server

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 9: Capítulo 3: Camada de Transporte

Demultiplexaccedilatildeo natildeo orientada a conexotildees Cria sockets com

nuacutemeros de portaDatagramSocket mySocket1 =

new DatagramSocket(9911)DatagramSocket mySocket2 =

new DatagramSocket(9922) socket UDP

identificado pela dupla

(end IP dest no da porta destino)

Quando o hospedeiro recebe segmento UDP verifica no da porta de

destino no segmento encaminha o segmento

UDP para o socket com aquele no de porta

Datagramas IP com mesmo no de porta destino diferentes endereccedilos IP origem eou nuacutemeros de porta origem podem ser encaminhados para o mesmo socket

3 Camada de Transporte 9

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket

(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocket mySocket2 = new DatagramSocket (9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta

origem endereccedilo IP destino nuacutemero da porta

destino receptor usa todos os

quatro valores para direcionar o segmento para o socket apropriado

Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute

identificado pela sua proacutepria quaacutedrupla

Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente

teraacute sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos

server IP

address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

server IP

address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

threaded server

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 10: Capítulo 3: Camada de Transporte

Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo

DatagramSocket serverSocket = new DatagramSocket

(6428)

transport

application

physicallink

network

P3transport

application

physicallink

network

P1

transport

application

physicallink

network

P4

DatagramSocket mySocket1 = new DatagramSocket (5775)

DatagramSocket mySocket2 = new DatagramSocket (9157)

source port 9157dest port 6428

source port 6428dest port 9157

source port dest port

source port dest port

3 Camada de Transporte 10

Demultiplexaccedilatildeo Orientada a Conexotildees

Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta

origem endereccedilo IP destino nuacutemero da porta

destino receptor usa todos os

quatro valores para direcionar o segmento para o socket apropriado

Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute

identificado pela sua proacutepria quaacutedrupla

Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente

teraacute sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos

server IP

address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

server IP

address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

threaded server

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 11: Capítulo 3: Camada de Transporte

Demultiplexaccedilatildeo Orientada a Conexotildees

Socket TCP identificado pela quaacutedrupla endereccedilo IP origem nuacutemero da porta

origem endereccedilo IP destino nuacutemero da porta

destino receptor usa todos os

quatro valores para direcionar o segmento para o socket apropriado

Servidor pode dar suporte a muitos sockets TCP simultacircneos cada socket eacute

identificado pela sua proacutepria quaacutedrupla

Servidores Web tecircm sockets diferentes para cada conexatildeo cliente HTTP natildeo persistente

teraacute sockets diferentes para cada pedido

3 Camada de Transporte 11

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos

server IP

address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

server IP

address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

threaded server

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 12: Capítulo 3: Camada de Transporte

Demultiplexaccedilatildeo Orientada a Conexotildees exemplo

transport

application

physicallink

network

P3transport

application

physicallink

P4

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

network

P6P5P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

trecircs segmentos todos destinados ao endereccedilo IP B dest port 80 satildeo demultiplexados para sockets distintos

server IP

address B

3 Camada de Transporte 12

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

server IP

address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

threaded server

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 13: Capítulo 3: Camada de Transporte

Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads

transport

application

physicallink

network

P3transport

application

physicallink

transport

application

physicallink

network

P2

source IPport A9157dest IP port B80

source IPport B80dest IPport A9157host IP

address A

host IP address

C

server IP

address B

network

P3

source IPport C5775dest IPport B80

source IPport C9157dest IPport B80

P4

threaded server

3 Camada de Transporte 13

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 14: Capítulo 3: Camada de Transporte

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 14

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 15: Capítulo 3: Camada de Transporte

UDP User Datagram Protocol [RFC 768]

Protocolo de transporte da Internet miacutenimo ldquosem gordurasrdquo

Serviccedilo ldquomelhor esforccedilordquo segmentos UDP podem ser perdidos entregues agrave aplicaccedilatildeo

fora de ordem sem conexatildeo

natildeo haacute ldquosetuprdquo UDP entre remetente receptor

tratamento independente de cada segmento UDP

Uso do UDP aplicaccedilotildees de

streaming multimiacutedia (tolerante a perdas sensiacutevel a taxas)

DNS SNMP

transferecircncia confiaacutevel sobre UDP adiciona

confiabilidade na camada de aplicaccedilatildeo

recuperaccedilatildeo de erros especiacutefica da aplicaccedilatildeo

3 Camada de Transporte 15

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 16: Capítulo 3: Camada de Transporte

UDP Cabeccedilalho do segmento

porta origem porta dest32 bits

Dados de aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento em bytes do

segmento UDPincluindo cabeccedilalho

Por quecirc existe um UDP

elimina estabelecimento de conexatildeo (o que pode causar retardo)

simples natildeo se manteacutem ldquoestadordquo da conexatildeo nem no remetente nem no receptor

cabeccedilalho de segmento reduzido

Natildeo haacute controle de congestionamento UDP pode transmitir tatildeo raacutepido quanto desejado (e possiacutevel)

3 Camada de Transporte 16

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 17: Capítulo 3: Camada de Transporte

Soma de Verificaccedilatildeo (checksum) UDP

Transmissor trata conteuacutedo do

segmento como sequumlecircncia de inteiros de 16-bits

campo checksum zerado

checksum soma (adiccedilatildeo usando complemento de 1) do conteuacutedo do segmento

transmissor coloca complemento do valor da soma no campo checksum de UDP

Receptor calcula checksum do

segmento recebido verifica se checksum

computado eacute tudo um lsquoFFFFrsquo NAtildeO - erro detectado SIM - nenhum erro

detectado Mas ainda pode ter erros Veja depois hellip

Objetivo detectar ldquoerrosrdquo (ex bits trocados) no segmento transmitido

3 Camada de Transporte 17

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 18: Capítulo 3: Camada de Transporte

Exemplo do Checksum Internet Note que

Ao adicionar nuacutemeros o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado

Exemplo adiccedilatildeo de dois inteiros de 16-bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

transbordo

somasoma de

verificaccedilatildeo 3 Camada de Transporte 18

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 19: Capítulo 3: Camada de Transporte

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 19

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 20: Capítulo 3: Camada de Transporte

Princiacutepios de Transferecircncia confiaacutevel de dados (rdt) importante nas

camadas de transporte enlace

na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinam a complexidade de um protocolo de transferecircncia confiaacutevel de dados (rdt)

3 Camada de Transporte 20

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 21: Capítulo 3: Camada de Transporte

Transferecircncia confiaacutevel o ponto de partida

ladotransmissor

ladoreceptor

rdt_send() chamada de cima (ex pela apl) Passa dados p

serementregues agrave camada sup do

receptor

udt_send() chamada pela entidade de transporte p

transferir pacotes para o receptor sobre o canal natildeo confiaacutevel

rdt_rcv() chamada quando pacote chega no lado receptor

do canal

deliver_data() chamada pela entidade de transporte p entregar dados p camada

superior

3 Camada de Transporte 21

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 22: Capítulo 3: Camada de Transporte

Transferecircncia confiaacutevel o ponto de partidaIremos desenvolver incrementalmente os lados transmissor e

receptor de um protocolo confiaacutevel de transferecircncia de dados (rdt)

considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos

Usar maacutequinas de estados finitos (FSM) p especificar os protocolos transmissor e receptor

estado1 estado

2

evento causador da transiccedilatildeo de estadoaccedilotildees executadas na transiccedilatildeo de estado

estado neste ldquoestadordquo o proacuteximo

estado eacute determinado

unicamente pelo proacuteximo evento

eventoaccedilotildees

3 Camada de Transporte 22

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 23: Capítulo 3: Camada de Transporte

rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis

canal de transmissatildeo perfeitamente confiaacutevel natildeo haacute erros de bits natildeo haacute perda de

pacotes FSMs separadas para

transmissor e receptor transmissor envia

dados pelo canal subjacente

receptor lecirc os dados do canal subjacente 3 Camada de Transporte 23

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 24: Capítulo 3: Camada de Transporte

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros

Como as pessoas recuperam ldquoerrosrdquodurante uma conversa

3 Camada de Transporte 24

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 25: Capítulo 3: Camada de Transporte

rdt20 canal com erros de bits canal subjacente pode trocar valores dos bits num

pacote lembre-se checksum UDP pode detectar erros de bits

a questatildeo como recuperar esses erros reconhecimentos (ACKs) receptor avisa explicitamente ao

transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs) receptor avisa

explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK

novos mecanismos no rdt20 (em relaccedilatildeo ao rdt10) detecccedilatildeo de erros retorno ao transmissor mensagens de controle (ACKNAK)

receptor-gttransmissor

3 Camada de Transporte 25

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 26: Capítulo 3: Camada de Transporte

rdt20 especificaccedilatildeo da FSM

3 Camada de Transporte 26

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 27: Capítulo 3: Camada de Transporte

rdt20 operaccedilatildeo com 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)

L

3 Camada de Transporte 27

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 28: Capítulo 3: Camada de Transporte

rdt20 cenaacuterio de erro

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)

L

3 Camada de Transporte 28

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 29: Capítulo 3: Camada de Transporte

rdt20 tem uma falha fatalO que acontece se o

ACKNAK for corrompido

Transmissor natildeo sabe o que se passou no receptor

natildeo pode apenas retransmitir possibilidade de pacotes duplicados

Lidando c duplicatas transmissor retransmite

o uacuteltimo pacote se ACKNAK chegar com erro

transmissor inclui nuacutemero de sequumlecircncia em cada pacote

receptor descarta (natildeo entrega a aplicaccedilatildeo) pacotes duplicados

Transmissor envia um pacotee entatildeo aguarda resposta do receptor

pare e espera

3 Camada de Transporte 29

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 30: Capítulo 3: Camada de Transporte

rdt21 transmissor trata ACKNAKs corrompidos

3 Camada de Transporte 30

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 31: Capítulo 3: Camada de Transporte

rdt21 receptor trata ACKNAKs corrompidos

Esperar 0 de baixo

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)

Esperar 1 de baixo

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)

3 Camada de Transporte 31

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 32: Capítulo 3: Camada de Transporte

rdt21 discussatildeoTransmissor no de seq no pacote bastam dois nos de seq (01) Por quecirc deve verificar se ACKNAK recebidos estatildeo

corrompidos duplicou o no de estados

estado deve ldquolembrarrdquo se pacote ldquoesperadordquo deve ter no de seq 0 ou 1

Receptor deve verificar se o pacote recebido eacute uma

duplicata estado indica se no de seq esperado eacute 0 ou 1

nota receptor natildeo tem como saber se uacuteltimo ACKNAK foi recebido bem pelo transmissor

3 Camada de Transporte 32

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 33: Capítulo 3: Camada de Transporte

rdt22 um protocolo sem NAKs mesma funcionalidade do rdt21

usando apenas ACKs ao inveacutes de NAK receptor envia ACK

para uacuteltimo pacote recebido sem erro receptor deve incluir explicitamente no de

seq do pacote reconhecido ACKs duplicados no transmissor

resultam na mesma accedilatildeo do NAK retransmissatildeo do pacote corrente

3 Camada de Transporte 33

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 34: Capítulo 3: Camada de Transporte

rdt22 fragmentos do transmissor e receptor

aguarda chamada 0

de cima

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)

aguarda ACK

0

fragmento FSMdo transmissor

aguarda0 de baixo

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 FSM

do receptor

L

3 Camada de Transporte 34

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 35: Capítulo 3: Camada de Transporte

rdt30 canais com erros e perdas

Nova hipoacutetese canal de transmissatildeo tambeacutem pode perder pacotes (dados ou ACKs) checksum no de seq

ACKs retransmissotildees podem ajudar mas natildeo seratildeo suficientes

P como lidar com perdas transmissor espera ateacute

ter certeza que se perdeu pacote ou ACK e entatildeo retransmite

desvantagens

Abordagem transmissor aguarda um tempo ldquorazoaacutevelrdquo pelo ACK

retransmite se nenhum ACK for recebido neste intervalo

se pacote (ou ACK) apenas atrasado (e natildeo perdido) retransmissatildeo seraacute

duplicata mas uso de no de seq jaacute cuida disto

receptor deve especificar no de seq do pacote sendo reconhecido

requer temporizador3 Camada de Transporte 35

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 36: Capítulo 3: Camada de Transporte

Transmissor rdt30

3 Camada de Transporte 36

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 37: Capítulo 3: Camada de Transporte

rdt30 em accedilatildeo

3 Camada de Transporte 37

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 38: Capítulo 3: Camada de Transporte

rdt30 em accedilatildeo

rcv pkt1send ack1

(detect duplicate)

pkt1

Remetente Destinataacuterio

rcv pkt1

send ack0rcv ack0

send pkt1

send pkt0rcv pkt0

pkt0

ack0

(d) retransmissatildeo prematura

pkt1timeout

resend pkt1

ack1

send ack1

ignorarcv ack1 ack1send pkt0rcv ack1 pkt0

rcv pkt0send ack0ack0

3 Camada de Transporte 38

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 39: Capítulo 3: Camada de Transporte

Desempenho do rdt30 rdt30 funciona poreacutem seu desempenho eacute

sofriacutevel Exemplo enlace de 1 Gbps retardo fim a fim

de 15 ms pacote de 1KB

pac de 1KB a cada 30 mseg -gt vazatildeo de 33kBseg num enlace de 1 Gbps

protocolo limita uso dos recursos fiacutesicos

U sender = 00088 30008

= 000027 microseconds

L R RTT + L R

=

dosmicrosegun8bps10bits8000

9 RLdtrans

3 Camada de Transporte 39

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 40: Capítulo 3: Camada de Transporte

rdt30 operaccedilatildeo pare e espere

000270008300080

RTT

tx

RL

RLU

3 Camada de Transporte 40

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 41: Capítulo 3: Camada de Transporte

Protocolos com paralelismo (pipelining)

Paralelismo (pipelining) transmissor envia vaacuterios pacotes em sequecircncia todos esperando para serem reconhecidos faixa de nuacutemeros de sequecircncia deve ser

aumentada Armazenamento no transmissor eou no receptor

Duas formas geneacutericas de protocolos com paralelismo Go-back-N retransmissatildeo seletiva

(a) operaccedilatildeo do protocolo pare e espere (a) operaccedilatildeo do protocolo com paralelismo

3 Camada de Transporte 41

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 42: Capítulo 3: Camada de Transporte

Paralelismo aumento da utilizaccedilatildeo

0008000830

0240RTT

3tx

RL

RLU

Aumenta a utilizaccedilatildeopor um fator de 3

3 Camada de Transporte 42

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 43: Capítulo 3: Camada de Transporte

Protocolos com ParalelismoGo-back-N O transmissor pode ter

ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia apenas acks cumulativos Natildeo reconhece pacote

se houver falha de seq Transmissor possui um

temporizador para o pacote mais antigo ainda natildeo reconhecido Se o temporizador

estourar retransmite todos os pacotes ainda natildeo reconhecidos

Retransmissatildeo seletiva

O transmissor pode ter ateacute N pacotes natildeo reconhecidos no ldquotubordquo

Receptor envia acks individuais para cada pacote

Transmissor possui um temporizador para cada pacote ainda natildeo reconhecido Se o temporizador

estourar retransmite apenas o pacote correspondente3 Camada de Transporte 43

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 44: Capítulo 3: Camada de Transporte

Go-back-N (GBN)Transmissor no de seq de k-bits no cabeccedilalho do pacote admite ldquojanelardquo de ateacute N pacotes consecutivos natildeo

reconhecidos

ACK(n) reconhece todos pacotes ateacute e inclusive no de seq n - ldquoACKreconhecimento cumulativordquo pode receber ACKs duplicados (veja receptor)

temporizador para o pacote mais antigo ainda natildeo confirmado

Estouro do temporizador retransmite todos os pacotes pendentes 3 Camada de Transporte 44

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 45: Capítulo 3: Camada de Transporte

GBN FSM estendida para o transmissor

If getacknum(rcvpkt)gt=base

3 Camada de Transporte 45

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 46: Capítulo 3: Camada de Transporte

GBN FSM estendida para o receptor

receptor simples usa apenas ACK sempre

envia ACK para pacote recebido corretamente com o maior no de seq em-ordem pode gerar ACKs duplicados soacute precisa se lembrar do

expectedseqnum pacotes fora de ordem

descarta (natildeo armazena) -gt receptor natildeo usa buffers

reconhece pacote com o mais alto nuacutemero de sequumlecircncia em-ordem

3 Camada de Transporte 46

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 47: Capítulo 3: Camada de Transporte

send pkt0send pkt1send pkt2send pkt3

(wait)

sender receiver

receive pkt0 send ack0receive pkt1 send ack1 receive pkt3 discard (re)send ack1rcv ack0 send pkt4

rcv ack1 send pkt5

timeoutsend pkt2send pkt3send pkt4send pkt5

Xloss

receive pkt4 discard (re)send ack1receive pkt5 discard (re)send ack1

rcv pkt2 deliver send ack2rcv pkt3 deliver send ack3rcv pkt4 deliver send ack4rcv pkt5 deliver send ack5

ignore duplicate ACK

0 1 2 3 4 5 6 7 8

sender window (N=4)

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8

3 Camada de Transporte 47

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 48: Capítulo 3: Camada de Transporte

Retransmissatildeo seletiva receptor reconhece individualmente todos os

pacotes recebidos corretamente armazena pacotes no buffer conforme necessaacuterio

para posterior entrega em-ordem agrave camada superior

transmissor apenas re-envia pacotes para os quais um ACK natildeo foi recebido temporizador de remetente para cada pacote sem

ACK janela do transmissatildeo

N nuacutemeros de sequecircncia consecutivos outra vez limita nuacutemeros de sequecircncia de pacotes

enviados mas ainda natildeo reconhecidos

3 Camada de Transporte 48

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 49: Capítulo 3: Camada de Transporte

Retransmissatildeo seletiva janelas do transmissor e do receptor

reconhecido

3 Camada de Transporte 49

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 50: Capítulo 3: Camada de Transporte

Retransmissatildeo seletivadados de cima se proacutex no de seq (n) disponiacutevel estaacute na janela envia o

pacote e liga temporizador(n)estouro do temporizador(n) reenvia pacote n reinicia temporizador(n)ACK(n) em [sendbasesendbase+N] marca pacote n ldquorecebidordquo se n for menor pacote natildeo reconhecido avanccedila base da

janela ao proacutex no de seq natildeo reconhecido

pacote n em [rcvbase rcvbase+N-1]

envia ACK(n) fora de ordem armazena em ordem entrega (tb

entrega pacotes armazenados em ordem) avanccedila janela p proacutexima pacote ainda natildeo recebido

pacote n em [rcvbase-Nrcvbase-1]

ACK(n)senatildeo ignora

receptortransmissor

3 Camada de Transporte 50

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 51: Capítulo 3: Camada de Transporte

Retransmissatildeo seletiva em accedilatildeo

3 Camada de Transporte 51

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 52: Capítulo 3: Camada de Transporte

Retransmissatildeo seletiva dilemaExemplo nos de seq 0 1 2 3 tam de janela =3

receptor natildeo vecirc diferenccedila entre os dois cenaacuterios

incorretamente passa dados duplicados como novos em (a)

P qual a relaccedilatildeo entre tamanho de no de seq e tamanho de janela

3 Camada de Transporte 52

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 53: Capítulo 3: Camada de Transporte

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 53

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 54: Capítulo 3: Camada de Transporte

TCP Visatildeo geral RFCs 793 1122 1323 2018 2581

transmissatildeo full duplex fluxo de dados bi-direcional

na mesma conexatildeo MSS tamanho maacuteximo de

segmento orientado a conexatildeo

handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados

fluxo controlado receptor natildeo seraacute afogado

pelo transmissor

ponto a ponto 1 transmissor 1 receptor

fluxo de bytes ordenados confiaacutevel

natildeo estruturado em msgs com paralelismo (pipelined)

tam da janela ajustado por controle de fluxo e congestionamento do TCP

buffers de transmissatildeo e recepccedilatildeo

3 Camada de Transporte 54

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 55: Capítulo 3: Camada de Transporte

Estrutura do segmento TCPURG dados urgentes

(pouco usado)

ACK campo de ACKeacute vaacutelido

PSH produz envio dedados (pouco usado)

RST SYN FINestabelec de conexatildeo

(comandos de criaccedilatildeo e teacutermino)

Internetchecksum

(como no UDP)

nuacutemero de bytes receptor estaacutepronto para aceitar

contagem porbytes de dados(natildeo segmentos)

3 Camada de Transporte 55

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 56: Capítulo 3: Camada de Transporte

TCP nos de seq e ACKsNos de seq

ldquonuacutemerordquodentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs no de seq do proacutex

byte esperado do outro lado

ACK cumulativoP como receptor trata

segmentos fora da ordem R espec do TCP

omissa - deixado ao implementador

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento que chega ao ldquotransmissorrdquo

A

sent ACKed

sent not-yet ACKed(ldquoin-flightrdquo)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port dest port

sequence numberacknowledgement number

checksum

rwndurg pointer

segmento de saiacuteda do ldquotransmissorrdquo

3 Camada de Transporte 56

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 57: Capítulo 3: Camada de Transporte

TCP nos de seq e ACKs

cenaacuterio telnet simples

3 Camada de Transporte 57

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 58: Capítulo 3: Camada de Transporte

TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e TemporizaccedilatildeoP como escolher

valor do temporizador TCP

maior que o RTT note RTT varia

muito curto temporizaccedilatildeo prematura retransmissotildees

desnecessaacuterias muito longo reaccedilatildeo

demorada agrave perda de segmentos

P como estimar RTT SampleRTT tempo medido

entre a transmissatildeo do segmento e o recebimento do ACK correspondente ignora retransmissotildees

SampleRTT varia de forma raacutepida eacute desejaacutevel um ldquoamortecedorrdquo para a estimativa do RTT usa vaacuterias mediccedilotildees

recentes natildeo apenas o uacuteltimo SampleRTT obtido

3 Camada de Transporte 58

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 59: Capítulo 3: Camada de Transporte

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEstimatedRTT = (1-a) EstimatedRTT + aSampleRTT

meacutedia moacutevel exponencialmente ponderada influecircncia de cada amostra diminui

exponencialmente com o tempo valor tiacutepico de a = 0125

3 Camada de Transporte 59

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 60: Capítulo 3: Camada de Transporte

Exemplo de estimativa do RTT

3 Camada de Transporte 60

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 61: Capítulo 3: Camada de Transporte

TCP Tempo de Resposta (RTT) e TemporizaccedilatildeoEscolhendo o intervalo de temporizaccedilatildeo EstimatedRTT mais uma ldquomargem de seguranccedilardquo

grandes variaccedilotildees no EstimatedRTT -gt maior margem de seguranccedila

primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT

Entatildeo ajusta o temporizador paraTimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-b) DevRTT + b|SampleRTT - EstimatedRTT|

(valor tiacutepico de b = 025)

3 Camada de Transporte 61

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 62: Capítulo 3: Camada de Transporte

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 62

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 63: Capítulo 3: Camada de Transporte

Transferecircncia de dados confiaacutevel do TCP O TCP cria um serviccedilo rdt sobre o serviccedilo natildeo

confiaacutevel do IP Segmentos transmitidos em ldquoparalelordquo

(pipelined) Acks cumulativos O TCP usa um uacutenico temporizador para

retransmissotildees

As retransmissotildees satildeo disparadas por estouros de temporizaccedilatildeo acks duplicados

Considere inicialmente um transmissor TCP simplificado ignora acks duplicados ignora controles de fluxo e de congestionamento

3 Camada de Transporte 63

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 64: Capítulo 3: Camada de Transporte

Eventos do transmissor TCPDados recebidos da aplicaccedilatildeo Cria segmento com no de sequecircncia (nseq) nseq eacute o nuacutemero de sequecircncia do primeiro byte de

dados do segmento Liga o temporizador se jaacute natildeo estiver ligado

(temporizaccedilatildeo do segmento mais antigo ainda natildeo reconhecido)

Valor do temporizador calculado anteriormente

Estouro do temporizador Retransmite o segmento que causou o estouro do

temporizador Reinicia o temporizadorRecepccedilatildeo de Ack Se reconhecer segmentos ainda natildeo reconhecidos

atualizar informaccedilatildeo sobre o que foi reconhecido religa o temporizador se ainda houver segmentos

pendentes (natildeo reconhecidos)

3 Camada de Transporte 64

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 65: Capítulo 3: Camada de Transporte

Transmis-sorTCP (simplificado)

NextSeqNum = nuacutemero de sequumlecircncia inicial SendBase = nuacutemero de sequumlecircncia inicial

repita (sempre) switch(event)

event dados recebidos da aplicaccedilatildeo acima cria segmento TCP com nuacutemero de sequumlecircncia NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados)

event estouro do temporizador retransmite segmento ainda natildeo reconhecido com o menor nuacutemero de sequumlecircncia reinicia o temporizador

event ACK recebido com valor de campo ACK de y se (y gt SendBase) ACK cumulativo de todos dados ateacute y SendBase = y se (houver segmentos ainda natildeo reconhecidos) liga o temporizador senatildeo desliga o temporizador fim do repita sempre

Comentaacuteriobull SendBase-1

uacuteltimo byte reconhecido cumulativamente

Exemplobull SendBase-1 =

71 y= 73 portanto o receptor quer receber 73+

bull y gt SendBase portanto novos dados foram reconhecidos

3 Camada de Transporte 65

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 66: Capítulo 3: Camada de Transporte

TCP cenaacuterios de retransmissatildeo

Cenaacuterio com perdado ACK

Temporizaccedilatildeo prematuraACKs cumulativos

Religatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

Religatemporizaccedilatildeo

Desligatemporizaccedilatildeo

3 Camada de Transporte 66

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 67: Capítulo 3: Camada de Transporte

TCP cenaacuterios de retransmissatildeo (mais)

Cenaacuterio de ACK cumulativo

Desligatemporizaccedilatildeo

3 Camada de Transporte 67

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 68: Capítulo 3: Camada de Transporte

TCP geraccedilatildeo de ACKs [RFCs 1122 2581]

Evento no Receptor

chegada de segmento em ordemsem lacunasanteriores jaacute reconhecidos

chegada de segmento em ordemsem lacunasum ACK retardado pendente

chegada de segmento fora de ordem com no de seq maiorque esperado -gt lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Accedilatildeo do Receptor TCP

ACK retardado Espera ateacute 500mspelo proacutex segmento Se natildeo chegarsegmento envia ACK

envia imediatamente um uacutenicoACK cumulativo

envia ACK duplicado indicando no de seqdo proacuteximo byte esperado

ACK imediato se segmento comeccedila no iniacutecio da lacuna

3 Camada de Transporte 68

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 69: Capítulo 3: Camada de Transporte

Retransmissatildeo raacutepida O intervalo do temporizador eacute frequentemente bastante

longo longo atraso antes de retransmitir um pacote perdido

Detecta segmentos perdidos atraveacutes de ACKs duplicados O transmissor normalmente envia diversos segmentos Se um segmento se perder provavelmente haveraacute muitos

ACKs duplicados

Se o transmissor receber 3 ACKs duplicados para os mesmos dados ele supotildee que o segmento apoacutes os dados reconhecidos se perdeu Retransmissatildeo raacutepida

retransmite o segmento antes que estoure o temporizador

3 Camada de Transporte 69

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 70: Capítulo 3: Camada de Transporte

Retransmissatildeo de um segmento apoacutes trecircs ACKs duplicados

X

Host BHost A

Seq=92 8 bytes of data

ACK=100

ACK=100

ACK=100

ACK=100

Seq=100 20 bytes of data

Seq=100 20 bytes of data

timeo

ut

3 Camada de Transporte 70

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 71: Capítulo 3: Camada de Transporte

event recebido ACK com valor do campo ACK de y if (y gt SendBase) SendBase = y if (houver segmentos ainda natildeo reconhecidos) liga temporizador

else desliga temporizador else incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) retransmita segmento com nuacutemero de sequumlecircncia y

Algoritmo de retransmissatildeo raacutepida

um ACK duplicado para umsegmento jaacute reconhecido Retransmissatildeo raacutepida

3 Camada de Transporte 71

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 72: Capítulo 3: Camada de Transporte

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 72

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 73: Capítulo 3: Camada de Transporte

Controle de Fluxo do TCP

o receptor controla o transmissor de modo que este natildeo inunde o buffer do receptor transmitindo muito e rapidamente

Controle de fluxo

processode aplicaccedilatildeo

Buffers de recepccedilatildeo do socket TCP

TCPcode

IPcode

aplicaccedilatildeoSO

pilha de protocolos no receptor

a aplicaccedilatildeo pode remover dados dos buffers do socket

TCP hellip

hellip mais devagar do que o receptor

TCP estaacute entregando

(transmissor estaacute enviando)

do transmissor

3 Camada de Transporte 73

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 74: Capítulo 3: Camada de Transporte

Controle de Fluxo do TCP como funciona

O receptor ldquoanunciardquo o espaccedilo livre do buffer incluindo o valor da rwnd nos cabeccedilalhos TCP dos segmentos que saem do receptor para o transmissor

Tamanho do RcvBuffer eacute configurado atraveacutes das opccedilotildees do socket (o valor default eacute de 4096 bytes)

muitos sistemas operacionais ajustam RcvBuffer automaticamente

O transmissor limita a quantidade os dados natildeo reconhecidos ao tamanho do rwnd recebido

Garante que o buffer do receptor natildeo transbordaraacute

dados armazenados

espaccedilo livrerwnd

RcvBuffer

carga dos segmentos TCP

para processo de aplicaccedilatildeo

armazenamento no lado do receptor

3 Camada de Transporte 74

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 75: Capítulo 3: Camada de Transporte

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP estrutura do segmento transferecircncia confiaacutevel de dados controle de fluxo gerenciamento da conexatildeo

36 Princiacutepios de controle de congestionamento

37 Controle de congestionamento no TCP

3 Camada de Transporte 75

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 76: Capítulo 3: Camada de Transporte

TCP Gerenciamento de Conexotildeesantes de trocar dados transmissor e receptor TCP

dialogam concordam em estabelecer uma conexatildeo (cada um

sabendo que o outro quer estabelecer a conexatildeo) concordam com os paracircmetros da conexatildeo

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

estado conexatildeo ESTABvariaacuteveis conexatildeoNoseq cliente-p-servidor servidor-p-cliente

tamanho rcvBuffer no servidorcliente

aplicaccedilatildeo

network

Socket clientSocket = newSocket(hostnameport

number)

Socket connectionSocket = welcomeSocketaccept()

3 Camada de Transporte 76

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 77: Capítulo 3: Camada de Transporte

Concordando em estabelecer uma conexatildeo

P a apresentaccedilatildeo em duas vias sempre funciona em redes

atrasos variaacuteveis mensagens retransmitidas

(ex req_conn(x)) devido agrave perda de mensagem

reordenaccedilatildeo de mensagens

natildeo consegue ver o outro lado

Apresentaccedilatildeo de duas vias(2-way handshake)

Letrsquos talkOK ESTAB

ESTAB

choose x req_conn(x)ESTAB

ESTABacc_conn(x)

3 Camada de Transporte 77

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 78: Capítulo 3: Camada de Transporte

Concordando em estabelecer uma conexatildeo

cenaacuterios de falha da apresentaccedilatildeo de duas vias

retransmite

req_conn(x)

ESTAB

req_conn(x)

conexatildeo aberta pela metade(sem cliente)

cliente termina

servidoresquece x

teacutermino daconexatildeo x

retransmite

req_conn(x)

ESTAB

req_conn(x)

data(x+1)

retransmite

dados(x+1)

aceitadados(x+1)

escolhe x req_conn(x)ESTAB

ESTAB

acc_conn(x)

cliente termina

ESTAB

escolhe x req_conn(x)ESTAB

acc_conn(x)

data(x+1) aceitadados(x+1)

teacutermino daconexatildeo x servidor

esquece x

3 Camada de Transporte 78

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 79: Capítulo 3: Camada de Transporte

Apresentaccedilatildeo de trecircs vias do TCP

SYNbit=1 Seq=x

choose init seq num xsend TCP SYN msg

ESTAB

SYNbit=1 Seq=yACKbit=1 ACKnum=x+1

choose init seq num ysend TCP SYNACKmsg acking SYN

ACKbit=1 ACKnum=y+1

received SYNACK(x) indicates server is livesend ACK for SYNACK

this segment may contain client-to-server data received ACK(y)

indicates client is live

SYNSENT

ESTAB

SYN RCVD

estado do cliente

LISTENestado do servidor

LISTEN

3 Camada de Transporte 79

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 80: Capítulo 3: Camada de Transporte

closed

L

listen

SYNrcvd

SYNsent

ESTAB

Socket clientSocket = newSocket(hostnameport

number)

SYN(seq=x)

Socket connectionSocket = welcomeSocketaccept()

SYN(x)SYNACK(seq=yACKnum=x+1)

create new socket for communication back to client

SYNACK(seq=yACKnum=x+1)ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Apresentaccedilatildeo de trecircs vias do TCP

3 Camada de Transporte 80

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 81: Capítulo 3: Camada de Transporte

TCP Encerrando uma conexatildeo seja o cliente que o servidor fecham

cada um o seu lado da conexatildeo enviam segmento TCP com bit FIN = 1

respondem ao FIN recebido com um ACK ao receber um FIN ACK pode ser combinado

com o proacuteprio FIN lida com trocas de FIN simultacircneos

3 Camada de Transporte 81

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 82: Capítulo 3: Camada de Transporte

TCP Encerrando uma conexatildeo

FIN_WAIT_2

CLOSE_WAIT

FINbit=1 seq=y

ACKbit=1 ACKnum=y+1

ACKbit=1 ACKnum=x+1 espera o teacutermino

pelo servidorainda pode enviar dados

natildeo pode maisenviar dados

LAST_ACK

CLOSED

TIMED_WAIT

espera temporizadapor 2tempo maacuteximo de vida do segmento

CLOSED

FIN_WAIT_1 FINbit=1 seq=xnatildeo pode mais enviar mas

pode receber dados

clientSocketclose()

estado do cliente estado do servidor

ESTABESTAB

3 Camada de Transporte 82

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 83: Capítulo 3: Camada de Transporte

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 83

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 84: Capítulo 3: Camada de Transporte

Princiacutepios de Controle de CongestionamentoCongestionamento informalmente ldquomuitas fontes enviando dados

acima da capacidade da rede de trataacute-losrdquo diferente de controle de fluxo Sintomas

perda de pacotes (saturaccedilatildeo de buffers nos roteadores)

longos atrasos (enfileiramento nos buffers dos roteadores)

um dos 10 problemas mais importantes em redes

3 Camada de Transporte 84

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 85: Capítulo 3: Camada de Transporte

Causascustos de congestionamento cenaacuterio 1

dois remetentes dois receptores

um roteador buffers infinitos

sem retransmissatildeo

capacidade do link de saiacuteda R

Vazatildeo maacutexima por conexatildeo R2

Grandes atrasos qdo congestionada3 Camada de Transporte 85

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 86: Capítulo 3: Camada de Transporte

Causascustos de congest cenaacuterio 2 Um roteador buffers finitos retransmissatildeo pelo remetente de pacote perdido

entrada camada apl = saiacuteda camada apl in = out entrada camada transp inclui retransmissotildees rsquoin ge out

Buffers de enlace de saiacuteda finitos compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

3 Camada de Transporte 86

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 87: Capítulo 3: Camada de Transporte

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo conhecimento perfeito transmissor envia apenas

quando houver buffer disponiacutevel no roteador

Buffers de enlace de saiacuteda finitos

compartilhados

Hospedeiro A in dados originais out

in dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro C

Hospedeiro D

R2

R2

out

in

coacutepia

espaccedilo livre em buffer

3 Camada de Transporte 87

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 88: Capítulo 3: Camada de Transporte

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

coacutepia

sem espaccedilo em buffer

3 Camada de Transporte 88

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 89: Capítulo 3: Camada de Transporte

Causascustos de congest cenaacuterio 2Idealizaccedilatildeo perda conhecida pacotes podem ser perdidos descartados no roteador devido a buffers cheios transmissor apenas

retransmite se o pacote sabidamente se perdeu

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees mas assintoticamente a goodput ainda seria R2 (por que)

3 Camada de Transporte 89

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 90: Capítulo 3: Camada de Transporte

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

A

in dados originais

outin dados originais mais dados retransmitidos

Hospedeiro B

Hospedeiro D

espaccedilo livre em buffer

timeout

R2

R2in

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

3 Camada de Transporte 90

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 91: Capítulo 3: Camada de Transporte

Causascustos de congest cenaacuterio 2Realidade duplicatas pacotes podem ser perdidos

descartados no roteador devido a buffers cheios

retransmissatildeo prematura envio de duas coacutepias ambas entregues

R2

R2

out

ao transmitir a R2 alguns pacotes satildeo retransmissotildees incluindo duplicatas que satildeo entregues

ldquocustosrdquo do congestionamentobull mais trabalho (retransmissotildees) para uma dada ldquogoodputrdquobull Retransmissotildees desnecessaacuterias link transporta muacuteltiplas

coacutepias do pacotebull diminuindo a ldquogoodputrdquo

in

3 Camada de Transporte 91

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 92: Capítulo 3: Camada de Transporte

Causascustos de congestionamento cenaacuterio 3 quatro remetentes caminhos com

muacuteltiplos enlaces temporizaccedilatildeo

retransmissatildeo

P o que acontece agrave medida que in e rsquoin crescem

R agrave medida que rsquoin vermelho cresce todos os pactes azuis que chegam agrave fila superior satildeo descartados vazatildeo azul -gt 0

Buffers de enlace de saiacuteda finitos compartilhados

in dados originais out

in dados originais mais dados retransmitidos

3 Camada de Transporte 92

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 93: Capítulo 3: Camada de Transporte

Causascustos de congestionamento cenaacuterio 3

Outro ldquocustordquo de congestionamento quando pacote eacute descartado qq capacidade de

transmissatildeo jaacute usada (antes do descarte) para esse pacote foi desperdiccedilada

R2

3 Camada de Transporte 93

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 94: Capítulo 3: Camada de Transporte

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim

natildeo usa realimentaccedilatildeo expliacutecita da rede

congestionamento eacute inferido a partir das perdas e dos atrasos observados nos sistemas finais

abordagem usada pelo TCP

Controle de congestionamento assistido pela rede

roteadores enviam informaccedilotildees para os sistemas finais bit indicando

congestionamento (SNA DECbit TCPIP ECN ATM)

taxa expliacutecita para envio pelo transmissor

Duas abordagens gerais para controle de congestionamento

3 Camada de Transporte 94

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 95: Capítulo 3: Camada de Transporte

Estudo de caso controle de congestionamento do serviccedilo ATM ABRABR (available bit rate) ldquoserviccedilo elaacutesticordquo se caminho do transmissor

estaacute pouco usado transmissor pode usar

banda disponiacutevel se caminho do transmissor

estiver congestionado transmissor limitado agrave

taxa miacutenima garantida

ceacutelulas RM (resource management)

enviadas pelo transmissor entremeadas com ceacutelulas de dados

bits na ceacutelula RM iniciados por comutadores (ldquoassistido pela rederdquo) bit NI natildeo aumente a taxa

(congestionamento moderado)

bit CI indicaccedilatildeo de congestionamento

ceacutelulas RM devolvidas ao transmissor pelo receptor sem alteraccedilatildeo dos bits

3 Camada de Transporte 95

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 96: Capítulo 3: Camada de Transporte

Estudo de caso controle de congestionamento do serviccedilo ATM ABR

Campo ER (explicit rate) de 2 bytes nas ceacutelulas RM comutador congestionado pode reduzir valor de ER nas ceacutelulas taxa do transmissor assim ajustada p menor valor possiacutevel

entre os comutadores do caminho bit EFCI em ceacutelulas de dados ligado pelos comutadores

congestionados se EFCI ligado em ceacutelulas de dados que precedem a ceacutelula RM

receptor liga bit CI na ceacutelula RM devolvida3 Camada de Transporte 96

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 97: Capítulo 3: Camada de Transporte

Conteuacutedo do Capiacutetulo 3 31 Introduccedilatildeo e serviccedilos de camada de

transporte 32 Multiplexaccedilatildeo e demultiplexaccedilatildeo 33 Transporte natildeo orientado para conexatildeo

UDP 34 Princiacutepios da transferecircncia confiaacutevel de

dados

35 Transporte orientado para conexatildeo TCP 36 Princiacutepios de controle de

congestionamento 37 Controle de congestionamento no TCP

3 Camada de Transporte 97

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 98: Capítulo 3: Camada de Transporte

Controle de Congestionamento do TCP aumento aditivo diminuiccedilatildeo multiplicativa Abordagem aumentar a taxa de transmissatildeo

(tamanho da janela) testando a largura de banda utilizaacutevel ateacute que ocorra uma perda aumento aditivo incrementa cwnd de 1 MSS a cada

RTT ateacute detectar uma perda diminuiccedilatildeo multiplicativa corta cwnd pela metade

apoacutes evento de perda

Comportamento de dente de serra testando a largura

de banda

98

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 99: Capítulo 3: Camada de Transporte

Controle de Congestionamento do TCP detalhes

transmissor limita a transmissatildeo

LastByteSent-LastByteAcked cwnd Aproximadamente

cwnd eacute dinacircmica em funccedilatildeo do congestionamento detectado na rede

Como o transmissor detecta o congestionamento

evento de perda = estouro do temporizador ou 3 acks duplicados

transmissor TCP reduz a taxa (cwnd) apoacutes evento de perda

trecircs mecanismos AIMD partida lenta conservador apoacutes

eventos de estouro de temporizaccedilatildeo (prevenccedilatildeo de congestionamento)

taxa = cwnd RTT

Bytesseg

3 Camada de Transporte 99

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 100: Capítulo 3: Camada de Transporte

No iniacutecio da conexatildeo aumenta a taxa exponencialmente ateacute o primeiro evento de perda inicialmente cwnd = 1

MSS duplica cwnd a cada RTT atraveacutes do incremento

da cwnd para cada ACK recebido

Resumo taxa inicial eacute baixa mas cresce rapidamente de forma exponencial

TCP Partida lentaA

um segmento

RTT

B

tempo

dois segmentos

quatro segmentos

3 Camada de Transporte 100

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 101: Capítulo 3: Camada de Transporte

TCP detectando reagindo a perdas perda indicada pelo estouro de temporizador

cwnd eacute reduzida a 1 MSS janela cresce exponencialmente (como na

partida lenta) ateacute um limiar depois cresce linearmente

perda indicada por ACKs duplicados TCP RENO ACKs duplicados indica que a rede eacute capaz de

entregar alguns segmentos corta cwnd pela metade depois cresce

linearmente O TCP Tahoe sempre reduz a cwnd para 1 (seja

por estouro de temporizador que ACKS duplicados) 3 Camada de Transporte 101

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 102: Capítulo 3: Camada de Transporte

TCP mudando da partida lenta para a CAP Quando o

crescimento exponencial deve mudar para linear

R Quando cwnd atingir 12 do seu valor antes da detecccedilatildeo de perda

Implementaccedilatildeo Limiar (Threshold) variaacutevel

(ssthresh) Com uma perda o limiar

(ssthresh) eacute ajustado para 12 da cwnd imediatamente antes do evento de perda

3 Camada de Transporte 102

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 103: Capítulo 3: Camada de Transporte

Controle de congestionamento do transmissor TCP

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

Lcwnd gt ssthresh prevenccedilatildeo

decongest

cwnd = cwnd + MSS (MSScwnd)dupACKcount = 0

transmite novos segmentos como permitido

novo ACK

dupACKcount++ACK duplicado

recuperaccedilatildeoraacutepida

cwnd = cwnd + MSStransmite novos segmentos como permitido

ACK duplicado

ssthresh= cwnd2cwnd = ssthresh + 3

retransmite os segmentos que faltam

dupACKcount == 3

timeoutssthresh = cwnd2cwnd = 1 dupACKcount = 0retransmite os segmentos que faltam

ssthresh= cwnd2cwnd = ssthresh + 3retransmite os segmentos que faltam

dupACKcount == 3cwnd = ssthreshdupACKcount = 0

Novo ACK

partidalenta

timeoutssthresh = cwnd2

cwnd = 1 MSSdupACKcount = 0

retransmite os segmentos que faltam

cwnd = cwnd+MSSdupACKcount = 0transmite novos segmentos como permitido

novo ACKdupACKcount++ACK duplicado

Lcwnd = 1 MSS

ssthresh = 64 KBdupACKcount = 0

NovoACK

NovoACK

NovoACK

3 Camada de Transporte 103

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 104: Capítulo 3: Camada de Transporte

Vazatildeo (throughput) do TCP Qual eacute a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da

janela e do RTT Ignore a partida lenta assuma que sempre haja dados a

serem transmitidos Seja W o tamanho da janela (medida em bytes) quando

ocorre uma perda Tamanho meacutedio da janela eacute frac34 W Vazatildeo meacutedia eacute de frac34 W por RTT

W

W2

3 Camada de Transporte 104

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 105: Capítulo 3: Camada de Transporte

Futuro do TCP Exemplo segmentos de 1500 bytes RTT de

100ms deseja vazatildeo de 10 Gbps Requer janela de W = 83333 segmentos em

tracircnsito Vazatildeo em termos de taxa de perdas (L) [Mathis

1997]

L = 210-10 Taxa de perdas demasiado baixa

Satildeo necessaacuterias novas versotildees do TCP para altas velocidades

LRTTMSS

221TCP do vazatildeo

3 Camada de Transporte 105

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 106: Capítulo 3: Camada de Transporte

Equidade (Fairness) do TCPObjetivo de equumlidade se K sessotildees TCP

compartilham o mesmo enlace de gargalo com largura de banda R cada uma deve obter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteadorcom gargalo de

capacidade RConexatildeo TCP 2

3 Camada de Transporte 106

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 107: Capítulo 3: Camada de Transporte

Por que o TCP eacute justoDuas sessotildees competindo pela banda Aumento aditivo daacute gradiente de 1 enquanto vazatildeo

aumenta Reduccedilatildeo multiplicativa diminui vazatildeo proporcionalmente

R

R

compartilhamento igual da banda

Vazatildeo da conexatildeo 1

Vazatilde

o da

con

exatildeo

2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

evitar congestionamento aumento aditivoperda diminui janela por fator de 2

3 Camada de Transporte 107

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 108: Capítulo 3: Camada de Transporte

Equidade (mais)Equidade e UDP Aplicaccedilotildees multimiacutedia

frequentemente natildeo usam TCP natildeo querem a taxa

estrangulada pelo controle de congestionamento

Preferem usar o UDP Injeta aacuteudioviacutedeo a

taxas constantes toleram perdas de pacotes

Aacuterea de Pesquisa amigaacutevel ao TCP (TCP friendly)

Equidade e conexotildees TCP em paralelo

nada impede que as apls abram conexotildees paralelas entre 2 hosts

Os browsers Web fazem isto Exemplo canal com taxa R

compartilhado por 9 conexotildees novas aplicaccedilotildees pedem 1

TCP obteacutem taxa de R10 novas aplicaccedilotildees pedem 11

TCPs obteacutem taxa R2

3 Camada de Transporte 108

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo
Page 109: Capítulo 3: Camada de Transporte

Capiacutetulo 3 Resumo Princiacutepios por traacutes dos

serviccedilos da camada de transporte multiplexaccedilatildeo

demultiplexaccedilatildeo transferecircncia confiaacutevel de

dados controle de fluxo controle de

congestionamento instanciaccedilatildeo e implementaccedilatildeo

na Internet UDP TCP

Proacuteximo capiacutetulo saiacutemos da ldquobordardquo da

rede (camadas de aplicaccedilatildeo e transporte)

entramos no ldquonuacutecleordquoda rede

3 Camada de Transporte 109

  • Capiacutetulo 3 Camada de Transporte
  • Conteuacutedo do Capiacutetulo 3
  • Serviccedilos e protocolos de transporte
  • Camadas de Transporte x rede
  • Protocolos da camada de transporte Internet
  • Conteuacutedo do Capiacutetulo 3 (2)
  • Multiplexaccedilatildeodemultiplexaccedilatildeo
  • Como funciona a demultiplexaccedilatildeo
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees
  • Demultiplexaccedilatildeo natildeo orientada a conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees
  • Demultiplexaccedilatildeo Orientada a Conexotildees exemplo
  • Demultiplexaccedilatildeo Orientada a Conexotildees Servidor Web com Threads
  • Conteuacutedo do Capiacutetulo 3 (3)
  • UDP User Datagram Protocol [RFC 768]
  • UDP Cabeccedilalho do segmento
  • Soma de Verificaccedilatildeo (checksum) UDP
  • Exemplo do Checksum Internet
  • Conteuacutedo do Capiacutetulo 3 (4)
  • Princiacutepios de Transferecircncia confiaacutevel de dados (rdt)
  • Transferecircncia confiaacutevel o ponto de partida
  • Transferecircncia confiaacutevel o ponto de partida (2)
  • rdt10 transferecircncia confiaacutevel sobre canais confiaacuteveis
  • rdt20 canal com erros de bits
  • rdt20 canal com erros de bits (2)
  • rdt20 especificaccedilatildeo da FSM
  • rdt20 operaccedilatildeo com ausecircncia de erros
  • rdt20 cenaacuterio de erro
  • rdt20 tem uma falha fatal
  • rdt21 transmissor trata ACKNAKs corrompidos
  • rdt21 receptor trata ACKNAKs corrompidos
  • rdt21 discussatildeo
  • rdt22 um protocolo sem NAKs
  • rdt22 fragmentos do transmissor e receptor
  • rdt30 canais com erros e perdas
  • Transmissor rdt30
  • rdt30 em accedilatildeo
  • rdt30 em accedilatildeo (2)
  • Desempenho do rdt30
  • rdt30 operaccedilatildeo pare e espere
  • Protocolos com paralelismo (pipelining)
  • Paralelismo aumento da utilizaccedilatildeo
  • Protocolos com Paralelismo
  • Go-back-N (GBN)
  • GBN FSM estendida para o transmissor
  • GBN FSM estendida para o receptor
  • Slide 47
  • Retransmissatildeo seletiva
  • Retransmissatildeo seletiva janelas do transmissor e do receptor
  • Retransmissatildeo seletiva (2)
  • Retransmissatildeo seletiva em accedilatildeo
  • Retransmissatildeo seletiva dilema
  • Conteuacutedo do Capiacutetulo 3 (5)
  • TCP Visatildeo geral RFCs 793 1122 1323 2018 2581
  • Estrutura do segmento TCP
  • TCP nos de seq e ACKs
  • TCP nos de seq e ACKs (2)
  • TCP tempo de viagem de ida e volta (RTT ndash Round Trip Time) e T
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo
  • Exemplo de estimativa do RTT
  • TCP Tempo de Resposta (RTT) e Temporizaccedilatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (6)
  • Transferecircncia de dados confiaacutevel do TCP
  • Eventos do transmissor TCP
  • Transmis-sorTCP (simplificado)
  • TCP cenaacuterios de retransmissatildeo
  • TCP cenaacuterios de retransmissatildeo (mais)
  • TCP geraccedilatildeo de ACKs [RFCs 1122 2581]
  • Retransmissatildeo raacutepida
  • Slide 70
  • Algoritmo de retransmissatildeo raacutepida
  • Conteuacutedo do Capiacutetulo 3 (7)
  • Controle de Fluxo do TCP
  • Controle de Fluxo do TCP como funciona
  • Conteuacutedo do Capiacutetulo 3 (8)
  • TCP Gerenciamento de Conexotildees
  • Concordando em estabelecer uma conexatildeo
  • Concordando em estabelecer uma conexatildeo (2)
  • Apresentaccedilatildeo de trecircs vias do TCP
  • Slide 80
  • TCP Encerrando uma conexatildeo
  • TCP Encerrando uma conexatildeo (2)
  • Conteuacutedo do Capiacutetulo 3 (9)
  • Princiacutepios de Controle de Congestionamento
  • Causascustos de congestionamento cenaacuterio 1
  • Causascustos de congest cenaacuterio 2
  • Causascustos de congest cenaacuterio 2 (2)
  • Causascustos de congest cenaacuterio 2 (3)
  • Causascustos de congest cenaacuterio 2 (4)
  • Causascustos de congest cenaacuterio 2 (5)
  • Causascustos de congest cenaacuterio 2 (6)
  • Causascustos de congestionamento cenaacuterio 3
  • Causascustos de congestionamento cenaacuterio 3 (2)
  • Abordagens de controle de congestionamento
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR
  • Estudo de caso controle de congestionamento do serviccedilo ATM ABR (2)
  • Conteuacutedo do Capiacutetulo 3 (10)
  • Controle de Congestionamento do TCP aumento aditivo diminuiccedilatilde
  • Controle de Congestionamento do TCP detalhes
  • TCP Partida lenta
  • TCP detectando reagindo a perdas
  • TCP mudando da partida lenta para a CA
  • Controle de congestionamento do transmissor TCP
  • Vazatildeo (throughput) do TCP
  • Futuro do TCP
  • Equidade (Fairness) do TCP
  • Por que o TCP eacute justo
  • Equidade (mais)
  • Capiacutetulo 3 Resumo