38
1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro “Redes de Computadores e a Internet – Uma abordagem top-down”, segunda e terceira edições Alterações nos slides, incluindo sequenciamento, textos, figuras e novos slides, foram realizadas conforme necessidade

1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

Embed Size (px)

Citation preview

Page 1: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

1

Transporte

Referência:

Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro “Redes de Computadores e a Internet – Uma abordagem top-down”, segunda e terceira edições

Alterações nos slides, incluindo sequenciamento, textos, figuras e novos slides, foram realizadas conforme necessidade

Page 2: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

2

Protocolos e Serviços de Transporte

• Fornecem comunicação lógicas entre processos de aplicação em diferentes hosts

• Os protocolos de transporte são executados nos sistemas finais da rede

• serviço de transporte vs serviços de rede :

• camada de rede: transferência de dados entre computadores (end systems)

• camada de transporte: transferência de dados entre processos

– utiliza e aprimora os serviços oferecidos pela camada de rede

aplicaçãotransporteeeredeenlacefísica

aplicaçãotransporte

redeenlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísicarede

enlacefísica

transporte lógico fim-a-fim

Page 3: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

3

Protocolos da Camada de Transporte

Serviços de Transporte da Internet:

• confiável, seqüencial e unicast (TCP)

– congestionamento

– controle de fluxo

– orientado à conexão

• não confiável, não seqüencial, entrega unicast or multicast: UDP

• serviços não disponíveis:

– tempo-real

– garantia de banda

– multicast confiável

application

transporterede

enlacefísica

application

transporterede

enlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísicarede

enlacefísica

transporte lógico fim-a-fim

Page 4: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

4

aplicaçãotransporte

rede

MP2

aplicaçãotransporte

rede

Multiplexação de Aplicações

Segmento - unidade de dados trocada entre entidades da camada de transporte

– TPDU: transport protocol data unit (unidade de dados do protocolo de transporte) receptor

HtHn

Demultiplexação: entrega de segmentos recebidos aos processos de aplicação corretos

segmento

segmento Maplicaçãotransporte

rede

P1M

M MP3 P4

cabeçalho dosegmento

dados da camada de aplicação

Page 5: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

5

Multiplexação de Aplicações

multiplexação/demultiplexação:

• baseada nos número de porta do transmissor, número de porta do receptor e endereços IP

– números de porta origem e destino em cada segmento

– lembre: portas com números bem-conhecidos são usadas para aplicações específicas

reunir dados de múltiplosprocesso de aplicação, juntar cabeçalhos com informações para demultiplexação

porta origem porta destino

32 bits

dados de aplicação(mensagem)

outros campos de cabeçalho

formato do segmento TCP/UDP

Multiplexação:

Page 6: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

6

Multiplexação: exemplos

host A servidor Bporta origem: xporta dest.: 23

porta origem:23port dest.: x

aplicação Telnet

cliente Webhost A

Servidor Web B

cliente Webhost C

IP Origem: CIP Dest: B

porta origem: x

porta dest.: 80

IP Origem: CIP Dest: B

porta origem: y

porta dest.: 80

aplicação: servidor Web

IP Origem: AIP Dest: B

porta origem : x

porta dest.: 80

Page 7: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

7

UDP: User Datagram Protocol [RFC 768]

• protocolo de transporte da Internet “sem gorduras” “sem frescuras”

• serviço “best effort” , segmentos UDP podem ser:

– perdidos

– entregues fora de ordem para a aplicação

• sem conexão:

– não há apresentação entre o UDP transmissor e o receptor

– cada segmento UDP é tratado de forma independente dos outros

Porque existe um UDP?• não há estabelecimento de

conexão (que pode redundar em atrasos)

• simples: não há estado de conexão nem no transmissor, nem no receptor

• cabeçalho de segmento reduzido• não há controle de congestionamento:

UDP pode enviar segmentos tão rápido quanto desejado (e possível)

Page 8: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

8

Mais sobre UDP

• muito usado por aplicações de mutimídia contínua (streaming)

– tolerantes à perda

– sensíveis à taxa

• outros usos do UDP:– DNS

– SNMP

• transferência confiável sobre UDP: acrescentar confiabilidade na camada de aplicação

– recuperação de erro específica de cada aplicação

porta origem porta destino

32 bits

Dados de Aplicação(mensagem)

formato do segmento UDP

tamanho checksumTamanho, em

bytes do segmento UDP, incluíndo

cabeçalho

Page 9: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

9

UDP checksum

Transmissor:• trata o conteúdo do segmento

como seqüencia de inteiros de 16 bits

