3: camada de transporte1 metas do capítulo: compreender os princípios atrás dos serviços da...

45
3: Camada de Transporte 1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência confiável de dados o controle de fluxo o controle de congestionamento implementação na Internet Camada de Transporte

Upload: internet

Post on 17-Apr-2015

103 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 1

Metas do capítulo: • compreender os princípios atrás dos serviços da camada de

transporte:o entrega de segmentoso transferência confiável de dadoso controle de fluxoo controle de congestionamento

• implementação na Internet

Camada de Transporte

Page 2: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 2

Serviços e protocolos de transporte

• provê comunicação lógica entre processos de aplicação executando em hospedeiros diferentes

• protocolos de transporte executam em sistemas terminais

• serviços das camadas de transporte X rede:

• camada de rede : dados transferidos entre sistemas

• camada de transporte: dados transferidos entre processos

o depende de, estende serviços da camada de rede

aplicaçãotransporte

redeenlacefísica

redeenlacefísica

aplicaçãotransporte

redeenlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísica

transporte lógico fim a fim

Page 3: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 3

Protocolos da camada de transporte

Serviços de transporte na Internet:

• entrega confiável, ordenada, ponto a ponto (TCP)

o congestionamentoo controle de fluxoo estabelecimento de conexão

(“setup”)• entrega não confiável,

(“melhor esforço”), não ordenada, ponto a ponto ou multiponto: UDP

• serviços não disponíveis: o tempo realo garantias de bandao multiponto confiável

aplicaçãotransporte

redeenlacefísica

redeenlacefísica

aplicaçãotransporte

redeenlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísica

redeenlacefísica

transporte lógico fim a fim

Page 4: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 4

aplicaçãotransporte

rede

MP2

aplicaçãotransporte

rede

Entrega de segmentos

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

o = TPDU: transport protocol data unit

receptor

HtH n

Serviço: Entrega de segmentos recebidos para os processos da camada de apl corretos

segmento

segmento Maplicaçãotransporte

rede

P1M

M MP3 P4

cabeçalhode segmento

dados da camada de aplicação

Page 5: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 5

Entrega de segmentos

• Baseadas em número de porta e endereço IP do remetente e do receptor

o números de porta do remetente/receptor em cada segmento

o lembrete: número de porta bem conhecido para aplicações específicas

porta remetente porta receptor

32 bits

dados daaplicação

(mensagem)

outros campos do cabeçalho

formato de segmento TCP/UDP

Page 6: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 6

Entrega de segmentos: exemplos

estação A

servidor B

porta orig.: xporta dest: 23

porta orig:23porta dest: x

uso de portas: apl. simples de telnet

cliente WWWestação A

servidor WWW B

Web clienthost C

IP orig: CIP dest: B

porta orig: xporta dest: 80

IP orig : CIP dest: B

porta orig: yporta dest: 80

uso de portas : servidor WWW

IP orig: AIP dest: B

porta orig: xporta dest:

80

Page 7: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 7

UDP: User Datagram Protocol [RFC 768]

• Protocolo de transporte da Internet mínimo, “sem frescura”,

• Serviço “melhor esforço”, segmentos UDP podem ser:

o perdidoso entregues à aplicação

fora de ordem do remesso

• sem conexão:o não há “setup” UDP

entre remetente, receptor

o tratamento independente de cada segmento UDP

Por quê existe um UDP?

• elimina estabelecimento de conexão (o que pode causar retardo)

• simples: não se mantém “estado” da conexão no remetente/receptor

• pequeno cabeçalho de segmento

• sem controle de congestionamento: UDP pode transmitir o mais rápido possível

Page 8: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 8

Mais sobre UDP

• muito utilizado para apls. de meios contínuos (voz, vídeo)

o tolerantes de perdaso sensíveis à taxa de

transmissão

• outros usos de UDP:o DNS (nomes)o SNMP (gerenciamento)

• transferência confiável com UDP?

o é possível incluir confiabilidade na camada de aplicação

o recuperação de erro específica à aplicação!

porta origem porta dest.

32 bits

Dados de aplicação

(mensagem)

Formato do segmento UDP

comprimento checksum

Comprimento embytes do

segmento UDP,incluindo cabeçalho

Page 9: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 9

Checksum UDP

Remetente:• trata conteúdo do

segmento como seqüência de inteiros de 16-bits

• campo checksum zerado

• checksum: soma do conteúdo do segmento

• remetente coloca complemento do valor da soma no campo checksum de UDP

Receptor:• calcula checksum do

