Capítulo 3 Camada de transporte Nota sobre o uso destes slides ppt: Estamos disponibilizando estes slides gratuitamente a todos (professores, alunos, leitores). Eles estão em formato do PowerPoint para que você possa incluir, modificar e excluir slides (incluindo este) e o conteúdo do slide, de acordo com suas necessidades. Eles obviamente representam muito trabalho da nossa parte. Em retorno pelo uso, pedimos apenas o seguinte: Se você usar estes slides (por exemplo, em sala de aula) sem muita alteração, que mencione sua fonte (afinal, gostamos que as pessoas usem nosso livro!). Se você postar quaisquer slides sem muita alteração em um site Web, que informe que eles foram adaptados dos (ou talvez idênticos aos) nossos slides, e inclua nossa nota de direito autoral desse material. Obrigado e divirta-se! JFK/KWR Todo o material copyright 1996-2009 J. F Kurose e K. W. Ross, Todos os direitos reservados. slide 1 © 2010 Pearson Prentice Hall. Todos os direitos reservados. © 2010 Pearson Prentice Hall. Todos os direitos reservados. Capítulo 3 Camada de transporte Nota sobre o uso destes slides ppt: Partes dos slides originais foram suprimidas ou alteradas para adaptar o material à ementa da disciplina Redes 1 da Unirio. Todo o material copyright 1996-2009 J. F Kurose e K. W. Ross, Todos os direitos reservados. slide 2 slide 2 2010Pearson PearsonPrentice PrenticeHall. Hall.Todos Todosososdireitos direitosreservados. reservados. ©©2010 Capítulo 3: Camada de transporte Objetivos do capítulo: entender princípios por trás dos serviços da camada de transporte: slide 3 multiplexação/demultiplexação transferência de dados confiável controle de fluxo controle de congestionamento aprender sobre os protocolos da camada de transporte na Internet: UDP: transporte sem conexão TCP: transporte orientado a conexão controle de congestionamento TCP © 2010 Pearson Prentice Hall. Todos os direitos reservados. Capítulo 3: Esboço 3.1 Serviços da camada de transporte 3.2 Multiplexação e demultiplexação 3.3 Transporte não orientado para conexão: UDP 3.4 Princípios da transferência confiável de dados slide 4 3.5 Transporte orientado para conexão: TCP estrutura de segmento transferência confiável de dados controle de fluxo gerenciamento da conexão 3.6 Princípios de controle de congestionamento 3.7 Controle de congestionamento no TCP © 2010 Pearson Prentice Hall. Todos os direitos reservados. Serviços e protocolos de transporte oferecem comunicação lógica entre processos de aplicação rodando em hospedeiros diferentes protocolos de transporte rodam em sistemas finais lado remetente: divide as msgs da aplicação em segmentos, passa à camada de rede lado destinatário: remonta os segmentos em msgs, passa à camada de aplicação mais de um protocolo de transporte disponível às aplicações Internet: TCP e UDP slide 5 aplicação transporte rede enlace física aplicação transporte rede enlace física © 2010 Pearson Prentice Hall. Todos os direitos reservados. Camada de transporte versus rede camada de rede: comunicação lógica entre hospedeiros camada de transporte: comunicação lógica entre processos slide 6 conta com e amplia os serviços da camada de rede analogia com a família: 12 crianças mandando carta a 12 crianças processos = crianças msgs da aplicação = conteúdo das cartas hospedeiros = casas protocolo de transporte = envelopes, identificação dos correpondentes e entrega nos correios protocolo da camada de rede = serviço postal © 2010 Pearson Prentice Hall. Todos os direitos reservados. Protocolos da camada de transporte da Internet remessa confiável mantendo aplicação transporte rede enlace física ordem das mensagens (TCP) estabelecimento da conexão controle de congestionamento controle de fluxo rede enlace física rede enlace física rede enlace física remessa não confiável e sem garantia de ordem: UDP extensão sem luxo do IP, apenas agregando números das porta de protocolo serviços de transporte não network rede data link enlace physical física rede enlace física rede enlace física aplicação transporte rede enlace física disponíveis: slide 7 garantias de atraso garantias de largura de banda © 2010 Pearson Prentice Hall. Todos os direitos reservados. Capítulo 3: Esboço 3.1 Serviços da camada de transporte 3.2 Multiplexação e demultiplexação 3.3 Transporte não orientado para conexão: UDP 3.4 Princípios da transferência confiável de dados slide 8 3.5 Transporte orientado para conexão: TCP estrutura de segmento transferência confiável de dados controle de fluxo gerenciamento da conexão 3.6 Princípios de controle de congestionamento 3.7 Controle de congestionamento no TCP © 2010 Pearson Prentice Hall. Todos os direitos reservados. Processos se comunicando processo: programa rodando dentro de um hospedeiro no mesmo hospedeiro, dois processos se comunicam usando a comunicação entre processos (definida pelo SO). processos em hospedeiros diferentes se comunicam trocando mensagens slide 9 processo cliente: processo que inicia a comunicação processo servidor: processo que espera para ser contactado © 2010 Pearson Prentice Hall. Todos os direitos reservados. Endereçando processos para receber mensagens, processo deve ter um Resp.: Não, muitos processos podem estar rodando no mesmo hospedeiro dispositivo hospedeiro tem Identificador inclui endereço IP e endereço IP exclusivo de 32 números de porta associados ao bits processo no hospedeiro. exercício: use ipconfig do Num host, cada processo que usa a comando prompt para obter rede possui um número de porta seu endereço IP (Windows) servidores usam portas pré Perg.: Basta o endereço IP do definidas hospedeiro em que o processo clientes usam portas aleatórias é executado para identificar o Exemplos de número de porta: processo? servidor HTTP: 80 servidor de correio: 25 identificador slide 10 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Sockets processo envia/recebe mensagens de/para seu socket socket semelhante à porta slide 11 processo enviando empurra mensagem pela porta processo enviando conta com infraestrutura de transporte no outro lado da porta, que leva a mensagem ao socket no processo receptor pode ser TCP ou UDP hospedeiro ou servidor processo hospedeiro ou servidor controlado pelo desenvolvedor da aplicação processo socket socket TCP com buffers, variáveis Internet TCP com buffers, variáveis controlado pelo OS © 2010 Pearson Prentice Hall. Todos os direitos reservados. Multiplexação/ demultiplexação demultiplexação no destinatário: multiplexação no remetente: entregando segmentos recebidos ao socket correto colhendo dados de múltiplos sockets, envelopando dados com cabeçalho (usados depois para demultiplexação) aplicação P3 transporte rede aplicação transporte rede P2 = processo P4 aplicação transporte rede enlace enlace enlace física física física hospedeiro 1 slide 12 P1 P1 = socket hospedeiro 2 hospedeiro 3 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Como funciona a demultiplexação hospedeiro recebe datagramas IP cada datagrama tem endereço IP de origem, endereço IP de destino cada datagrama carrega 1 segmento da camada de transporte cada segmento tem número de porta de origem, destino hospedeiro usa endereços IP & números de porta para direcionar segmento ao socket apropriado slide 13 32 bits # porta origem # porta destino outros campos de cabeçalho dados da aplicação (mensagem) formato do segmento TCP/UDP © 2010 Pearson Prentice Hall. Todos os direitos reservados. Demultiplexação não orientada para conexão quando hospedeiro servidor cria sockets com números de porta definidos: DatagramSocket mySocket1 = new DatagramSocket(12534); socket UDP identificado por tupla de dois elementos: (endereço IP destino, número porta destino) slide 14 recebe segmento UDP: verifica número de porta de destino no segmento direciona segmento UDP para socket com esse número de porta datagramas IP com diferentes endereços IP de origem e/ou números de porta de origem direcionados para o mesmo socket © 2010 Pearson Prentice Hall. Todos os direitos reservados. Demultiplexação não orientada a conexão (UDP) DatagramSocket serverSocket = new DatagramSocket(6428); P2 P1 P1 P3 SP: 6428 SP: 6428 DP: 9157 DP: 5775 SP: 9157 cliente IP: A DP: 6428 SP: 5775 servidor IP: C DP: 6428 Cliente IP:B SP (“Source Port”) oferece “porta de retorno” associada ao IP de retorno. (DP = Destination Port) slide 15 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Demultiplexação orientada para conexão socket TCP identificado por tupla de 4 elementos: endereço IP de origem número de porta de origem endereço IP de destino número de porta de destino hospedeiro destinatário hospedeiro servidor pode admitir muitos sockets TCP simultâneos: cada socket identificado por sua própria tupla de 4 mesma porta de destino associada c/ cada socket usa os quatro valores para servidores Web têm diferentes sockets para direcionar segmento ao cada cliente conectando socket apropriado, pois HTTP não persistente terá podem haver conexões diferentes sockets para TCP em paralelo para o cada requisição mesmo processo slide 16 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Demultiplexação orientada a conexão (TCP): servidor Web threaded P1 P2 P4 P1P3 SP: 5775 DP: 80 S-IP: B D-IP:C SP: 9157 cliente IP: A slide 17 DP: 80 S-IP: A D-IP:C SP: 9157 servidor IP: C DP: 80 S-IP: B D-IP:C cliente IP:B © 2010 Pearson Prentice Hall. Todos os direitos reservados. Capítulo 3: Esboço 3.1 Serviços da camada de transporte 3.2 Multiplexação e demultiplexação 3.3 Transporte não orientado para conexão: UDP 3.4 Princípios da transferência confiável de dados slide 18 3.5 Transporte orientado para conexão: TCP estrutura de segmento transferência confiável de dados controle de fluxo gerenciamento da conexão 3.6 Princípios de controle de congestionamento 3.7 Controle de congestionamento no TCP © 2010 Pearson Prentice Hall. Todos os direitos reservados. UDP: User Datagram Protocol [RFC 768] protocolo de transporte da Internet “sem luxo”, básico serviço de “melhor esforço”, segmentos UDP podem ser: perdidos entregues à aplicação fora da ordem sem conexão: slide 19 sem handshaking entre remetente e destinatário UDP cada segmento UDP tratado independente dos outros Por que existe um UDP? sem estabelecimento de conexão (que pode gerar atraso) simples: sem estado de conexão no remetente, destinatário cabeçalho de segmento pequeno sem controle de congestionamento: UDP pode transmitir o mais rápido possível © 2010 Pearson Prentice Hall. Todos os direitos reservados. UDP: mais normalmente usado para 32 bits streaming de aplicações de multimídia tamanho, # porta origem # porta dest. tolerante a perdas em bytes, do soma verif. tamanho segmento UDP, sensível à taxa incluindo cabeçalho outros usos do UDP DNS (resolução de nomes) SNMP (gerência de redes) para se ter transferência confiável por UDP: recuperação de erro tem que ser realizada pela aplicação! slide 20 dados da aplicação (mensagem) formato de segmento UDP © 2010 Pearson Prentice Hall. Todos os direitos reservados. Capítulo 3: Esboço 3.1 Serviços da camada de transporte 3.2 Multiplexação e demultiplexação 3.3 Transporte não orientado para conexão: UDP 3.4 Princípios da transferência confiável de dados slide 21 3.5 Transporte orientado para conexão: TCP estrutura de segmento transferência confiável de dados controle de fluxo gerenciamento da conexão 3.6 Princípios de controle de congestionamento 3.7 Controle de congestionamento no TCP © 2010 Pearson Prentice Hall. Todos os direitos reservados. Transferência confiável de dados: introdução rdt_send(): chamado de cima, (p. e., pela apl.). Dados passados para remeter à camada superior do destinatário lado remetente udt_send(): chamado pela rdt, para transferir pacote por canal não confiável ao destinatário slide 22 deliver_data(): chamado pela rdt para remeter dados para cima lado destinatário rdt_rcv(): chamado quando pacote chega no lado destinatário do canal © 2010 Pearson Prentice Hall. Todos os direitos reservados. Transferência confiável de dados: Pacotes podem se perder ou comrromper soma de verificação ou CRC para detectar erros reconhecimentos (ACKs): destinatário diz explicitamente ao remetente que o pacote foi recebido OK Porém ACKs podem também se perder ou corromper emissor não fica eternamente esperando ACKs estipula timeout para a chegada de um ACK reenvia pacote se timeout estourar duplicatas podem chegar no destinatário caso timeout no emissor estoure antes da chegada do ACK emissor precisa saber de qual pacote se refere o ACK pacotes e ACKs slide 23 numerados p/ identificar duplicatas © 2010 Pearson Prentice Hall. Todos os direitos reservados. Transferência confiável de dados: tratando de duplicatas: destinatário descarta (não sobe para aplicação) pacote duplicado e envia novo ACK emissor ignora ACKs duplicados ACKs cumulativos: envia ACK para último pacote recebido numa sequência emissor entende que pacotes anteriores foram recebidos corretamente slide 24 pressupõe (re-)ordenamento de pacotes no destinatário © 2010 Pearson Prentice Hall. Todos os direitos reservados. Transferência confiável de dados: Stop-and-Wait Só envia novo pacote quando o anterior é confirmado slide 25 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Transferência confiável de dados: Stop-and-Wait slide 26 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Transferência confiável de dados: Stop-and-Wait slide 27 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Paralelismo: utilização aumentada Aumento de utilização por fator de 3! slide 28 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Protocolos com paralelismo paralelismo: remetente permite múltiplos pacotes “no ar”, ainda a serem reconhecidos intervalo de números de sequência deve ser aumentado buffering no remetente e/ou destinatário duas formas genéricas de protocolo com paralelismo: Go-Back-N, repetição seletiva slide 29 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Protocolos com paralelismo Go-back-N: visão geral remetente: até N pacotes não reconhecidos no canal destinatário: só envia ACKs cumulativos remetente: tem temporizador para pacote sem ACK mais antigo slide 30 não envia ACK se houver uma lacuna (pacote recebido fora de ordem) se o temporizador expirar: retransmite todos os (até N) pacotes sem ACK Repetição seletiva: visão geral remetente: até N pacotes não reconhecidos no canal destinatário: reconhece (ACK) pacotes individuais mas poderia trabalhar com ACK cumulativo remetente: mantém temporizador para cada pacote sem ACK se o temporizador expirar: retransmite apenas o pacote sem ACK © 2010 Pearson Prentice Hall. Todos os direitos reservados. Go-Back-N remetente: # seq. de k bits no cabeçalho do pacote “janela” de até N pcts consecutivos sem ACK permitidos ACK(n): ACK de todos pcts até inclusive # seq. n – “ACK cumulativo” pode receber ACKs duplicados (ver destinatário) temporizador para cada pacote no ar timeout(n): retransmite pct n e todos pcts com # seq. mais alto na janela slide 31 © 2010 Pearson Prentice Hall. Todos os direitos reservados. GBN em operação slide 32 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Repetição seletiva: janelas de remetente, destinatário slide 33 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Repetição seletiva em operação slide 34 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Capítulo 3: Esboço 3.1 Serviços da camada de transporte 3.2 Multiplexação e demultiplexação 3.3 Transporte não orientado para conexão: UDP 3.4 Princípios da transferência confiável de dados slide 35 3.5 Transporte orientado para conexão: TCP estrutura de segmento transferência confiável de dados controle de fluxo gerenciamento da conexão 3.6 Princípios de controle de congestionamento 3.7 Controle de congestionamento no TCP © 2010 Pearson Prentice Hall. Todos os direitos reservados. TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 ponto a ponto: dados full duplex: um remetente, um destinatário cadeia de bytes confiável, em ordem paralelismo: congestionamento TCP e controle de fluxo definem tamanho da janela de transm. buffers de envio & recepção dados bidirecionais fluem na mesma conexão MSS: tamanho máximo do segmento em bytes orientado a conexão: estabelecimento de sessão inicia estado do remetente e destinatário antes da troca de dados fluxo controlado: remetente não sobrecarrega destinatário slide 36 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Estrutura do segmento TCP URG: dados urgentes (quase não usado) ACK: # ACK válido PSH: empurrar dados agora (quase não usado) RST, SYN, FIN: estab. conexão (comandos setup, teardown) soma de verificação da Internet (como em UDP) slide 37 32 bits porta origem porta destino número sequência contagem por bytes de dados (não segmentos!) número reconhecimento compr. não UA P R S F cab. usado janela recepção soma verificação ponteiro dados urg. # bytes destinatário pode aceitar opções (tamanho variável) dados da aplicação (tamanho variável) © 2010 Pearson Prentice Hall. Todos os direitos reservados. #s sequência e ACKs do TCP #’s de sequência: “número” do 1o byte dos dados do segmento, considerando cadeia de bytes sendo enviada ACKs: # seq do próximo byte esperado do outro lado usa ACK cumulativo cenário telnet simples slide 38 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Tempo de ida e volta e timeout do TCP P: Como definir o valor de timeout do TCP? maior que RTT, claro mas RTT varia! se muito curto: timeout prematuro retransmissões desnecessárias se muito longo: demora a reagir quando da perda de segmento slide 39 P: Como estimar o RTT? SampleRTT: tempo medido da transmissão do segmento até receber o ACK ignora retransmissões SampleRTT variará, queremos um RTT estimado que seja “o mais estável” faz média de vários SampleRTT’s recentes, não usa apenas SampleRTT atual © 2010 Pearson Prentice Hall. Todos os direitos reservados. Estimando RTT EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT média móvel exponencial ponderada influência da amostra passada diminui exponencialmente rápido valor típico: = 0,125 slide 40 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Timeout do TCP definindo o timeout EstimtedRTT mais “margem de segurança” grande variação em EstimatedRTT -> maior margem de seg. primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT: DevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT| (geralmente, = 0,25) depois definir intervalo de timeout TimeoutInterval = EstimatedRTT + 4*DevRTT slide 41 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Capítulo 3: Esboço 3.1 Serviços da camada de transporte 3.2 Multiplexação e demultiplexação 3.3 Transporte não orientado para conexão: UDP 3.4 Princípios da transferência confiável de dados slide 42 3.5 Transporte orientado para conexão: TCP estrutura de segmento transferência confiável de dados controle de fluxo gerenciamento da conexão 3.6 Princípios de controle de congestionamento 3.7 Controle de congestionamento no TCP © 2010 Pearson Prentice Hall. Todos os direitos reservados. Transferência confiável de dados no TCP TCP cria serviço de transferência confiável em cima do serviço não confiável do IP segmentos em paralelo ACKs cumulativos TCP usa único temporizador de retransmissão slide 43 retransmissões são disparadas por: eventos de timeout ACKs duplicados usa mecanismo de retransmissão seletiva © 2010 Pearson Prentice Hall. Todos os direitos reservados. TCP: cenários de retransmissão Hosp. A X loss Sendbase = 100 SendBase = 120 SendBase = 100 tempo Cenário de ACK perdido slide 44 Hosp. B Seq = 92 timeout Hosp. B SendBase = 120 Seq = 92 timeout timeout Hosp. A tempo Timeout prematuro © 2010 Pearson Prentice Hall. Todos os direitos reservados. timeout Host A Host B X perda SendBase = 120 tempo Cenário ACK cumulativo slide 45 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Retransmissão rápida Hosp. A seq # x1 seq # x2 seq # x3 seq # x4 seq # x5 Hosp. B X ACK x1 ACK x1 ACK x1 ACK x1 timeout ACKs duplicados três vezes tempo slide 46 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Capítulo 3: Esboço 3.1 Serviços da camada de transporte 3.2 Multiplexação e demultiplexação 3.3 Transporte não orientado para conexão: UDP 3.4 Princípios da transferência confiável de dados slide 47 3.5 Transporte orientado para conexão: TCP estrutura de segmento transferência confiável de dados controle de fluxo gerenciamento da conexão 3.6 Princípios de controle de congestionamento 3.7 Controle de congestionamento no TCP © 2010 Pearson Prentice Hall. Todos os direitos reservados. Controle de fluxo TCP controle de fluxo lado receptor da conexão TCP tem um buffer de recepção: remetente não estourará buffer do destinatário transmitindo muitos dados muito rapidamente espaço dados TCP processo da datagramas de buffer (atualmente) (no buffer) aplicação IP não usado processo da aplicação pode ser lento na leitura do buffer slide 48 serviço de compatibilização de velocidades: compatibiliza a taxa de envio do remetente com a de leitura da aplicação receptora © 2010 Pearson Prentice Hall. Todos os direitos reservados. Controle de fluxo TCP: como funciona espaço dados TCP processo da datagramas de buffer (atualmente) (no buffer) aplicação IP não usado rwnd RcvBuffer (suponha que destinatário TCP descarte segmentos fora de ordem) espaço de buffer não usado: = = slide 49 destinatário: anuncia espaço de buffer não usado incluindo valor de rwnd no cabeçalho do segmento remetente: limita # de bytes com ACKa rwnd garante que buffer do destinatário não estoura rwnd RcvBuffer-[LastByteRcvd LastByteRead] © 2010 Pearson Prentice Hall. Todos os direitos reservados. Capítulo 3: Esboço 3.1 Serviços da camada de transporte 3.2 Multiplexação e demultiplexação 3.3 Transporte não orientado para conexão: UDP 3.4 Princípios da transferência confiável de dados slide 50 3.5 Transporte orientado para conexão: TCP estrutura de segmento transferência confiável de dados controle de fluxo gerenciamento da conexão 3.6 Princípios de controle de congestionamento 3.7 Controle de congestionamento no TCP © 2010 Pearson Prentice Hall. Todos os direitos reservados. Gerenciamento da conexão TCP lembre-se: Remetente e destinatário TCP estabelecem “conexão” antes que troquem segmentos dados inicializa variáveis TCP: #s seq.: buffers, informação de controle de fluxo (p. e. RcvWindow) cliente: inicia a conexão Socket clientSocket = new Socket("hostname","port #"); servidor: contactado pelo cliente Socket connectionSocket = welcomeSocket.accept(); slide 51 apresentação de 3 vias: etapa 1: hosp. cliente envia segmento SYN do TCP ao servidor especifica # seq. inicial sem dados etapa 2: hosp. servidor recebe SYN, responde com segmento SYNACK servidor aloca buffers especifica # seq. inicial do servidor etapa 3: cliente recebe SYNACK, responde com segmento ACK, que pode conter dados © 2010 Pearson Prentice Hall. Todos os direitos reservados. fechando uma conexão: cliente fecha socket: clientSocket.close(); etapa 1: sistema final do cliente envia segmento de controle TCP FIN ao servidor etapa 2: servidor recebe FIN, responde com ACK. Fecha conexão, envia FIN. slide 52 etapa 3: cliente recebe FIN, responde com ACK entra em “espera temporizada” – responderá com ACK aos FINs recebidos etapa 4: servidor recebe ACK - conexão fechada Nota: Com pequena modificação, pode tratar de FINs simultâneos. © 2010 Pearson Prentice Hall. Todos os direitos reservados. Capítulo 3: Esboço 3.1 Serviços da camada de transporte 3.2 Multiplexação e demultiplexação 3.3 Transporte não orientado para conexão: UDP 3.4 Princípios da transferência confiável de dados slide 53 3.5 Transporte orientado para conexão: TCP estrutura de segmento transferência confiável de dados controle de fluxo gerenciamento da conexão 3.6 Princípios de controle de congestionamento 3.7 Controle de congestionamento no TCP © 2010 Pearson Prentice Hall. Todos os direitos reservados. Controle de congestionamento TCP: busca por largura de banda “procura por largura de banda”: aumenta taxa de transmissão no recebimento do ACK até por fim ocorrer perda; depois diminui taxa de transmissão continua a aumentar no ACK, diminui na perda (pois largura de banda disponível está mudando, dependendo de outras conexões na rede) taxa de emissão ACKs sendo recebidos, de modo que aumenta taxa X X perda e diminuição de taxa X X comportamento “dente de serra” do TCP X tempo slide 54 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Controle de congestionamento TCP: detalhes remetente limita taxa limitando número de bytes sem ACK “na pipeline”: LastByteSent-LastByteAcked cwnd cwnd: difere de rwnd (como, por quê?) remetente limitado por min(cwnd,rwnd) bytes cwnd aproximadamente, taxa = cwnd RTT bytes/seg cwnd é dinâmico, função do congestionamento de rede percebido slide 55 RTT ACK(s) © 2010 Pearson Prentice Hall. Todos os direitos reservados. Controle de congestionamento TCP: mais detalhes evento de perda de segmento: reduzindo cwnd timeout: sem resposta do destinatário corta cwnd para 1 3 ACKs duplicados: pelo menos alguns segmentos passando (lembre-se da retransmissão rápida) slide 56 corta cwnd pela metade, menos agressivamente do que no timeout ACK recebido: aumenta cwnd fase de partida lenta: aumento exponencialmente rápido (apesar do nome) no início da conexão, ou após o timeout prevenção de congestionamento: aumento linear AIMD: Aditive Increase, Multiplicative Decrease © 2010 Pearson Prentice Hall. Todos os direitos reservados. Tipos populares de TCP slide 57 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Resumo: controle de congestionamento TCP quando cwnd < ssthresh, remetente na fase de partida lenta, janela cresce exponencialmente. quando cwnd > = ssthresh, remetente está na fase de prevenção de congestionamento, janela cresce linearmente. quando ocorre o ACK duplicado triplo, ssthresh definido como cwnd/2, cwnd definido como ~ssthresh quando ocorre o timeout, ssthresh definido como cwnd/2, cwnd definido como 1 MSS. slide 58 © 2010 Pearson Prentice Hall. Todos os direitos reservados. Equidade do TCP objetivo da equidade: se K sessões TCP compartilharem o mesmo enlace de gargalo da largura de banda R, cada uma deve ter uma taxa média de R/K conexão TCP 1 conexão TCP 2 slide 59 capacidade de gargalo do roteador R © 2010 Pearson Prentice Hall. Todos os direitos reservados. Por que o TCP é justo? duas sessões concorrentes: aumento aditivo dá inclinação 1, pois vazão aumenta diminuição multiplicativa diminui vazão proporcionalmente R compartilhamento de largura de banda igual perda: diminui janela por fator de 2 prevenção de congestionamento: aumento aditivo perda: diminui janela por fator de 2 prevenção de cong.: aumento aditivo Vazão da conexão 1 slide 60 R © 2010 Pearson Prentice Hall. Todos os direitos reservados.