Baixe o app para aproveitar ainda mais
Prévia do material em texto
Redes de Computadores: Camada de Transporte Luciana A. F. Martimiano Kalinka Castelo Branco 1 2 Camada de Transporte • Serviços Básicos da camada de transporte: – Multiplexação (origem: aceitar dados da camada de aplicação, dividi-los em unidades menores caso seja necessário, e entregar à camada de rede) – Demultiplexação (destino: receber dados da camada de rede e entregar à camada de aplicação) – Tudo deve ser feito com eficiência de forma que as camadas superiores fiquem isoladas das mudanças na tecnologia de hardware – Principais protocolos: • TCP – Transmission Control Protocol • UDP – User Datagram Protocol 3 4 Camada de Transporte – Funções Multiplexação/Demultiplexação reunir dados de múltiplos processo de aplicação na origem, encapsular em segmentos com informações para demultiplexação Multiplexação Demultiplexação: entrega de mensagens aos processos de aplicação corretos no destino Camada de Transporte – Funções Multiplexação/Demultiplexação 5 Camada de Transporte: Serviços específicos Serviço TCP: • orientado a conexão: inicialização requerida entre cliente e servidor • transporte confiável entre processos remetente e receptor • controle de fluxo: remetente não vai “inundar” receptor • controle de congestionamento: não “inundar” a rede • não provê: garantias temporais ou de banda mínima Serviço UDP: • transferência de dados não confiável entre processos remetente e receptor • não orientado à conexão • best-effort • não provê: confiabilidade, controle de fluxo, controle de congestionamento, garantias temporais ou de banda mínima 7 Camada de Transporte - Funções • Fornecem comunicação lógica entre processos de aplicação em diferentes hosts • Os protocolos de transporte são executados nos sistemas finais da rede • Transferência de dados entre processos • Ler a Seção 3.1.1 do Livro do Kurose e Ross 8 Camada de Transporte - PDU • Segmento - unidade de dados trocada entre protocolos da camada de transporte – TPDU: transport protocol data unit (unidade de dados do protocolo de transporte) formato básico do segmento de transporte Camada de Transporte - Funções 9 10 Endereçamento da Camada de Transporte • Da mesma forma que em outras camadas, a camada de transporte também possui um endereçamento • Os processos utilizam o TSAP (Transport Service Access Point – Ponto de Acesso de Serviços de Transporte) para se comunicarem • Em redes IP, o TSAP é um número de 16 bits chamado de porta. O endereço da camada de transporte (socket) é um número de 48 bits, composto pela agregação do endereço IP (32 bits) do host e o número da porta (16 bits) – Assim, são 65536 portas para o TCP, e 65536 portas para o UDP. Endereçamento da Camada de Transporte 11 Porta é um TSAP Endereçamento da Camada de Transporte API Sockets • apareceu no BSD4.1 UNIX em 1981 • são explicitamente criados, usados e liberados por aplicações • paradigma cliente/servidor • dois tipos de serviço de transporte via API Sockets – datagrama não confiável – fluxo de bytes, confiável uma interface (uma “porta”), local ao host, criada por ele pertencente à aplicação, controlado pelo SO, através da qual um processo de aplicação pode tanto enviar como receber mensagens para/de outro processo de aplicação (remoto ou local) socket Endereçamento da Camada de Transporte processo TCP ou UDP socket controlado pelo programador de aplicação controlado pelo sistema operacional estação ou servidor processo TCP ou UDP socket controlado pelo programador de aplicação controlado pelo sistema operacional estação ou servidor internet 14 Endereçamento da Camada de Transporte • Para uma melhor organização de serviços, algumas portas foram definidas pela IANA como “portas bem conhecidas” (well-known ports) portas abaixo de 1024 – http://www.iana.org – Para aplicações não padronizadas são utilizadas portas acima deste valor 15 Endereçamento da Camada de Transporte • Os sockets são diferentes para cada protocolo de transporte, desta forma, mesmo que um socket TCP possua o mesmo número que um socket UDP, ambos são responsáveis por aplicações diferentes • Os sockets de origem e destino são responsáveis pela identificação única da comunicação. Desta forma, é possível a multiplexação e a demultiplexação 16 UDP: User Datagram Protocol [RFC 768] • protocolo de transporte da Internet “sem gorduras” • 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) UDP • Muito usado por aplicações de multimídia contínua (Voz e vídeo) – tolerantes à perda – sensíveis à taxa • Outros usos do UDP – DNS (porta 53) – SNMP (porta 161) • Transferência confiável sobre UDP: acrescentar confiabilidade na camada de aplicação – recuperação de erro específica de cada aplicação 17 UDP • Porta de Origem e Porta de Destino – Indicam os pares de porta que estão executando a comunicação (2 + 2 bytes); • Comprimento (tamanho) – Indica o comprimento (em bytes) de todo o segmento, incluindo cabeçalho e dados (2 bytes); • Checksum – Verificação de integridade (2 bytes); 18 porta origem porta destino 32 bits Dados de Aplicação (mensagem) formato do segmento UDP tamanho checksum UDP - Aplicações 19 UDP no servidor B extrai o número de porta destino do segmento a cada segmento recebido Porta origem é o endereço de retorno (identificado o processo em A) Todos os clientes usam o mesmo socket no servidor B 20 UDP checksum Transmissor: • trata o conteúdo do segmento como sequência de inteiros de 16 bits • checksum: soma do conteúdo do segmento + complemento de 1 da soma • 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 - erro detectado – SIM - não há erros Objetivo: detectar “erros” (ex.,bits trocados) no segmento transmitido UDP checksum 21 Ao se somar números, um vai um do bit mais significativo deve ser acrescentado ao resultado Exemplo: soma de dois inteiros de 16 bits 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 wraparound sum checksum Vai 1 é somado ao bit menos significativo no resultado da soma Checksum – complemento de 1 do resultado da soma Destino: soma todas as palavras, inclusive o resultado 22 TCP – Transmission Control Protocol • O TCP foi projetado para oferecer umfluxo de bytes fim a fim confiável em uma rede não confiável • Fragmenta o fluxo de entrada em segmentos, gerando um fluxo de saída e passando-os para a camada de rede. No destino, o TCP remonta os segmentos recebidos, gerando o fluxo de saída para a aplicação • Adapta-se dinamicamente às propriedades da camada de rede e é robusto diante dos muitos tipos de falhas que podem ocorrer • RFCs: 675, 793, 1122, 1323, 2018, 2581, e outros 23 Serviço TCP • Todas as conexões TCP são full-duplex e ponto a ponto • Segmento: – Durante o estabelecimento de uma conexão, cada host (remetente e destinatário) pode estipular o máximo de carga útil (em bytes) que está disposto a receber MSS – Maximum Segment Size • No entanto, o tamanho padrão de um segmento TCP é de 556 bytes (536 bytes de payload + 20 de cabeçalho) • Todos os hosts da Internet são obrigados a aceitar segmentos TCP de 556 bytes 24 Serviço TCP • Dois fatores restringem o tamanho máximo do segmento (MSS): – Cada segmento, incluindo o cabeçalho TCP (fixo de 20 bytes), deve caber na carga útil do IP, que é de 65535 bytes, evitando fragmentação do pacote IP – Cada tipo de rede tem uma MTU – Maximum Transfer Unit, e cada segmento deve caber na MTU • Na prática, a MTU define o limite superior em termos de tamanho de segmento • MTU é definida pela camada de enlace (Protocolo Ethernet – 1500 bytes) Serviço TCP • O TCP não se importa com a semântica dos bytes que estão na carga útil (payload) • Quando uma aplicação passa dados para o TCP transmissor, este pode enviá-los imediatamente, ou armazená-los em um buffer (para aguardar outros dados e enviar um volume maior de uma só vez), de acordo com as necessidades e condições (da rede ou do receptor) 25 TCP – Aplicações 26 TCP identifica socket criado no servidor B a partir da tupla: (porta origem, IP origem, porta destino, IP destino) TCP cria um socket para cada cliente (conexão) TCP – Transmission Control Protocol • Transferência confiável • Estabelecimento de conexões • Controle de fluxo • Controle de congestionamento (RFC 5681) 27 TCP – Transmission Control Protocol 28 ● Nenhum dos dados transferidos é corrompido; ● Nenhum dos dados é perdido; ● Os dados são entregues na ordem em que foram enviados; Princípios da transferência confiável de dados: Transferência confiável 29 Transferência confiável lado transmissor lado receptor rdt_send(): chamada da camada superior, (aplicação); passa dados para entregar à camada superior receptora udt_send(): chamada pela entidade de transporte, para transferir pacotes para o receptor sobre o canal não confiável rdt_rcv(): chamada quando o pacote chega ao lado receptor do canal deliver_data(): chamada pela entidade de transporte para entregar dados para cima (aplicação) 30 Transferência confiável rdt1.0 Canal de transmissão perfeitamente confiável: Não há erros de bits Não há perdas de pacotes Nada pode dar errado!! FSMs separadas para transmissor e receptor: Transmissor envia dados para o canal Receptor lê os dados do canal 31 (Evento para transição) (Ações após evento) Transferência confiável rdt2.0 • rdt2.0 – protocolos de transferência confiável baseados em retransmissão – segmentos recebidos com erros – Uso do campo de Checksum; – ARQ – Automatic Repeat reQuest: detecção de erros; aviso do receptor (ACK ou NAK): • reconhecimentos (ACKs): destinatário diz explicitamente ao remetente que o segmento foi recebido OK • reconhecimentos negativas (NAKs): destinatário diz explicitamente ao remetente que o segmento teve erros; remetente retransmite segmento ao receber NAK 32 Transferência confiável - rdt2.0 33 Ʌ (lâmbda) = falta de evento ou ação Transferência confiável rdt2.1 • rdt2.1 – protocolos de transferência confiável baseados em retransmissão – segmentos recebidos com erros e/ou ACK e NAK corrompidos – Uso do campo de Checksum – Transmissor reenvia o segmento – Segmentos são numerados – número de sequência para evitar segmentos duplicados no receptor • Um bit é suficiente: 0 ou 1 (pare-e-espere/bit alternante) 34 Transferência confiável rdt2.1 35 rdt 2.1 - Remetente Transferência confiável rdt2.1 36 rdt 2.1 - Destinatário Transferência confiável rdt2.2 • rdt2.2 – protocolos de transferência confiável baseados em retransmissão– segmentos recebidos com erros e/ou ACK corrompido; – Não há uso do NAK – Receptor inclui número de sequência do segmento que está sendo confirmado com referido ACK • ACK duplicado significa que segmento deve ser retransmitido 37 Transferência confiável rdt2.2 38 rdt 2.2 - Remetente Transferência confiável rdt2.2 39 rdt 2.2 - Destinatário Transferência confiável rdt3.0 (bit alternante) rdt3.0 – protocolos de transferência confiável baseados em retransmissão – segmentos recebidos com erros e/ou ACK corrompido; perda de segmentos (dados ou ACKs) Como detectar perdas e o que fazer? Números de sequência , ACKs, retransmissões ajudam, mas não são o bastante Solução: Exige um temporizador decrescente (timeout) Retransmite se nenhum ACK for recebido nesse tempo Se o segmento (ou ACK) estiver apenas atrasado (não perdido) Retransmissão será duplicata, mas os números de sequência resolvem 40 Transferência confiável rdt3.0 (bit alternante) 41 rdt3.0 - Remetente Transferência confiável rdt3.0 (bit alternante) 42 rdt 3.0 – Destinatário (igual rdt 2.2) Transferência confiável • Protocolo do tipo pare-e-espere – Baixo desempenho! • Protocolos com pipelining 43 Transferência confiável Protocolos com pipelining • Consequências: – Faixa de números de sequência deve ser maior; – Buffers tanto no transmissor quanto no receptor: • Ex.: Transmissor: buffer para segmentos que foram transmitidos, mas ainda não confirmados – Como se recuperar dos erros (segmentos perdidos, corrompidos ou muito atrasados) • Estratégias: – Protocolos Go-back-N (GBN) – Protocolos de Repetição Seletiva (SR – selective repeat) 44 Transferência confiável Go-back-N • Transmissor possui um número máximo de segmentos que podem ser transmitidos sem recebimentos de ACK dos anteriores – N = máximo permitido (tamanho da janela) – Filosofia: janela deslizante (sliding-window) – Um temporizador único para todos os segmentos previamente enviados (na janela N) 45 Transferência confiável Go-back-N 46 • base: número de sequência do mais antigo segmento não reconhecido (sem ACK) • nextseq-num: menor número de sequência não utilizado próximo segmento a ser enviado Retransmite segmento n e todos os segmentos com número de sequência maior que estejam dentro da janela Segmentos fora de ordem: Descarta (não armazena) não há buffer no receptor Transferência confiável Go-back-N 47 Transferência confiável Go-back-N 48 FSM do Remetente Transferência confiável Go-back-N 49 FSM do Destinatário Transferência confiável Go-back-N • Limitações: – Problemas de desempenho – Tamanho da janela (N) muito grande • Retransmissões desnecessárias – Grandes atrasos na rede 50 Transferência confiável Repetição Seletiva Evita retransmissões desnecessárias Janela de transmissão - N Receptor reconhece individualmente todos os segmentosrecebidos corretamente Armazena segmentos , quando necessário, para eventual entrega em ordem para a camada superior Transmissor somente reenvia os segmentos para os quais um ACK não foi recebido Cada segmento tem um temporizador 51 Transferência confiável Repetição Seletiva 52 reconheci do 53 Repetição Seletiva Transferência confiável -Repetição Seletiva 54 Dilema: # seq.: 0, 1, 2, 3 tamanho janela = 3 destinatário não vê diferença nos dois cenários! passa incorretamente dados duplicados como novos em (a) P: Qual o relacionamento entre tamanho do # seq. e tamanho de janela? TamJan < ½ TamSeq ou no máximo TamJan = ½ TamSeq Resumo transferência confiável do TCP • Soma de verificação - Usada para detectar erros de bits em um segmento transmitido • Temporizador - Usado para controlar a temporização/retransmissão de um segmento, possivelmente porque o segmento (ou seu ACK) foi perdido dentro do canal ou tiveram algum erro detectado • Número de sequência - Usado para numeração sequencial de segmentos • Reconhecimento - Usado pelo destinatário para avisar o remetente que um segmento ou conjunto de segmentos foi recebido corretamente • Janela, paralelismo - O remetente pode ficar restrito a enviar somente segmentos com números de sequência que estão dentro da janela N 55 TCP – Transmission Control Protocol • Transferência confiável • Estabelecimento de conexões • Controle de fluxo • Controle de congestionamento (RFC 5681) 56 57 Estabelecimento de Conexões Segmento TCP DADOS DA APLICAÇÃO 58 Estabelecimento de Conexões Segmento TCP • Porta de Origem e Porta de Destino – identifica os pontos terminais locais da conexão; • Número de Sequência – Identifica o fragmento dentro de todo o fluxo gerado; • Número de Confirmação – Indica qual o próximo byte esperado; • Tamanho do Cabeçalho – Informa quantas palavras de 32 bits compõem o cabeçalho TCP; • URG – Indica a utilização do urgent pointer; • ACK – É utilizado para indicar que este segmento é um ACK e que o campo Número de Confirmação deve ser interpretado; Estabelecimento de Conexões Segmento TCP • PSH – Indica que este segmento não deve ser enfileirado como todos os outros, mas sim posto à frente na fila (ENTREGUE IMEDIATAMENTE); • RST – É utilizado para reiniciar uma conexão que tenha ficado confusa devido a falhas no host ou por qualquer outra razão; • SYN – Este bit é utilizado para indicar um pedido de conexão e a confirmação da conexão; usado em conjunto com ACK • FIN – Utilizado para indicar que o emissor não possui mais dados para enviar e deseja finalizar a conexão; 59 Estabelecimento de Conexões Segmento TCP • Tamanho da Janela – Indica quantos bytes podem ser enviados ao receptor. Este campo é utilizado no controle de fluxo do TCP; • Checksum – Indicador de integridade do segmento; • Urgent Pointer – Indica um deslocamento de bytes a partir do número de sequência atual em que os bytes urgentes devem ser encontrados (interrupção, por exemplo); • Opções – Projetado para que o TCP possa oferecer recursos extras que não foram previstos em seu protocolo; 60 61 Estabelecimento de Conexões TCP • O estabelecimento de uma conexão TCP ocorre antes que qualquer outro recurso TCP possa começar seu trabalho • O estabelecimento da conexão se fundamenta no processo de inicialização dos campos referentes aos números de sequência, aos ACKs, ao tamanho da janela (controle de fluxo) e na troca dos números de sockets • As conexões são estabelecidas no TCP por meio do three way handshake (acordo de três vias) Estabelecimento de Conexões TCP Números de sequência (32 bits): Número do primeiro byte do segmento de dados do transmissor Ex.: 500.000 bytes, com MSS de 1000bytes (500 segmentos) primeiro segmento: 0 a 999 bytes (número de sequência = 0) segundo segmento: 1000 a 1999 bytes (número de sequência = 1000) Número de reconhecimento ACK (32 bits): Número do próximo byte esperado pelo receptor 62 63 Estabelecimento de Conexões TCP • Depois de receber a solicitação – o servidor “acorda” o serviço necessário, coloca o processo solicitante em contato com o TSAP (porta lógica) do servidor, permitindo que ele “herde” a conexão com o cliente 64 Estabelecimento de Conexões TCP • O estabelecimento da conexão é feito usando dois bits no cabeçalho TCP: SYN e ACK • Um segmento que possua a flag SYN ativa sinaliza uma requisição de sincronia do número de sequência. Essa sincronização é necessária em ambos os sentidos, pois origem e destino utilizam números de sequência distintos • Cada pedido de conexão é seguido de uma confirmação (segundo segmento) utilizando os bits SYN e ACK setados – O segundo segmento do three way handshake exerce as duas funções: confirma a sincronização do servidor com o cliente e requisita a sincronização do cliente com o servidor • Terceiro segmento utilizando o bit ACK setado Estabelecimento de Conexões TCP • O número de sequência é incrementado com base no número de bytes enviados pela origem • O ACK tem como objetivo solicitar a continuidade dos segmentos • ACK Duplicado é gerado quando um segmento fora de ordem chegou • ACK cumulativo: Pode-se interpretar um ACK=210 como sendo: “Pronto, recebi até a 209, pode mandar a partir do 210” • Uso do SACK (Selective ACK): reconhece segmentos recebidos fora de ordem – ACK continua pedindo segmento perdido (ACK duplicado) 65 Estabelecimento de Conexões TCP 66 SACK (Selective ACK): reconhece segmentos recebidos fora de ordem Estabelecimento de Conexões TCP 67 Mostrar Animações Estabelecimento de Conexões TCP Estados do cliente 68 Estabelecimento de Conexões TCP 69 Estados do servidor Estabelecimento de Conexões TCP 70 TCP – Transmission Control Protocol • Transferência confiável • Estabelecimento de conexões • Controle de fluxo • Controle de congestionamento (RFC 5681) 71 72 Controle de Fluxo • O TCP implementa o controle de fluxo utilizando os dados dos campos Número de Sequência, Número de Confirmação (ACK) e Tamanho da Janela (16 bits, 64Kbytes) • O controle de fluxo no TCP pode utilizar uma janela de tamanho fixo ou uma janela deslizante – O campo Tamanho da Janela indica, em tempo real, o número máximo de bytes sem confirmação que podem ser enviados • Compatibiliza a taxa de envio do remetente com a taxa de recebimento do receptor 73 Lado receptor da conexão TCP possui um buffer de recepção Serviço de speed- matching: encontra a taxa de envio adequada à taxa de vazão do receptor Processos de aplicação podem ser lentos para ler o buffer do TCP • Transmissor não deve esgotar os buffers de recepção enviando dados rápido demais Controle de Fluxo Controle de Fluxo 74 Transmissor: LastByteSent – LastByteAcked <= RcvWindow Receptor: LastByteRcvd – LastByteRead <= RcvBuffer 75 Controle de Fluxo Receptor informa a área disponível incluindo valor RcvWindow nos segmentos Transmissor limita os dados não confirmados ao RcvWindow Garantia contra overflow no buffer do receptor Controle de Fluxo • Ao iniciar uma conexão, a janela começa pequena (um MSS) e aumentará gradativamente até que ocorram erros ou até o limite do receptor • Caso o destinatário perceba uma sobrecarga, no próximo ACK enviado haverá um novo tamanhode janela • Caso seja enviado um valor igual à zero, o receptor estará informando que não possui condições de processar mais bytes e a comunicação estará suspensa até que o remetente receba um tamanho de janela diferente de zero 76 Controle de Fluxo 77 Controle de Fluxo 78 Solução de Clark: esperar que o tamanho da janela seja metade do buffer (receptor) Algoritmo de Nagle: esperar quantidade maior de dados para enviar (transmissor) Síndrome da Janela Boba TCP – Transmission Control Protocol • Transferência confiável • Estabelecimento de conexões • Controle de fluxo • Controle de congestionamento (RFC 5681) 79 80 Controle de Congestionamento • “Muitas fontes enviando dados acima da capacidade da rede de tratá-los” • Diferente de controle de fluxo! • Roteadores informam congestionamento • Um dos 10 problemas mais importantes na Internet! Controle de Congestionamento • Custos: – Há grandes atrasos quando a taxa de chegada de pacotes se aproxima da capacidade do enlace em transmitir (R) – O remetente deve retransmitir pacotes para compensar àqueles perdidos devido ao esgotamento do buffer – Retransmissões desnecessárias devido a grandes atrasos podem fazer com que o roteador use usa largura de banda de maneira desnecessária – Descarte de pacotes ao longo do caminho devido ao limite de transmissão do enlace 81 82 Controle de Congestionamento Controle de congestionamento fim a fim: • abordagem usada pelo TCP • não usa realimentação explícita da rede • congestionamento é inferido a partir das perdas e dos atrasos observados nos sistemas finais Controle de congestionamento assistido pela rede: • roteadores enviam informações para os sistemas finais – Bits indicando o congestionamento – ECN – Explicit Congestion Notification (Cabeçalho IP) 1. Roteador constrói um pacote de congestionamento Existem duas abordagens: Controle de Congestionamento • Como um remetente TCP limita a taxa à qual envia o tráfego para a conexão? • Como um remetente TCP percebe que há congestionamento? • Qual algoritmo um remetente TCP deve utilizar para modificar sua taxa de envio em função do congestionamento? 83 Controle de Congestionamento Como um remetente TCP limita a taxa à qual envia o tráfego para a conexão? TCP utiliza um limite de janela de congestionamento (cwnd): – Restringir o fluxo de bytes para menos do que o tamanho do buffer do receptor – Janela é aumentada (ACKs recebidos) ao longo da transmissão até o limite da janela do receptor (autorregulação) • Começa com um MSS e aumenta exponencialmente (partida lenta – slow start) – Taxa: cwnd = MSS/RTT se MSS = 500 bytes e RTT = 200 ms, então taxa é de 20 kbps janela_permitida = min(janela_receptor (rwnd), janela_congestionamento (cwnd)) janela_permitida = min(32 bytes, 64 bytes) janela_permitida = 32 bytes 84 Controle de Congestionamento 85 Hosp. A R T T Hosp. B tempo Partida Lenta Controle de Congestionamento Como um remetente TCP percebe que há congestionamento? Evento de perda de segmentos • Esgotamento do temporizador • Três ACKs duplicados – DUPACK (lembre-se que o ACK refere-se ao próximo segmento esperado) 86 Controle de Congestionamento Qual algoritmo um remetente TCP deve utilizar para modificar sua taxa de envio em função do congestionamento? • Algoritmo com duas técnicas: 1. Diminuição multiplicativa: • Quando há perda de segmentos, reduzir a janela de congestionamento até o mínimo de um segmento (MSS) – Quanto reduzir, depende da variante do TCP utilizada • Aumentar o timer de retransmissão • Assim... – Reduz volume de tráfego e a taxa de retransmissão até os roteadores se recuperarem 87 Controle de Congestionamento Qual algoritmo um remetente TCP deve utilizar para modificar sua taxa de envio em função do congestionamento? • Algoritmo com duas técnicas: 1. Diminuição multiplicativa: • TCP-Tahoe (primeira variante para controle de congestionamento) – Esgotamento por temporização ou três ACKs duplicados: retransmite o segmento perdido e reduz janela para 1 MSS 88 Controle de Congestionamento Qual algoritmo um remetente TCP deve utilizar para modificar sua taxa de envio em função do congestionamento? • Algoritmo com duas técnicas: 1. Diminuição multiplicativa: • TCP-Reno – executado quando há três ACKs duplicados – Reduz janela à metade da janela atual de transmissão (cwnd = cwnd/2) – Retransmite segmento antes do esgotamento do temporizador (retransmissão rápida) 89 Controle de Congestionamento • Algoritmo com duas técnicas: 2. Recuperação aditiva (aumento aditivo) • Aumenta o tráfego após congestionamento – TCP-Tahoe » Aumento exponencial a cada ACK recebido até atingir um threshold – partida lenta » Aumento linear a partir do threshold até o tamanho da janela do receptor (prevenção de congestionamento) – TCP-Reno » Aumento linear a cada ACK recebido até atingir o tamanho da janela do receptor (recuperação rápida) 90 Controle de Congestionamento: Máquina de Estados 91 Controle de Congestionamento partida lenta prevenção de congestionamento TCP-TAHOE Controle de Congestionamento TCP-RENO Controle de Congestionamento • Variação do TCP-Reno: – TCP-NewReno: melhorou a recuperação rápida para múltiplas perdas de segmentos (a cada ACK parcial recebido durante a recuperação rápida será inferido como perdido o próximo segmento e é feita sua retransmissão) • Outras variantes: – TCP-CUBIC – TCP-HD – TCP-Vegas – ... Controle de Congestionamento 95 Dentes de Serra Controle de fluxo e Controle de Congestionamento 96 TCP: Tempo de Resposta (RTT) e Temporização P: como escolher valor do temporizador? • maior que o RTT – RTT pode variar • muito curto: temporização prematura – Retransmissões desnecessárias • muito longo: reação demorada à perda de segmentos P: como estimar RTT? • RTTamostra (RTTSample): tempo medido entre a transmissão do segmento e o recebimento do ACK correspondente – ignora retransmissões e ACKs cumulativos • RTTamostra vai variar, assim... – Usam-se várias medições recentes, não apenas o valor corrente • Algoritmo de Jacobson 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 Peso maior para as amostras recentes, pois elas revelam o estado atual da rede valor típico de x 0,125 TCP: Tempo de Resposta (RTT) e Temporização Escolhendo o intervalo de temporização para retransmissões • RTT_estimado mais uma “margem de segurança” Temporização = RTT_estimado + 4*DesvioRTT • Multiplicações por 4 são realizadas com um único deslocamento de inteiro • Reduz o número de retransmissões, pois menos de 1% dos segmentos chega com atraso de 4*DesvioRTT DesvioRTT = (1-y)* DesvioRTT + y*|RTT_amostra - RTT_estimado| y= 0,25 TCP - Geração de ACK 100 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 nº de seq. maior que esperado lacuna chegada desegmento 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, envia ACK envio imediato de um único ACK cumulativo reconhecendo ambos segmentos envio imediato de ACK duplicado, indicando nº de seq. do próximo byte esperado ACK imediato Exercícios • Para pensar agora: – A perda de pacotes sempre representa congestionamento em uma rede de computadores? 101 Exercícios Sugeridos e Seções para leitura • Kurose, & Ross; Redes de Computadores e a Internet, 5ª ed., 2010. Cap. 03. • Questões de Revisão: 3 a 11, 14 a 18 • Problemas: 1 a 10, 13, 22 a 25, 30 a 34, 37 • Seções: 3.1, 3.2, 3.3, 3.4, 3.5 e 3.7 102 Bibliografia • Tanenbaum, & Wetherall; Redes de Computadores, 5ª ed., 2011 Cap. 06 • Kurose, & Ross; Redes de Computadores e a Internet, 5ª ed., 2010 Cap. 03 Slides • Comer, D. E.; Interligação de Redes com TCP/IP: princípios, protocolos e arquitetura, Volume 1, 5ª ed., 2006 Cap. 12 103
Compartilhar