segmento recebido• verifica se checksum

computado é tudo 1:o NÃO - erro detectadoo SIM - nenhum erro

detectado. Mas ainda pode ter erros? Veja depois ….

Meta: detectar “erro” (e.g., bits invertidos) no segmento transmitido

Page 10: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 10

Binary Checksum Example001

00100010000 0000 001 0000 0000 00010000 0000 0000 10000 0000 0000 010000 0000 0000 001

0000 1000 1000 10011000 0000 0001 00011001 1111 0001 1111

0010 0111 1011 1001 1

0010 0111 1011 10101101 1000 0100 0101

Carry from 1st column

Carry from 2nd columnCarry from 3rd column

Carry from 4th columnCarry from 5th column

Carry from 13th columnCarry from 12th column

Carry from 16th column

Page 11: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 11

Checksum do UDP

• Pode ser redundante pois muitos protocolos de enlace já o fazem;

• Contudo, Camada de Transporte deve funcionar independente da tecnologia de enlace

• Apesar de detectar erro, UDP nada faz para corrigir (algumas implementações simplesmente descartam o segmento)

Page 12: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 12

Transferência confiável de dados

• importante nas camadas de transporte, enlace• na lista dos 10 tópicos mais importantes em redes!

• características do canal não confiável determinam a complexidade de um protocolo de transferência confiável de dados (rdt)

Page 13: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 13

Transferência confiável de dados:Se o canal sujeito a erros de bits

canal subjacente pode inverter bits no pacoteo lembre-se: checksum UDP pode detectar erros de bits

• a questão: como recuperar dos erros?o reconhecimentos (ACKs): receptor avisa explicitamente ao

remetente que pacote chegou bemo reconhecimentos negativos (NAKs): receptor avisa

explicitamente ao remetente que pacote tinha erroso remetente retransmite pacote ao receber um NAKo cenários humanos usando ACKs, NAKs?

• novos mecanismos:o detecção de erroso realimentação pelo receptor: msgs de controle (ACK,NAK)

receptor->remetente

Page 14: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 14

Transferência confiável de dados:Se canal com erros e perdas

canal subjacente pode perder pacotes (dados ou ACKs)

o checksum, no. de seq., ACKs, retransmissões podem ajudar, mas não serão suficientes

P: como lidar com perdas?

o remetente espera até ter certeza que se perdeu pacote ou ACK, e então retransmite

o eca!: desvantagens?

Abordagem: remetente aguarda um tempo “razoável” pelo ACK

• retransmite e nenhum ACK recebido neste intervalo

• se pacote (ou ACK) apenas atrasado (e não perdido):

o retransmissão será duplicada, mas uso de no. de seq. já cuida disto

o receptor deve especificar no. de seq do pacote sendo reconhecido

• requer temporizador

Page 15: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 15

Desempenho de protocolos pára-espera• Protocolos pára-espera só enviam um pacote após

receber reconhecimento do anterior• desempenho é muito ruim• exemplo: enlace de 1 Gbps, retardo fim a fim de

15 ms, pacote de 1KB:

Ttransmitir=8kb/pacote10**9 b/seg

= 8 microseg

Utilização = U = =8 microseg

30.016 msegfração do tempo

remetente ocupado = 0,00015

o pac. de 1KB a cada 30 mseg -> vazão de 33kB/seg num enlace de 1 Gbps

o protocolo limita uso dos recursos físicos!

Page 16: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 16

Protocolos “dutados” (pipelined)

Dutagem (pipelining): remetente admite múltiplos pacotes “em trânsito”, ainda não reconhecidos

o faixa de números de seqüência deve ser aumentada

o buffers no remetente e/ou no receptor

• Duas formas genéricas de protocolos dutados: volta-N, retransmissão seletiva

Page 17: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 17

Volta-N (Go-Back N)

Remetente:• no. de seq. de k-bits no cabeçalho do pacote• admite “janela” de até N pacotes consecutivos não

reconhecidos

• ACK(n): reconhece todos pacotes, até e inclusive no. de seq n - “ACK cumulativo”

• temporizador para todos pacotes em trânsito• timeout(n): retransmite pacote n e todos os pacotes com no.

de seq maiores na janela

Page 18: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 18

Volta-N: remetente

Page 19: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 19

Volta-N: receptor

receptor simples:• usa apenas ACK: sempre envia ACK para

pacote recebido bem com o maior no. de seq. em-ordem

o pode gerar ACKs duplicadoso só precisa se lembrar do expectedseqnum