• checksum: soma (complemento de 1 da soma) do conteúdo do segmento

• transmissor coloca o valor do checksum no campo de checksum do UDP

Receptor:• computa o checksum do segmento

recebido• verifica se o checksum calculado

é igual ao valor do campo checksum:

– NÃO - error detectado

– SIM - não há erros. Mas, talvez haja erros apesar disto!

Objetivo: detectar “erros” (ex.,bits trocados) no segmento transmitido

Page 10: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

10

Princípios de Transferência Confiável de Dados

• Importante nas camadas de aplicação, transporte e enlace

• Caracteristicas dos canais não confiáveis determinarão a complexidade dos protocolos confiáveis de transferência de dados

• Necessário usar ACKs (e também NACKs, mas são desnecessários)

Page 11: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

11

Há um problema fatal!

O que acontece se o ACK é corrompido?

• transmissor não sabe o que aconteceu no receptor!

• não pode apenas retransmitir: possível duplicata

O que fazer?• Transmissor envia ACKs para

reconhecer os ACKs do receptor? O que acontece se estes ACKs se perdem?

• retransmitir os ACKs, mas isto poderia causar a retransmissão de um pacote recebido corretamente!

Tratando duplicatas: • transmissor acrescenta número de

seqüência em cada pacote

• Transmissor reenvia o último pacote se ACK for perdido

• receptor descarta (não passa para a aplicação) pacotes duplicados

Transmissor envia um pacotee então espera pela respostado receptor

stop and wait

Page 12: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

12

Discussão (Stop and Wait)

Transmissor:• adiciona número de

seqüência ao pacote• Dois números (0 e 1) bastam.

Porque?• deve verificar se os ACKs

recebidos estão corrompidos • estado da transmissão deve

“lembrar” se o pacote “corrente” tem número de seqüência 0 ou 1

Receptor:

• deve verificar se o pacote recebido é duplicado– estado indica se o pacote

0 ou 1 é esperado

• nota: receptor pode não saber se seu últino ACK foi recebido pelo transmissor

Page 13: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

13

Protocolos com Paralelismo (pipelining)

Paralelismo: transmissor envia vários pacotes “ao mesmo tempo” (em seqüência), todos esperando para serem reconhecidos – faixa de números de seqüência deve ser aumentada

– armazenamento no transmissor e/ou no receptor

• Duas formas genéricas de protocolos com paralelismo: go-Back-N, retransmissão seletiva

(a) operação do protocolo stop-and-wait (a) operação do protocolo com paralelismo

Page 14: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

14

Go-Back-NTransmissor:• Número de seqüência com k bits no cabeçalho do pacote

• “janela” de até N, pacotes não reconhecidos, consecutivos, são permitidos

• ACK(n): reconhece todos os pacotes até o número de seqüência N (incluindo este limite). “ACK cumulativo”

– pode receber ACKS duplicados (veja receptor)

• temporizador para cada pacote enviado e não confirmado

• timeout(n): retransmite pacote n e todos os pacotes com número de seqüência maior que estejam dentro da janela

Page 15: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

15

GBN em ação

Page 16: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

16

Retransmissão Seletiva

• receptor reconhece individualmente todos os pacotes recebidos corretamente– armazena pacotes, quando necessário, para eventual

entrega em ordem para a camada superior

• transmissor somente reenvia os pacotes para os quais um ACK não foi recebido– transmissor temporiza cada pacote não reconhecido

• janela de transmissão– N números de seqüência consecutivos

– novamente limita a quantidade de pacotes enviados, mas não reconhecidos

Page 17: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

17

Retransmissão seletiva: janelas do transmissor e do receptor

(a) visão dos números de seqüência pelo transmissor

(b) visão dos números de seqüência pelo receptor

Page 18: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

18

Retransmissão seletiva em ação

Page 19: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

19

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581

• dados full-duplex:– transmissão bi-direcional na

mesma conexão

– MSS: maximum segment size

• orientado à conexão: – handshaking (troca de

mensagens de controle) inicia o estado do transmissor e do receptor antes da troca de dados

• controle de fluxo:– transmissor não esgota a

capacidade do receptor

• ponto-a-ponto:– um transmissor, um receptor

• confiável, seqüêncial byte stream:– não há distorção nas mensagens

• pipelined: (transmissão de vários pacotes em confirmação)

– Controle de congestionamento e de fluxo definem tamanho da janela

• buffers de transmissão e de recepção

socket

port

TCP

buffe de txr

TCP

buffer de rx

socket

port

segment

aplicação

envia dados

aplicação

