A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

3: Camada de Transporte 3b-1 Conteúdo do Capítulo 3 r 3.1 Serviços da camada de transporte r 3.2 Multiplexação e demultiplexação r 3.3 Transporte não orientado.

Apresentações semelhantes


Apresentação em tema: "3: Camada de Transporte 3b-1 Conteúdo do Capítulo 3 r 3.1 Serviços da camada de transporte r 3.2 Multiplexação e demultiplexação r 3.3 Transporte não orientado."— Transcrição da apresentação:

1 3: Camada de Transporte 3b-1 Conteúdo do Capítulo 3 r 3.1 Serviços da camada de transporte r 3.2 Multiplexação e demultiplexação r 3.3 Transporte não orientado para conexão: UDP r 3.4 Princípios da transferência confiável de dados r 3.5 Transporte orientado para conexão: TCP m estrutura do segmento m transferência confiável m controle de fluxo m gerenciamento de conexões r 3.6 Princípios de controle de congestionamento r 3.7 Controle de congestionamento do TCP

2 3: Camada de Transporte 3b-2 TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 r transmissão full duplex: m fluxo de dados bi-direcional na mesma conexão m MSS: tamanho máximo de segmento r orientado a conexão: m handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados r fluxo controlado: m receptor não será afogado pelo transmissor r ponto a ponto: m 1 transmissor, 1 receptor r fluxo de bytes, ordenados, confiável: m não estruturado em msgs r com paralelismo (pipelined): m tam. da janela ajustado por controle de fluxo e congestionamento do TCP r buffers de transmissão e recepção

3 3: Camada de Transporte 3b-3 Estrutura do segmento TCP URG: dados urgentes (pouco usado) ACK: campo de ACK é válido PSH: produz envio de dados (pouco usado) RST, SYN, FIN: estabelec. de conexão (comandos de criação e término) Internet checksum (como no UDP) número de bytes receptor está pronto para aceitar contagem por bytes de dados (não segmentos!)

4 3: Camada de Transporte 3b-4 TCP: nos. de seq. e ACKs Nos. de seq.: m “número”dentro do fluxo de bytes do primeiro byte de dados do segmento ACKs: m no. de seq do próx. byte esperado do outro lado m ACK cumulativo P: como receptor trata segmentos fora da ordem? m R: espec do TCP omissa - deixado ao implementador

5 3: Camada de Transporte 3b-5 TCP: Tempo de Resposta (RTT – Round Trip Time) e Temporização P: como escolher valor do temporizador TCP? r maior que o RTT m note: RTT varia r muito curto: temporização prematura m retransmissões são desnecessárias r muito longo: reação demorada à perda de segmentos P: como estimar RTT?  SampleRTT : tempo medido entre a transmissão do segmento e o recebimento do ACK correspondente m ignora retransmissões  SampleRTT varia de forma rápida, é desejável um “amortecedor” para a estimativa do RTT  usa várias medições recentes, não apenas o último SampleRTT obtido

6 3: Camada de Transporte 3b-6 TCP: Tempo de Resposta (RTT) e Temporização EstimatedRTT = (1-  )* EstimatedRTT +  *SampleRTT r média móvel exponencialmente ponderada r influência de cada amostra diminui exponencialmente com o tempo  valor típico de  = 0,125

7 3: Camada de Transporte 3b-7 Exemplo de estimativa do RTT:

8 3: Camada de Transporte 3b-8 TCP: Tempo de Resposta (RTT) e Temporização Escolhendo o intervalo de temporização  EstimatedRTT mais uma “margem de segurança”  grandes variações no EstimatedRTT -> maior margem de segurança r primeiro estimar o quanto a SampleRTT se desvia do EstimatedRTT: r Então, ajusta o temporizador para: TimeoutInterval = EstimatedRTT + 4*DevRTT DevRTT = (1-  )* DevRTT +  *|SampleRTT - EstimatedRTT| (valor típico de  = 0,25)