• pacote fora de ordem: o descarta (não armazena) -> receptor não usa

buffers!o manda ACK de pacote com maior no. de seq em-

ordem

expectedseqnum=expectedseqnum+1

Page 20: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 20

Volta-Nem açãojanela de 4

Page 21: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 21

Retransmissão seletiva

• receptor reconhece individualmente todos os pacotes recebidos corretamente

o armazena pacotes no buffer, conforme precisa, para posterior entrega em-ordem à camada superior

• remetente apenas re-envia pacotes para os quais ACK não recebido

o temporizador de remetente para cada pacote sem ACK

• janela do remetenteo N nos. de seq consecutivos o outra vez limita nos. de seq de pacotes enviados,

mas ainda não reconhecidos

Page 22: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 22

Retransmissão seletiva:janelas de remetente, receptor

Page 23: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 23

Retransmissão seletiva

dados de cima:• se próx. no. de seq na

janela, envia pacote

timeout(n):• reenvia pacote n,

reiniciar temporizador

ACK(n) em [sendbase,sendbase+N]:

• marca pacote n “recebido”

• se n for menor pacote não reconhecido, avança base da janela ao próx. no. de seq não reconhecido

pacote n em [rcvbase, rcvbase+N-1]

• envia ACK(n)• fora de ordem: bufferiza• em ordem: entrega (tb.

entrega pacotes em ordem no buffer), avança janela p/ próxima pacote ainda não recebido

pacote n em [rcvbase-N,rcvbase-1]

• ACK(n)

senão: • ignora

receptorremetente

Page 24: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 24

Relação no. de seq.e tam. janela

Exemplo: • nos. de seq : 0, 1, 2, 3• tam. de janela =3

• receptor não vê diferença entre os dois cenários!

• incorretamente passa dados duplicados como novos em (a)

Q: qual a relação entre tamanho de no. de seq e tamanho de janela?

R. Tam. Jan. <= ½ no seq.

Page 25: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 25

TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581

• transmissão full duplex:

o fluxo de dados bi-direcional na mesma conexão

o MSS: tamanho máximo de segmento

• orientado a conexão: o handshaking (troca de

msgs de controle) inicia estado de remetente, receptor antes de trocar dados

• fluxo controlado:o receptor não será

afogado

• ponto a ponto:o 1 remetente, 1 receptor

• fluxo de bytes, ordenados, confiável:

o não estruturado em msgs

• dutado:o tam. da janela ajustado por

controle de fluxo e congestionamento do TCP

• buffers de envio e recepção

socketdoor

T C Psend buffer

T C Preceive buffer

socketdoor

segm ent

applicationwrites data

applicationreads data

Page 26: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 26

TCP: estrutura do segmento

no. porta origemno. porta dest

32 bits

dados daaplicação

(tam. variável)

número de seqüêncianúmero de

reconhecimentojanela receptor

ptr dados urg.checksum

FSRPAUtam.cab.

semuso

Opções (tam. variável)

URG: dados urgentes (pouco usado)

ACK: no. ACKválido

PSH: envia dados já(usado no telnet)

RST, SYN, FIN:gestão de conexão

(comandos deestabelecimento,

liberação)

no. bytes rcpt queraceitar

contagem de dadospor bytes (não segmentos!)

checksum Internet

(como UDP)

Page 27: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 27

TCP: nos. de seq. e ACKsNos. de seq.:

o “número”dentro do fluxo de bytes do primeiro byte de dados do segmento

ACKs:o no. de seq do próx.

byte esperado do outro lado

o ACK cumulativoP: como receptor trata

segmentos fora da ordem?

o R: espec do TCP omissa - deixado ao implementador

Estação A Estação B

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

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

Seq=43, ACK=80

Usuáriotecla‘C’

A reconhecechegada

do ‘C’ecoado

B reconhecechegada de

‘C’, ecoa‘C’ de volta

tempocenário simples de telnet

Page 28: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 28

TCP: transferência confiável de dados

remetente simplificado, supondo:

waitfor

event

waitfor

event

event: data received from application above

event: timer timeout for segment with seq # y

event: ACK received,with ACK # y

create, send segment

retransmit segment

ACK processing

•fluxo de dados uni-direcional•sem controle de fluxo, congestionamento

Page 29: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 29

TCPtransfer. confiável de dados