lê dados

Page 20: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

20

Estrutura do Segmento TCP

porta origem porta destino

32 bits

dados de aplicação(tamanho variável)

número de seqüência

número de reconhecimentojanela de recep.

dados urgenteschecksum

FSRPAUtam.

cabec.não

usado

Opções (tamanho variável)

URG: dados urgentes (pouco usado)

ACK: campo de ACKé válido

PSH: produz envio dedados (pouco usado)

RST, SYN, FIN:estabelec. de conexão

(comandos de criação e término)

número de bytes receptor estápronto para aceitar

contagem porbytes de dados(não segmentos!)

Internetchecksum

(como no UDP)

Page 21: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

21

Números de Seqüência e ACKs do TCP

Números de seqüência:

– número do primeiro byte no segmentos de dados

ACKs:

– número do próximo byte esperado do outro lado

– ACK cumulativo: forma como o receptor trata segmentos fora de ordem

– alguns pontos ficam a critério da implementação como fazer

Host A Host B

Seq=42, ACK=79, data = ‘C’

Seq=79, ACK=43, data = ‘C’

Seq=43, ACK=80

Usuáriodigita

‘C’

host confirmarecepção

do ‘C’ ecoado

host confirmarecepção de‘C’, e ecoa o’C’ de volta

tempocenário telnet simples

Page 22: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

22

TCP: Estabelecimento de Conexão

TCP transmissor estabelece conexão com o receptor, antes mesmo de enviar dados: •inicializar variáveis:

– números de seqüência

– buffers, controle de fluxo (ex. RcvWindow)

•cliente: iniciador da conexão

Socket clientSocket = new Socket("hostname","port number");

•servidor: chamado pelo cliente

Socket connectionSocket = welcomeSocket.accept();

Three way handshake:

Passo 1: sistema final cliente envia TCP SYN ao servidor

– especifica número de seqüência inicial

Passo 2: sistema final servidor que recebe o SYN, responde com segmento SYNACK

– reconhece o SYN recebido

– aloca buffers

– especifica o número de seqüência inicial do servidor

Passo 3: o sistema final cliente reconhece o SYNACK

Page 23: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

23

TCP: Término de Conexão

Fechando uma conexão:

cliente fecha o socket: clientSocket.close();

Passo 1: o cliente envia o segmento

TCP FIN ao servidor

Passo 2: servidor recebe FIN, responde com ACK. Fecha a conexão, envia FIN.

Passo 3: cliente recebe FIN, responde com ACK.

– entra “espera temporizada”

– vai responder com ACK a FINs recebidos

Passo 4: servidor, recebe ACK. Conexão fechada.

Page 24: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

24

TCP: Controle de Fluxo

receptor: explicitamente informa o transmissor da área livre no buffer (dinamicamente mudando) – campo RcvWindow

no segmento TCP

transmissor: mantém a quantidade de dados transmitidos mas não reconhecidos menor que o último RcvWindow recebido

transmissor não deve esgotar os

buffers de receção enviando dados rápido demais

controle de fluxo

armazenamento de recepção

RcvBuffer = tamanho do Buffer de recepção do TCP

RcvWindow = total de espaço livre no buffer

Page 25: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

25

TCP Round Trip Time e Temporização

Q: como escolher o valor da temporização do TCP (time-out)?

• maior que o RTT

– nota: RTT varia

• muito curto: temporização prematura

– retransmissões desnecessárias

• muito longo: a reação à perda de segmento fica lenta

Q: Como estimar o RTT?• SampleRTT: tempo medido da

transmissão de um segmento até a respectiva confirmação

– ignora retransmissões e segmentos reconhecidos de forma cumulativa

• SampleRTT varia de forma rápida, é desejável um amortecedor para a estimativa do RTT – usar várias medidas recentes, não

apenas o último SampleRTT obtido

Page 26: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

26

EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT

• Média móvel com peso exponential

• influencia de uma dada amostra decresce de forma exponencial

• valor típico de x: 0.1

Definindo a temporização• EstimtedRTT mais “margem de segurança”

• grandes variações no EstimatedRTT -> maior margem de segurança

Temporização = EstimatedRTT + 4*Desvios

Desvios = (1-x)*Desvio + x*|SampleRTT-EstimatedRTT|

TCP Round Trip Time e Temporização

Page 27: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

27

TCP Round Trip Time e Temporização

Page 28: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

28

Princípios de Controle de Congestionamento

Congestionamento:• informalmente: “muitas fontes enviando dados acima da

capacidade da rede tratá-los”

• diferente de controle de fluxo!

