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

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

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

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 confiável de dados o controle de fluxo o controle de congestionamento implementação na Internet Camada de Transporte

2 3: Camada de Transporte2 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ção transporte rede enlace física rede enlace física aplicação transporte rede enlace física rede enlace física rede enlace física rede enlace física rede enlace física transporte lógico fim a fim

3 3: Camada de Transporte3 Protocolos da camada de transporte Serviços de transporte na Internet: entrega confiável, ordenada, ponto a ponto (TCP) o congestionamento o controle de fluxo o 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 real o garantias de banda o multiponto confiável aplicação transporte rede enlace física rede enlace física aplicação transporte rede enlace física rede enlace física rede enlace física rede enlace física rede enlace física transporte lógico fim a fim

4 3: Camada de Transporte4 aplicação transporte rede M P2 aplicação transporte rede Entrega de segmentos Segmento - unidade de dados trocada entre entidades da camada de transporte o = TPDU: transport protocol data unit receptor H t H n Serviço: Entrega de segmentos recebidos para os processos da camada de apl corretos segmento M aplicação transporte rede P1 MMM P3 P4 cabeçalho de segmento dados da camada de aplicação

5 3: Camada de Transporte5 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 remetenteporta receptor 32 bits dados da aplicação (mensagem) outros campos do cabeçalho formato de segmento TCP/UDP

6 3: Camada de Transporte6 Entrega de segmentos: exemplos estação A servidor B porta orig.: x porta dest: 23 porta orig:23 porta dest: x uso de portas: apl. simples de telnet cliente WWW estação A servidor WWW B Web client host C IP orig: C IP dest: B porta orig: x porta dest: 80 IP orig : C IP dest: B porta orig: y porta dest: 80 uso de portas : servidor WWW IP orig: A IP dest: B porta orig: x porta dest: 80

7 3: Camada de Transporte7 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 perdidos o 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

8 3: Camada de Transporte8 Mais sobre UDP muito utilizado para apls. de meios contínuos (voz, vídeo) o tolerantes de perdas o 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 origemporta dest. 32 bits Dados de aplicação (mensagem) Formato do segmento UDP comprimento checksum Comprimento em bytes do segmento UDP, incluindo cabeçalho

9 3: Camada de Transporte9 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 detectado o SIM - nenhum erro detectado. Mas ainda pode ter erros? Veja depois …. Meta: detectar erro (e.g., bits invertidos) no segmento transmitido

10 3: Camada de Transporte10 Binary Checksum Example Carry from 1 st column Carry from 2 nd column Carry from 3 rd column Carry from 4 th column Carry from 5 th column Carry from 13 th column Carry from 12 th column Carry from 16 th column

11 3: Camada de Transporte11 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)

12 3: Camada de Transporte12 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)

13 3: Camada de Transporte13 Transferência confiável de dados: Se o canal sujeito a erros de bits canal subjacente pode inverter bits no pacote o 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 bem o reconhecimentos negativos (NAKs): receptor avisa explicitamente ao remetente que pacote tinha erros o remetente retransmite pacote ao receber um NAK o cenários humanos usando ACKs, NAKs? novos mecanismos: o detecção de erros o realimentação pelo receptor: msgs de controle (ACK,NAK) receptor->remetente

14 3: Camada de Transporte14 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

15 3: Camada de Transporte15 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: T transmitir = 8kb/pacote 10**9 b/seg = 8 microseg Utilização = U = = 8 microseg mseg fraçã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!

16 3: Camada de Transporte16 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

17 3: Camada de Transporte17 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

18 3: Camada de Transporte18 Volta-N: remetente

19 3: Camada de Transporte19 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 duplicados o 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

20 3: Camada de Transporte20 Volta-N em ação janela de 4

21 3: Camada de Transporte21 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 remetente o N nos. de seq consecutivos o outra vez limita nos. de seq de pacotes enviados, mas ainda não reconhecidos