00 sendbase = número de seqüência inicial01 nextseqnum = número de seqüência inicial0203 loop (forever) { 04 switch(event) 05 event: dados recebidos da aplicação acima06 cria segmento TCP com número de seqüência nextseqnum 07 inicia temporizador para segmento nextseqnum 08 passa segmento para IP 09 nextseqnum = nextseqnum + comprimento(dados) 10 event: expirado temporizador de segmento c/ no. de seqüência y 11 retransmite segmento com número de seqüência y 12 calcula novo intervalo de temporização para segmento y 13 reinicia temporizador para número de seqüência y 14 event: ACK recebido, com valor de campo ACK de y 15 se (y > sendbase) { /* ACK cumulativo de todos dados até y */ 16 cancela temporizadores p/ segmentos c/ nos. de seqüência < y 17 sendbase = y 18 } 19 senão { /* é ACK duplicado para segmento já reconhecido */ 20 incrementa número de ACKs duplicados recebidos para y 21 if (número de ACKs duplicados recebidos para y == 3) { 22 /* TCP: retransmissão rápida */ 23 reenvia segmento com número de seqüência y 24 reinicia temporizador para número de seqüência y 25 } 26 } /* fim de loop forever */

RemetenteTCPsimplificado

Page 30: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 30

TCP geração de ACKs [RFCs 1122, 2581]

Evento

chegada de segmento em ordemsem lacunas,anteriores já reconhecidos

chegada de segmento em ordemsem lacunas,um ACK retardado pendente

chegada de segmento fora de ordem, com no. de seq. maiorque esperado -> lacuna

chegada de segmento que preenche a lacuna parcial oucompletamente

Ação do receptor TCP

ACK retardado. Espera até 500msp/ próx. segmento. Se não chegarsegmento, envia ACK

envia imediatamente um únicoACK cumulativo

envia ACK duplicado, indicando no. de seq.do próximo byte esperado

ACK imediato se segmento noinício da lacuna

Page 31: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 31

TCP: cenários de retransmissão

Estação A

Seq=92, 8 bytes de dados

ACK=100

perda

tem

pori

zaçã

o

tempo cenário doACK perdido

Estação B

X

Seq=92, 8 bytes de dados

ACK=100

Host A

Seq=100, 20 bytes de dados

ACK=100

Tem

p.p

/ Seq=

92

temporização prematura,ACKs cumulativos

Host B

Seq=92, 8 bytes de dados

ACK=120

Seq=92, 8 bytes de dados

Tem

p.

p/

Seq=

100

ACK=120

tempo

Page 32: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 32

remetente não esgotaria buffers do receptor por

transmitir muito, ou muito rápidamente

controle de fluxo

TCP: Controle de Fluxo

receptor: explicitamente avisa o remetente da quantidade de espaço livre disponível (muda dinamicamente)

o campo RcvWindow no segmento TCP

remetente: mantém a quantidade de dados transmitidos, porém ainda não reconhecidos, menor que o valor mais recente de RcvWindowbuffering pelo receptor

RcvBuffer = tamanho do Buffer de recepção

RcvWindow = espaço vazio no Buffer

Page 33: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 33

TCP: Tempo de Resposta (RTT) e Temporização

P: como escolher valor do temporizador TCP?

• maior que o RTTo note: RTT pode

variar• muito curto:

temporização prematura

o retransmissões são desnecessárias

• muito longo: reação demorada à perda de segmentos

P: como estimar RTT?• RTTamostra: tempo medido

entre a transmissão do segmento e o recebimento do ACK correspondente

o ignora retransmissões, segmentos com ACKs cumulativos

• RTTamostra vai variar, queremos “amaciador” de RTT estimado

o usa várias medições recentes, não apenas o valor corrente (RTTamostra)

Page 34: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 34

TCP: Tempo de Resposta (RTT) e Temporização

RTT_estimado = (1-x)* RTT_estimado + x*RTT_amostra• média corrente exponencialmente ponderada• influência de cada amostra diminui

exponencialmente com o tempo• valor típico de x: 0.1

x = 1/8

Page 35: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 35

TCP: Tempo de Resposta (RTT) e Temporização

Escolhendo o intervalo de temporização• RTT_estimado mais uma “margem de segurança”• variação grande em RTT_estimado

-> margem de segurança maior

Temporização = RTT_estimado + 4*Desvio

Desvio = (1-x)* Desvio + x*|RTT_amostra - RTT_estimado|

Page 36: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 36

TCP: Gerenciamento de Conexões: Inicialização em 3 vias (3-way acknowledgement)

Lembrete: Remetente, receptor TCP estabelecem “conexão” antes de trocar segmentos de dados

• inicializam variáveis TCP:o nos. de seq.o buffers, info s/ controle

de fluxo (p.ex. RcvWindow)

• cliente: iniciador de conexão • servidor: contactado por

cliente

Passo 1: sistema cliente envia segmento de controle SYN do TCP ao servidor

o especifica no. inicial de seq

Passo 2: sistema servidor recebe SYN, responde com segmento de controle SYNACK

o reconhece SYN recebidoo aloca bufferso especifica no. inicial de seq.

servidor-> receptor

Passo 3: sistema cliente recebe SYNACK, e envia ACK para o servidor (controle SYN desligado pois conexão já foi estabelecida)

Page 37: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 37

TCP: Gerenciamento de ConexõesEncerrando uma conexão

cliente fecha soquete: clientSocket.close();

4 passos:

• Espera temporizada para tratar perdas de mensagens e outras anomalias.

cliente

FIN

servidor

ACK

ACK

FIN

fechar

fechando

fechada

esp

era

te

mpori

zada

fechada

Page 38: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 38

Princípios de Controle de Congestionamento

Congestionamento:• informalmente: “muitas fontes enviando

muitos dados muito rapidamente para a rede poder tratar”

• diferente de controle de fluxo!• manifestações:

o perda de pacotes (esgotamento de buffers em roteadores)

o longos atrasos (enfileiramento nos buffers dos roteadores)

• um dos 10 problemas mais importantes em redes!

Page 39: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 39

Causas/custos de congestionamento:• Mesmo se roteadores com fila infinita:• grandes retardos qdo. congestionada• vazão máxima do enlace alcançável

• Um roteador, buffers finitos• pacotes são descartados qdo fila cheia• há retransmissões desnecessárias pelo remetente de pacote apenas

atrasados• essas retransmissões ajudam a congestionar a rede

Outro “custo” de congestionamento: • quando pacote é descartado, qq. capacidade de transmissão já

usada (antes do descarte) para esse pacote foi desperdiçada!

Page 40: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 40

Abordagens de controle de congestionamento

Controle de congestionamento fim a fim :

• não tem realimentação explícita pela rede

• congestionamento inferido das perdas, retardo observados pelo sistema terminal

• abordagem usada pelo TCP

Controle de congestionamento com apoio da rede:

• roteadores realimentam os sistemas terminais

o bit único indicando congestionamento (SNA, DECbit, ATM)

o taxa explícita p/ envio pelo remetente

Duas abordagens amplas para controle de congestionamento:

Page 41: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 41

TCP: Controle de Congestionamento

• controle fim a fim (sem apoio da rede)• taxa de transmissão limitada pela tamanho da janela de

congestionamento, Congwin:

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

Vazão (throughput) = w * MSS

RTT Bytes/sec

Congwin

Page 42: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 42

TCP: Controle de Congestionamento

• duas “fases”o partida lentao evitar

congestionamento

• variáveis importantes:o Congwino threshold: define

limiar entre fases de partida lenta, controle de congestionamento

• “sondagem” para banda utilizável:

o idealmente: transmitir o mais rápido possível (Congwin o máximo possível) sem perder pacotes

o aumentar Congwin até perder pacotes (congestionamento)

o perdas: diminui Congwin, depois volta a à sondagem (aumento) novamente

Page 43: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 43

TCP: Partida lenta

• aumento exponencial (por RTT) no tamanho da janela (não muito lenta!)

• evento de perda: temporizador

inicializa: Congwin = 1for (cada segmento c/ ACK) Congwin++until (evento de perda OR CongWin > threshold)

Estação A

um segmento

RTT

Estação B

tempo

dois segmentos

quqtro segmentos

Algoritmo Partida Lenta

Page 44: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 44

TCP: Evitar Congestionamento

/* partida lenta acabou */ /* Congwin > threshold */Until (event de perda) { cada w segmentos reconhecidos: Congwin++ }threshold = Congwin/2Congwin = 1faça partida lenta

1

Evitar congestionamento

Page 45: 3: Camada de Transporte1 Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: o entrega de segmentos o transferência

3: Camada de Transporte 45

Justiça do TCP

Meta: se N sessões TCP compartilham o mesmo enlace de gargalo, cada uma deve ganhar 1/N da capacidade do enlace

TCP evitando congestionamento:

• AADM: aumento aditivo, decremento multiplicativo

o aumenta janela em 1 por cada RTT

o diminui janela por fator de 2 num evento de perda

AADM (AIMD)

TCP conexão 1

Roteadorgargalo

capacidade R

TCP conexão 2