9 3: Camada de Transporte 3b-9 Conteúdo do Capítulo 3 r 3.1 Serviços da camada de transporte r 3.2 Multiplexação e demultiplexação r 3.3 Transporte não orientado para conexão: UDP r 3.4 Princípios da transferência confiável de dados r 3.5 Transporte orientado para conexão: TCP m estrutura do segmento m transferência confiável m controle de fluxo m gerenciamento de conexões r 3.6 Princípios de controle de congestionamento r 3.7 Controle de congestionamento do TCP

10 3: Camada de Transporte 3b-10 Transferência de dados confiável do TCP r O TCP cria um serviço rdt sobre o serviço não confiável do IP r Segmentos transmitidos em “paralelo” (pipelined) r Acks cumulativos r O TCP usa um único temporizador para retransmissões r As retransmissões são disparadas por: m estouros de temporização m acks duplicados r Considere inicialmente um transmissor TCP simplificado: m ignora acks duplicados m ignora controles de fluxo e de congestionamento

11 3: Camada de Transporte 3b-11 Eventos do transmissor TCP Dados recebidos da aplicação: r Cria segmento com no. de seqüência (nseq) r nseq é o número de seqüência do primeiro byte de dados do segmento r Liga o temporizador se já não estiver ligado (temporização do segmento mais antigo ainda não reconhecido) r Valor do temporizador: calculado anteriormente Estouro do temporizador: r Retransmite o segmento que causou o estouro do temporizador r Reinicia o temporizador Recepção de Ack: r Se reconhecer segmentos ainda não reconhecidos m atualizar informação sobre o que foi reconhecido m religa o temporizador se ainda houver segmentos pendentes (não reconhecidos)

12 3: Camada de Transporte 3b-12 Transmis- sorTCP (simplificado) NextSeqNum = número de seqüência inicial SendBase = número de seqüência inicial repita (sempre) { switch(event) event: dados recebidos da aplicação acima cria segmento TCP com número de seqüência NextSeqNum se (temporizador estiver desligado) liga o temporizador passa segmento para IP NextSeqNum = NextSeqNum + comprimento(dados) event: estouro do temporizador retransmite segmento ainda não reconhecido com o menor número de seqüência reinicia o temporizador event: ACK recebido, com valor de campo ACK de y se (y > SendBase) { /* ACK cumulativo de todos dados até y */ SendBase = y se (houver segmentos ainda não reconhecidos) liga o temporizador } senão desliga o temporizador } /* fim do repita sempre */ Comentário: SendBase-1: último byte reconhecido cumulativamente Exemplo: SendBase-1 = 71; y= 73, portanto o receptor quer receber 73+; y > SendBase, portanto novos dados foram reconhecidos.

13 3: Camada de Transporte 3b-13 TCP: cenários de retransmissão Cenário com perda do ACK Temporização prematura, ACKs cumulativos Religa temporização Religa temporização Desliga temporização Religa temporização Desliga temporização

14 3: Camada de Transporte 3b-14 TCP: cenários de retransmissão (mais) Cenário de ACK cumulativo Desliga temporização

15 3: Camada de Transporte 3b-15 TCP geração de ACKs [RFCs 1122, 2581] Evento no Receptor chegada de segmento em ordem sem lacunas, anteriores já reconhecidos chegada de segmento em ordem sem lacunas, um ACK retardado pendente chegada de segmento fora de ordem, com no. de seq. maior que esperado -> lacuna chegada de segmento que preenche a lacuna parcial ou completamente Ação do Receptor TCP ACK retardado. Espera até 500ms pelo próx. segmento. Se não chegar segmento, envia ACK envia imediatamente um único ACK cumulativo envia ACK duplicado, indicando no. de seq.do próximo byte esperado ACK imediato se segmento começa no início da lacuna

16 3: Camada de Transporte 3b-16 Retransmissão rápida r O intervalo do temporizador é freqüentemente bastante longo: m longo atraso antes de retransmitir um pacote perdido r Detecta segmentos perdidos através de ACKs duplicados. m O transmissor normalmente envia diversos segmentos m Se um segmento se perder, provavelmente haverá muitos ACKs duplicados. r Se o transmissor receber 3 ACKs duplicados para os mesmos dados, ele supõe que o segmento após os dados reconhecidos se perdeu: m Retransmissão rápida: retransmite o segmento antes que estoure o temporizador