• sintomas:

– perda de pacotes (saturação de buffer nos roteadores)

– atrasos grandes (filas nos buffers dos roteadores)

• um dos 10 problemas mais importantes na Internet!

Page 29: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

29

Quatro transmissores Caminhos com múltiplos

saltos

Temporizações/retransmissões

inP.: o que acontece quando e

aumentam?

in

Causas/custos do congestionamento: cenário 3Causas/custos do congestionamento

Page 30: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

30

TCP: Controle Congestionamento

• controle fim-a-fim (não há assistência da rede)

• taxa de transmissão é limitada pelo tamanho da janela, Congwin, sobre os segmentos:

• w segmentos, cada um com MSS bytes enviados em um RTT:

vazão = w * MSS

RTT Bytes/seg

Congwin

Page 31: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

31

• Duas “fases””– slow start– congestion avoidance

• Variáveis importantes:– Congwin– threshold: define o

limite entre a fase slow start e a fase congestion avoidance

• Realiza um “teste” para reconhecer a taxa possível: – idealmente: transmitir tão

rápido quanto possível (Congwin tão grande quanto possível) sem perdas

– aumentar Congwin até que ocorra perda (congestionamento)

– perda: diminuir Congwin, então ir testando (aumentando) outra vez

TCP: Controle Congestionamento

Page 32: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

32

TCP Slowstart

• aumento exponencial (por RTT) no tamanho da janela (não tão lento!)

• evento de perda : temporização (Tahoe TCP) e/ou 3 ACKs duplicados (Reno TCP)

initializar: Congwin = 1para (cada segmento reconhecido Congwin++até (evento perda OU CongWin > threshold)

algoritmo SlowstartHost A

one segment

RTT

Host B

tempo

two segments

four segments

Page 33: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

33

TCP: Congestion Avoidance

/* acabou slowstart */ /* Congwin > threshold */Até (evento perda) { cada w segmentos “acked”: Congwin++ }threshold = Congwin/2Congwin = 1 (*)realiza slowstart (*)

Congestion avoidance

(*) TCP Reno pula a fase slowstart (recuperaçaõ rápida)após três ACKs duplicados

Page 34: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

34

TCP AIMDRetransmissão Rápida

• Com freqüência, o tempo de expiração é relativamente longo:- Longo atraso antes de reenviar um pacote perdido

• Pode-se detectar segmentos perdidos por meio de ACKs duplicados:- Transmissor freqüentemente envia muitos segmentos ao receptor- Se um segmento é perdido, haverá desordenamento e, portanto, muitos ACKs duplicados.

• ACK duplicado: receptor reenvia ACK do último byte de dados recebido em ordem qdo chega um segmento fora de ordem

• Se o transmissor recebe 3 ACKs para o mesmo dado, ele supõe que o segmento após o dado confirmado foi perdido:

• Retransmissão rápida: perda é decretada e reenvia-se o segmento antes do temporizador expirar

Page 35: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

35

Redução multiplicativa: diminui o CongWin pela metade após o evento de perdaAumento aditivo: aumenta o CongWin com 1 MSS a cada RTT na ausência de eventos de perda: probing

conexão TCP de longa-vida

TCP AIMD AIMD

Page 36: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

36

Objetivo de eqüidade: se K sessões TCP compartilham o mesmo enlace do gargalo com largura de banda R, cada uma deve ter taxa média de R/K

Eqüidade do TCP

Page 37: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

37

Duas sessões competindo pela banda: O aumento aditivo fornece uma inclinação de 1, quando a vazão

aumenta Redução multiplicativa diminui a vazão proporcionalmente

perda: reduz janela por um fator de 2

prevenção de congestionamento: aumento aditivo

Porque o TCP é justo?

Page 38: 1 Transporte Referência: Slides extraídos do material dos professores Jim Kurose e Keith Ross relativos ao livro Redes de Computadores e a Internet – Uma

38

Eqüidade e UDP Aplicações multimedia normalmente não usam TCP

Não querem a taxa estrangulada pelo controle de congestionamento

Em vez disso, usam UDP: Trafega áudio/vídeo a taxas constantes, toleram perda de pacotes

várea de pesquisa: TCP amigável

Eqüidade e conexões TCP paralelas Nada previne as aplicações de abrirem conexões paralelas entre 2 hosts.

Web browsers fazem isso

Exemplo: enlace de taxa R suportando 9 conexões; Novas aplicações pedem 1 TCP, obtém taxa de R/10 Novas aplicações pedem 11 TCPs, obtém R/2!

Eqüidade Eqüidade do TCP