22 3: Camada de Transporte22 Retransmissão seletiva: janelas de remetente, receptor

23 3: Camada de Transporte23 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 receptor remetente

24 3: Camada de Transporte24 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.

25 3: Camada de Transporte25 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

26 3: Camada de Transporte26 TCP: estrutura do segmento no. porta origem no. porta dest 32 bits dados da aplicação (tam. variável) número de seqüência número de reconhecimento janela receptor ptr dados urg. checksum F SR PAU tam. cab. sem uso Opções (tam. variável) URG: dados urgentes (pouco usado) ACK: no. ACK válido PSH: envia dados já (usado no telnet) RST, SYN, FIN: gestão de conexão (comandos de estabelecimento, liberação) no. bytes rcpt quer aceitar contagem de dados por bytes (não segmentos!) checksum Internet (como UDP)

27 3: Camada de Transporte27 TCP: nos. de seq. e ACKs Nos. de seq.: o númerodentro 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 cumulativo P: 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ário tecla C A reconhece chegada do C ecoado B reconhece chegada de C, ecoa C de volta tempo cenário simples de telnet

28 3: Camada de Transporte28 TCP: transferência confiável de dados remetente simplificado, supondo: wait for event wait for 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

29 3: Camada de Transporte29 TCP transfer. confiável de dados 00 sendbase = número de seqüência inicial 01 nextseqnum = número de seqüência inicial loop (forever) { 04 switch(event) 05 event: dados recebidos da aplicação acima 06 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 */ Remetente TCP simplificado

30 3: Camada de Transporte30 TCP geração de ACKs [RFCs 1122, 2581] Evento 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 p/ 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 no início da lacuna

31 3: Camada de Transporte31 TCP: cenários de retransmissão Estação A Seq=92, 8 bytes de dados ACK=100 perda temporização tempo cenário do ACK perdido Estação B X Seq=92, 8 bytes de dados ACK=100 Host A Seq=100, 20 bytes de dados ACK=100 Temp.p/ Seq=92 temporização prematura, ACKs cumulativos Host B Seq=92, 8 bytes de dados ACK=120 Seq=92, 8 bytes de dados Temp. p/ Seq=100 ACK=120 tempo

32 3: Camada de Transporte32 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 RcvWindow buffering pelo receptor RcvBuffer = tamanho do Buffer de recepção RcvWindow = espaço vazio no Buffer

33 3: Camada de Transporte33 TCP: Tempo de Resposta (RTT) e Temporização P: como escolher valor do temporizador TCP? maior que o RTT o 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)

34 3: Camada de Transporte34 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

35 3: Camada de Transporte35 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|

36 3: Camada de Transporte36 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 recebido o aloca buffers o 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)

37 3: Camada de Transporte37 TCP: Gerenciamento de Conexões Encerrando uma conexão cliente fecha soquete: clientSocket.close(); 4 passos: Espera temporizada para tratar perdas de mensagens e outras anomalias. cliente FIN servidor ACK FIN fechar fechando fechada espera temporizada fechada

38 3: Camada de Transporte38 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!

39 3: Camada de Transporte39 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!

40 3: Camada de Transporte40 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:

41 3: Camada de Transporte41 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

42 3: Camada de Transporte42 TCP: Controle de Congestionamento duas fases o partida lenta o evitar congestionamento variáveis importantes: o Congwin o 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

43 3: Camada de Transporte43 TCP: Partida lenta aumento exponencial (por RTT) no tamanho da janela (não muito lenta!) evento de perda: temporizador inicializa: Congwin = 1 for (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

44 3: Camada de Transporte44 TCP: Evitar Congestionamento /* partida lenta acabou */ /* Congwin > threshold */ Until (event de perda) { cada w segmentos reconhecidos: Congwin++ } threshold = Congwin/2 Congwin = 1 faça partida lenta 1 Evitar congestionamento

45 3: Camada de Transporte45 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 Roteador gargalo capacidade R TCP conexão 2


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google