17 3: Camada de Transporte 3b-17 Host A timeout Host B tempo X Reenvia o 2o. segmento Retransmissão de um segmento após três ACKs duplicados

18 3: Camada de Transporte 3b-18 event: recebido ACK, com valor do campo ACK de y if (y > SendBase) { SendBase = y if (houver segmentos ainda não 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 número de seqüência y } Algoritmo de retransmissão rápida: um ACK duplicado para um segmento já reconhecido Retransmissão rápida

19 3: Camada de Transporte 3b-19 Conteúdo do Capítulo 3 r 3.1 Serviços da camada de transporte r 3.2 Multiplexação e demultiplexação r 3.3 Transporte não orientado para conexão: UDP r 3.4 Princípios da transferência confiável de dados r 3.5 Transporte orientado para conexão: TCP m estrutura do segmento m transferência confiável m controle de fluxo m gerenciamento de conexões r 3.6 Princípios de controle de congestionamento r 3.7 Controle de congestionamento do TCP

20 3: Camada de Transporte 3b-20 Controle de Fluxo do TCP r Lado receptor da conexão TCP possui um buffer de recepção: r serviço de compatibilização de velocidades: adaptando a taxa de transmissão à taxa de leitura da aplicação receptora r Processos da aplicações podem demorar a ler do buffer o transmissor não inundará o buffer do receptor transmitindo muito e rapidamente Controle de fluxo

21 3: Camada de Transporte 3b-21 Controle de Fluxo do TCP: como funciona (Suponha que o receptor TCP descarte segmentos fora de ordem)  espaço livre no buffer = RcvWindow = RcvBuffer-[LastByteRcvd - LastByteRead]  O receptor anuncia o espaço livre incluindo o valor da RcvWindow nos segmentos  O transmissor limita os dados não reconhecidos ao tamanho da RcvWindow m Garante que o buffer do receptor não transbordará

22 3: Camada de Transporte 3b-22 Conteúdo do Capítulo 3 r 3.1 Serviços da camada de transporte r 3.2 Multiplexação e demultiplexação r 3.3 Transporte não orientado para conexão: UDP r 3.4 Princípios da transferência confiável de dados r 3.5 Transporte orientado para conexão: TCP m estrutura do segmento m transferência confiável m controle de fluxo m gerenciamento de conexões r 3.6 Princípios de controle de congestionamento r 3.7 Controle de congestionamento do TCP

23 3: Camada de Transporte 3b-23 TCP: Gerenciamento de Conexões Lembrete: Transmissor e receptor TCP estabelecem “conexão” antes de trocar segmentos de dados r inicializam variáveis TCP: m números de seqüência  buffers, info s/ controle de fluxo (ex.: RcvWindow ) r cliente: iniciador de conexão Socket clientSocket = new Socket("hostname","port number"); r servidor: contactado pelo cliente Socket connectionSocket = welcomeSocket.accept(); Apresentação de 3 etapas: Etapa 1: sistema cliente envia segmento de controle SYN do TCP ao servidor m especifica no. inicial de seq m não envia dados Etapa 2: sistema servidor recebe SYN, responde com segmento de controle SYNACK m aloca buffers m especifica no. inicial de seq. servidor-> receptor Etapa 3: receptor recebe SYNACK, responde com segmento ACK que pode conter dados.

24 3: Camada de Transporte 3b-24 TCP: Gerenciamento de Conexões (cont.) Encerrando uma conexão: cliente fecha o socket: clientSocket.close(); Passo 1: sistema cliente envia segmento de controle FIN ao servidor Passo 2: servidor recebe FIN, responde com ACK. Encerra a conexão, enviando FIN.

25 3: Camada de Transporte 3b-25 TCP: Gerenciamento de Conexões (cont.) Passo 3: cliente recebe FIN, responde com ACK. m Entre em “espera temporizada” - responderá com ACK a FINs recebidos Passo 4: servidor, recebe ACK. Conexão encerrada. Nota: com pequena modificação, consegue tratar FINs simultâneos.

26 3: Camada de Transporte 3b-26 TCP: Gerenciamento de Conexões (cont.) Estados do clienteEstados do servidor

27 3: Camada de Transporte 3b-27 Conteúdo do Capítulo 3 r 3.1 Serviços da camada de transporte r 3.2 Multiplexação e demultiplexação r 3.3 Transporte não orientado para conexão: UDP r 3.4 Princípios da transferência confiável de dados r 3.5 Transporte orientado para conexão: TCP m estrutura do segmento m transferência confiável m controle de fluxo m gerenciamento de conexões r 3.6 Princípios de controle de congestionamento r 3.7 Controle de congestionamento do TCP

28 3: Camada de Transporte 3b-28 Princípios de Controle de Congestionamento Congestionamento: r informalmente: “muitas fontes enviando dados acima da capacidade da rede de tratá-los” r diferente de controle de fluxo! r Sintomas: m perda de pacotes (saturação de buffers nos roteadores) m longos atrasos (enfileiramento nos buffers dos roteadores) r um dos 10 problemas mais importantes em redes!

29 3: Camada de Transporte 3b-29 Causas/custos de congestionamento: cenário 1 r dois remetentes, dois receptores r um roteador, buffers infinitos r sem retransmissão r grandes retardos qdo. congestionada r máxima vazão alcançável

30 3: Camada de Transporte 3b-30 Causas/custos de congestionamento: cenário 2 r Um roteador, buffers finitos r retransmissão pelo remetente de pacote perdido Buffers de enlace de saída finitos compartilhados Hospedeiro A in : dados originais out ' in : dados originais mais dados retransmitidos Hospedeiro B Hospedeiro C Hospedeiro D

31 3: Camada de Transporte 3b-31 Causas/custos de congestionamento: cenário 2 r sempre: (goodput) r retransmissão “perfeita” apenas com perdas: r retransmissão de pacotes atrasados (não perdidos) torna maior (do que o caso perfeito) para o mesmo in out = in out > in out “custos” de congestionamento: r mais trabalho (retransmissão) para um dado “goodput” r retransmissões desnecessárias: enviadas múltiplas cópias do mesmo pacote R/2 in out b. R/2 in out a. R/2 in out c. R/4 R/3

32 3: Camada de Transporte 3b-32 Causas/custos de congestionamento: cenário 3 r quatro remetentes r caminhos com múltiplos enlaces r temporização/retransmissão in P: o que acontece à medida que e crescem ? in Buffers de enlace de saída finitos compartilhados Hospedeiro A in : dados originais Hospedeiro B out ' in : dados originais mais dados retransmitidos

33 3: Camada de Transporte 3b-33 Causas/custos de congestionamento: cenário 3 Outro “custo” de congestionamento: r quando pacote é descartado, qq. capacidade de transmissão já usada (antes do descarte) para esse pacote foi desperdiçada! HostAHostA HostBHostB o u t R/2

34 3: Camada de Transporte 3b-34 Abordagens de controle de congestionamento Controle de congestionamento fim a fim : r não usa realimentação explícita da rede r congestionamento é inferido a partir das perdas, e dos atrasos observados nos sistemas finais r abordagem usada pelo TCP Controle de congestionamento assistido pela rede: r roteadores enviam informações para os sistemas finais m bit indicando congestionamento (SNA, DECbit, TCP/IP ECN, ATM) m taxa explícita para envio pelo transmissor Duas abordagens gerais para controle de congestionamento:

35 3: Camada de Transporte 3b-35 Estudo de caso: controle de congestionamento do serviço ATM ABR ABR (available bit rate): r “serviço elástico” r se caminho do transmissor está pouco usado: m transmissor pode usar banda disponível r se caminho do transmissor estiver congestionado: m transmissor limitado à taxa mínima garantida células RM (resource management): r enviadas pelo transmissor, entremeadas com células de dados r bits na célula RM iniciados por comutadores (“assistido pela rede”) m bit NI: não aumente a taxa (congestionamento moderado) m bit CI: indicação de congestionamento r células RM devolvidas ao transmissor pelo receptor, sem alteração dos bits

36 3: Camada de Transporte 3b-36 Estudo de caso: controle de congestionamento do serviço ATM ABR r Campo ER (explicit rate) de 2 bytes nas células RM m comutador congestionado pode reduzir valor de ER nas células m taxa do transmissor assim ajustada p/ menor valor possível entre os comutadores do caminho r bit EFCI em células de dados ligado pelos comutadores congestionados m se EFCI ligado em células de dados que precedem a célula RM, receptor liga bit CI na célula RM devolvida

37 3: Camada de Transporte 3b-37 Conteúdo do Capítulo 3 r 3.1 Serviços da camada de transporte r 3.2 Multiplexação e demultiplexação r 3.3 Transporte não orientado para conexão: UDP r 3.4 Princípios da transferência confiável de dados r 3.5 Transporte orientado para conexão: TCP m estrutura do segmento m transferência confiável m controle de fluxo m gerenciamento de conexões r 3.6 Princípios de controle de congestionamento r 3.7 Controle de congestionamento do TCP

38 Controle de Congestionamento do TCP: aumento aditivo, diminuição multiplicativa r Abordagem: aumentar a taxa de transmissão (tamanho da janela), testando a largura de banda utilizável, até que ocorra uma perda m aumento aditivo: incrementa CongWin de 1 MSS a cada RTT até detectar uma perda m diminuição multiplicativa: corta CongWin pela metade após evento de perda 3: Camada de Transporte 3b-38 Comportamento de dente de serra: testando a largura de banda

39 3: Camada de Transporte 3b-39 Controle de Congestionamento do TCP: detalhes r transmissor limita a transmissão: LastByteSent-LastByteAcked  CongWin r Aproximadamente,  CongWin é dinâmica, em função do congestionamento detectado da rede Como o transmissor detecta o congestionamento? r evento de perda = estouro do temporizador ou 3 acks duplicados  transmissor TCP reduz a taxa ( CongWin ) após evento de perda três mecanismos: m AIMD m partida lenta m conservador após eventos de estouro de temporização taxa = CongWin RTT Bytes/seg

40 3: Camada de Transporte 3b-40 Partida Lenta do TCP  No início da conexão, CongWin = 1 MSS m Exemplo: MSS = 500 bytes & RTT = 200 mseg m taxa inicial = 20 kbps r largura de banda disponível pode ser >> MSS/RTT m é desejável um crescimento rápido até uma taxa considerável r No início da conexão, aumenta a taxa exponencialmente até o primeiro evento de perda

41 3: Camada de Transporte 3b-41 r No início da conexão, aumenta a taxa exponencialmente até o primeiro evento de perda:  duplica CongWin a cada RTT  através do incremento da CongWin para cada ACK recebido r Resumo: taxa inicial é baixa mas cresce rapidamente de forma exponencial TCP: Partida lenta (mais) Estação A um segmento RTT Estação B tempo dois segmentos quatro segmentos

42 3: Camada de Transporte 3b-42 Refinamento r Após 3 ACKs duplicados:  corta CongWin pela metade m a janela depois cresce linearmente r Mas após estouro de temporizador:  CongWin é reduzida a 1 MSS; m janela cresce exponencialmente m até um limiar, depois cresce linearmente 3 ACKs duplicados indica que a rede é capaz de entregar alguns segmentos estouro de temporizador antes de 3 ACKs duplicados é mais “alarmante”. Filosofia:

43 3: Camada de Transporte 3b-43 Refinamento (mais) P: Quando o crescimento exponencial deve mudar para linear? R: Quando CongWin atinge 1/2 do seu valor antes da detecção de perda. Implementação: r Limiar (Threshold) variável r Com uma perda o limiar é ajustado para 1/2 da CongWin imediatamente antes do evento de perda.

44 3: Camada de Transporte 3b-44 Resumo: Controle de Congestionamento do TCP  Quando a CongWin está abaixo do limiar, transmissor está na fase de partida lenta, a janela cresce exponencialmente.  Quando a CongWin está acima do limiar, transmissor está na fase de prevenção de congestionamento, janela cresce linearmente.  Quando chegam três ACKs duplicados, Limiar passa a ser CongWin/2 e CongWin é ajustado para o valor do Limiar.  Quando estoura o temporizador, Limiar é ajustado para CongWin/2 e CongWin é ajustado para 1 MSS.

45 3: Camada de Transporte 3b-45 Controle de congestionamento do transmissor TCP EventoEstadoAção do Transmissor TCPComentário ACK recebido para dados ainda não reconhecidos Partida lenta CongWin = CongWin + MSS, Se (CongWin > Limiar) ajustar estado para “Prevenção de congestionamento” Resulta na duplicação da CongWin a cada RTT ACK recebido para dados ainda não reconhecidos Prevenção de congestio- namento CongWin = CongWin+MSS * (MSS/CongWin) Aumento aditivo, resultando no incremento da CongWin de 1 MSS a cada RTT Perda detectada por três ACKs duplicados qualquerLimiar = CongWin/2, CongWin = Limiar, Ajusta estado para “Prevenção de Congestionamento” Recuperação rápida, implementa diminuição multiplicativa. CongWin não cai abaixo de 1 MSS. Estouro de temporizador qualquerLimiar = CongWin/2, CongWin = 1 MSS, Ajusta estado para “Partida lenta” Entra estado de “partida lenta” ACK duplicado qualquerIncrementa contador de ACKs duplicados para o segmento que está sendo reconhecido CongWin e Limiar não se alteram

46 3: Camada de Transporte 3b-46 Vazão (throughput) do TCP r Qual é a vazão média do TCP em função do tamanho da janela e do RTT? m Ignore a partida lenta r Seja W o tamanho da janela quando ocorre a perda r Quando a janela é W a vazão é W/RTT r Logo após a perda, janela cai a W/2, e a vazão cai para W/2RTT. r Vazão média = 0,75 W/RTT

47 3: Camada de Transporte 3b-47 Futuro do TCP r Exemplo: segmentos de 1500 bytes, RTT de 100ms, deseja vazão de 10 Gbps r Requer janela de W = 83.333 segmentos em trânsito r Vazão em termos de taxa de perdas:  ➜ L = 2·10 -10 Taxa de perdas demasiado baixa!!! r São necessárias novas versões do TCP para altas velocidades!

48 3: Camada de Transporte 3b-48 Equidade (Fairness) do TCP Objetivo de eqüidade: se K sessões TCP compartilham o mesmo enlace de gargalo com largura de banda R, cada uma deve obter uma taxa média de R/K Conexão TCP 1 Roteador com gargalo, de capacidade R Conexão TCP 2

49 3: Camada de Transporte 3b-49 Por que o TCP é justo? Duas sessões competindo pela banda: r Aumento aditivo dá gradiente de 1, enquanto vazão aumenta r Redução multiplicativa diminui vazão proporcionalmente R R compartilhamento igual da banda Vazão da conexão 1 Vazão da conexão 2 evitar congestionamento: aumento aditivo perda: diminui janela por fator de 2 evitar congestionamento: aumento aditivo perda: diminui janela por fator de 2

50 3: Camada de Transporte 3b-50 Equidade (mais) Equidade e UDP r Aplicações multimídia freqüentemente não usam TCP m não querem a taxa estrangulada pelo controle de congestionamento r Preferem usar o UDP: m Injeta áudio/vídeo a taxas constantes, toleram perdas de pacotes r Área de Pesquisa: amigável ao TCP (TCP friendly) Equidade e conexões TCP em paralelo r nada impede que as apls. abram conexões paralelas entre 2 hosts r Os browsers Web fazem isto r Exemplo: canal com taxa R compartilhado por 9 conexões; m novas aplicações pedem 1 TCP, obtém taxa de R/10 m novas aplicações pedem 11 TCPs, obtém taxa R/2 !

51 3: Camada de Transporte 3b-51 Capítulo 3: Resumo r Princípios por trás dos serviços da camada de transporte: m multiplexação/ demultiplexação m transferência confiável de dados m controle de fluxo m controle de congestionamento r instanciação e implementação na Internet m UDP m TCP Próximo capítulo: r saímos da “borda” da rede (camadas de aplicação e transporte) r entramos no “núcleo”da rede


Carregar ppt "3: Camada de Transporte 3b-1 Conteúdo do Capítulo 3 r 3.1 Serviços da camada de transporte r 3.2 Multiplexação e demultiplexação r 3.3 Transporte não orientado."

Apresentações semelhantes


Anúncios Google