Capítulo 3: Camada de Transporte

Documentos relacionados
Capítulo 3: Camada de Transporte

Universidade Federal de Minas Gerais Departamento de Ciência da Computação

Capítulo 3. Camada de transporte

Camada de Transporte. Protocolos TCP e UDP

Planejamento. Revisão. Desempenho em Protocolos de Transporte

Redes de computadores e a Internet. Redes de computadores e a Internet. Prof. Gustavo Wagner. Capítulo 3. Camada de transporte

Redes de Computadores

Capítulo 3: Camada de Transporte. Multiplexação/desmultiplexação. Multiplexação/desmultiplexação. Multiplexação/desmultiplexação: exemplos

Capítulo 3: Camada de Transporte. Multiplexação/desmultiplexação. Serviços e protocolos de transporte. Antônio Abelém abelem@ufpa.

SSC0641 Redes de Computadores

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

PTC Aula Princípios da transferência de dados confiável 3.5 Transporte orientado para conexão: TCP

Protocolos com paralelismo (pipelining) Pipelining: aumento da utilização

TCP - controle de fluxo

TCP - controle de fluxo

Redes de Computadores

SSC0641 Redes de Computadores

Camada de Transporte. Redes Industriais Rone Ilídio UFSJ CAP

Nível de Transporte Portas, Protocolos UDP e TCP

TCP - formato do segmento. Formato do segmento TCP (fonte: Kurose)

Redes de computadores. Protocolo TCP

Redes de Computadores

Redes de computadores e a Internet. Capítulo 3. Camada de transporte

Redes de Computadores Camada de Transporte Protocolo TCP

Fragmentos das máquinas de estados finitos do RDT 2.2 (fonte: Kurose)

Redes de Computadores

Capítulo 3 Camada de transporte

TCP: Visão geral RFCs: 793, 1122, 1323, 2018, TCP: nos. de seq. e ACKs. TCP: estrutura do segmento. TCP: Tempo de Resposta (RTT) e Temporização

Arquitetura de Redes de Computadores

Camada de Transporte Transferindo Mensagem entre Processos

PTC Aula Princípios do controle de congestionamento 3.7 Controle de congestionamento no TCP

SSC0641 Redes de Computadores

Capítulo 3: Camada de Transporte

Redes de Computadores

Capítulo 3 Camada de transporte

Redes de Computadores e a Internet

PTC Aula Princípios da transferência de dados confiável. (Kurose, Seções 3.4 e 3.5) 28/04/2017

Camada de Transporte

Curso de Redes de Computadores 2010

Camada de Transporte. Processo: Instância de uma aplicação que está. 3: Camada de Transporte 3a-1

Capítulo 3 Camada de transporte

Redes de Computadores e a Internet

Redes de Computadores

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581

PTC Aula Transporte orientado para conexão: TCP. (Kurose, p ) (Peterson, p e ) 23/05/2017

PTC Aula A camada de transporte. (Kurose, p ) 15/03/2017

Redes de Computadores I

3Camada de transporte

Causas/custos do congestionamento: cenário 1

Protocolos TCP e UDP. Protocolo TCP. Protocolo TCP. A necessidade de uma comunicação segura: Transmission Control Protocol

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581

Curso de Redes de Computadores

AULA 3 - REDES. Prof. Pedro Braconnot Velloso

Redes de Computadores e Aplicações. Aula 43 - Camada de Transporte TCP (Transmission Control Protocol)

Curso de Redes de Computadores

TCP 1 TCP. Manuel P. Ricardo

Redes de Computadores

Camada de transporte. Serviços

PROTOCOLOS DE COMUNICAÇÃO

Capítulo 3: Camada de Transporte

Camada de Transporte

Camada de Transporte Parte II Gerson Porciúncula 5 semestre

Redes de Computadores

Redes de computadores e a Internet. Capítulo 3. Camada de transporte

Redes de Computadores RES 12502

Capítulo 3 Camada de Transporte

Redes TCP/IP. Prof. M.Sc. Alexandre Fraga de Araújo. INSTITUTO FEDERAL DO ESPÍRITO SANTO Campus Cachoeiro de Itapemirim

Redes de Computadores Aula 5

Redes de Computadores

Camada de Transporte. Protocolos TCP e UDP

TCP - multiplexação/demultiplexação

Redes de computadores e a Internet

TCP Round Trip Time e temporização

EEL878 - Redes de Computadores I

EEL878 - Redes de Computadores I. Prof. Luís Henrique Maciel Kosmalski Costa.

SSC0641 Redes de Computadores

Arquitetura de Redes TCP/IP. Camada de Transporte

Serviços de Comunicações Capítulo 3

: TMS M

Roteiro Resumido. Camada de Transporte. Parte III. Camada de Transporte. Camada de Transporte. Redes de Computadores 25/4/2017

Slides e Notas de Aula. Adriano Mauro Cansian. adriano@ieee.org

Protocolo de transporte em tempo-real (Real- Time Transport Protocol) Definido na RFC 3350 Normalmente usado sobre o UDP Serviços

Capítulo 6. A camada de transporte

SSC0641 Redes de Computadores

Camada de Transporte Protocolos TCP e UDP

Rede de computadores Protocolos UDP. Professor Carlos Muniz

Redes de Computadores. Prof. André Y. Kusumoto

Camada de transporte. Camada de transporte

Redes de Computadores

Roteiro Resumido. Camada de Transporte. Parte III. Camada de Transporte. Camada de Transporte. Redes de Computadores 14/08/2015

Redes de Comunicações 2. Camada Transporte: TCP e UDP

TRANSPORTE. Prof. Me. Hélio Esperidião

Protocolo de transporte em tempo-real (Real- Time Transport Protocol) Definido na RFC 3350 Normalmente usado sobre o UDP Serviços

Capítulo 3: Camada de Transporte

Jéfer Benedett Dörr

Cap. 03 Camada de Transporte

Jéfer Benedett Dörr

GA-027 Redes de Computadores

TCP - estabelecimento de conexão

Capítulo 3: Camada de Transporte

Transcrição:

Serviços e protocolos de transporte Capítulo 3: Camada de Transporte Antônio Abelém Abelém@ufpa.br provê comunicação lógica entre processos de executando em hospedeiros diferentes protocolos de transporte executam em sistemas terminais serviços das camadas de transporte X : camada de : dados transferidos entre sistemas camada de transporte: dados transferidos entre processos depende de, estende serviços da camada de transporte transporte lógico fim a fim transporte 3: Camada de Transporte 3a-1 3: Camada de Transporte 3a-2 Protocolos da camada de transporte UDP: User Datagram Protocol [RFC 768] Serviços de transporte na Internet: entrega confiável, ordenada, ponto a ponto (TCP) congestionamento controle de fluxo 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: tempo-real garantias de banda multiponto confiável transporte transporte lógico fim a fim transporte 3: Camada de Transporte 3a-3 Protocolo de transporte da Internet mínimo, sem frescura, Serviço melhor esforço, segmentos UDP podem ser: perdidos entregues à fora de ordem do remesso sem conexão: não há setup UDP entre remetente, receptor 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 3: Camada de Transporte 3a-4

Mais sobre UDP muito utilizado para apls. de meios contínuos (voz, vídeo) tolerantes de perdas sensíveis à taxa de transmissão outros usos de UDP (por quê?): DNS (nomes) SNMP (gerenciamento) transferência confiável com UDP: incluir confiabilidade na camada de recuperação de erro específica à apl.! Comprimento em bytes do segmento UDP, incluindo cabeçalho porta origem comprimento 32 bits Dados de (mensagem) porta dest. checksum UDP segment format 3: Camada de Transporte 3a-5 Checksum UDP Meta: detecta erro (e.g., bits invertidos) no segmento transmitido Remetente: trata conteúdo do segmento como sequência de inteiros de 16-bits campo checksum zerado checksum: soma (adição usando complemento de 1) do conteúdo do segmento remetente coloca complemento do valor da soma no campo checksum de UDP Receiver: computa checksum do segmento recebido verifica se checksum computado é zero: NÃO - erro detectado SIM -nenhumerro detectado. Mas ainda pode ter erros? Veja depois. 3: Camada de Transporte 3a-6 Princípios de Transferência confiável de dados (rdt) importante nas camadas de transporte, na lista dos 10 tópicos mais importantes em s! Transferência confiável de dados (rdt): como começar rdt_send(): chamada de cima, (p.ex.,pela apl.). Dados recebidos p/ entregar à camada sup. do receptor deliver_data(): chamada por rdt p/ entregar dados p/ camada superior send side receive side características do canal não confiável determinam a complexidade de um protocolo de transferência confiável de dados (rdt) udt_send(): chamada por rdt, p/ transferir pacote pelo canal ñ confiável ao receptor rdt_rcv(): chamada quando pacote chega chega no lado receptor do canal 3: Camada de Transporte 3a-7 3: Camada de Transporte 3a-8

Transferência confiável de dados (rdt): como começar Iremos: desenvolver incrementalmente os lados remetente, receptor do protocolo RDT considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos sentidos! Rdt1.0: transferência confiável usando um canal confiável canal subjacente perfeitamente confiável nãotem errosde bits não tem perda de pacotes Rdt2.0: canal com erros de bits canal subjacente pode inverter bits no pacote lembre-se: checksum UDP pode detectar erros de bits a questão: como recuperar dos erros? reconhecimentos (ACKs): receptor avisa explicitamente ao remetente que pacote chegou bem reconhecimentos negativos (NAKs): receptor avisa explicitamente ao remetente que pacote tinha erros remetente retransmite pacote ao receber um NAK novos mecanismos em rdt2.0 (além do rdt1.0): deteção de erros realimentação pelo receptor: msgs de controle (ACK,NAK) receptor->remetente 3: Camada de Transporte 3a-9 3: Camada de Transporte 3a-10 rdt2.0 tem uma falha fatal! rdt2.1: discussão O queacontecese ACK/NAK com erro? Remetente não sabe o que passou no receptor! não se pode apenas retransmitir: possibilidade de pacotes duplicados O que fazer? remetente usa ACKs/NAKs p/ ACK/NAK do receptor? E se perder ACK/NAK do remetente? retransmitir, mas pode causar retransmissão de pacote recebido certo! Lidando c/ duplicação: remetente inclui número de sequência p/ cada pacote remetente retransmite pacote atual se ACK/NAK recebido com erro receptor descarta (não entrega) pacote duplicado para e espera Remetente envia um pacote, e então aguarda resposta do receptor 3: Camada de Transporte 3a-11 Remetente: no. de seq no pacote bastam dois nos. de seq. (0,1). Por quê? deve checar se ACK/NAK recebido tinha erro duplicou o no. de estados estado deve lembrar se pacote corrente tem no. de seq. 0 or 1 Receptor: deve checar se pacote recebido é duplicado estado indica se no. de seq. esperado é 0 or 1 note: receptor não tem como saber se último ACK/NAK foi recebido bem pelo remetente 3: Camada de Transporte 3a-12

rdt2.2: um protocol sem NAKs rdt3.0: canais com erros e perdas mesma funcionalidade que rdt2.1, só com ACKs ao invés de NAK, receptor envia ACK p/ último pacote recebido bem receptor deve incluir explicitamente no. de seq do pacote reconhecido ACK duplicado no remetente resulta na mesma ação que o NAK: retransmite pacote atual 3: Camada de Transporte 3a-13 Nova suposição: canal subjacente também pode perder pacotes (dados ou ACKs) checksum, no. de seq., ACKs, retransmissões podem ajudar, mas não serão suficientes P: como lidar com perdas? remetente espera até ter certeza que se perdeu pacote ou ACK, e então retransmite 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): retransmissão será duplicada, mas uso de no. de seq. já cuida disto receptor deve especificar no. de seq do pacote sendo reconhecido requer temporizador 3: Camada de Transporte 3a-14 rdt3.0 em ação rdt3.0 em ação 3: Camada de Transporte 3a-15 3: Camada de Transporte 3a-16

Desempenho de rdt3.0 rdt3.0: operação para e espera rdt3.0 funciona, porém seu desempenho é muito ruim exemplo: de 1 Gbps, retardo fim a fim de 15 ms, pacote de 1KB: Utilização = T transmitir = 8kb/pacote 10**9 b/seg = 8 microseg U sender = L / R RTT + L / R =.008 30.008 = 0.00027 1o bit do pacote transmitido, t = 0 Último bit pkt transmitido, t = L / R remetente RTT Chegada ACK, envia próx pkt, t = RTT + L / R receptor 1o bit do pacote recebido Último bit do pacote recebido, envio do ACK. U sender - fração do tempo do remetente ocupado pac. de 1KB a cada 30 mseg -> vazão de 33kB/seg num de 1 Gbps protocolo limita uso dos recursos físicos! U sender = L / R RTT + L / R =.008 30.008 = 0.00027 3: Camada de Transporte 3a-17 3: Camada de Transporte 3a-18 Protocolos dutados (pipelined) Volta-N Dutagem (pipelining): remetente admite múltiplos pacotes em trânsito, ainda não reconhecidos faixa de números de seqüência deve ser aumentada buffers no remetente e/ou no receptor Remetente: no. de seq. de k-bits no cabeçalho do pacote admite janela de até N pacotes consecutivos não reconhecidos Duas formas genéricas de protocolos dutados: volta-n, retransmissão seletiva 3: Camada de Transporte 3a-19 ACK(n): reconhece todos pacotes, até e inclusive no. de seq n - ACK cumulativo pode receber ACKs duplicados (veja receptor) temporizador para cada pacote em trânsito timeout(n): retransmite pacote n e todos os pacotes com no. de seq maiores na janela 3: Camada de Transporte 3a-20

Volta-N receptor simples: Volta-N em ação usaapenasack: sempreenviaack parapacote recebido bem com o maior no. de seq. em-ordem pode gerar ACKs duplicados só precisa se lembrar do expectedseqnum pacote fora de ordem: descarta (não armazena) -> receptor não usa buffers! manda ACK de pacote com maior no. de seq em-ordem 3: Camada de Transporte 3a-21 3: Camada de Transporte 3a-22 Retransmissão seletiva Retransmissão seletiva: janelas de remetente, receptor receptor reconhece individualmente todos os pacotes recebidos corretamente 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 temporizador de remetente para cada pacote sem ACK janela do remetente N nos. de seq consecutivos outra vez limita nos. de seq de pacotes enviados, mas ainda não reconhecidos 3: Camada de Transporte 3a-23 3: Camada de Transporte 3a-24

Retransmissão seletiva remetente 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 receptor pacote n em [rcvbase, rcvbase+n-1] envia ACK(n) fora de ordem: buffer 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 3: Camada de Transporte 3a-25 Retransmissão seletiva em ação 3: Camada de Transporte 3a-26 Sumário dos mecanismos de rdt TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 Mecanismos Função 3: Camada de Transporte 3a-27 socket door ponto a ponto: 1 remetente, 1 receptor fluxo de bytes, ordenados, confiável: não estruturado em msgs dutado: tam. da janela ajustado por controle de fluxo e congestionamento do TCP buffers de envio e recepção application writes data TCP send buffer segment application reads data TCP receive buffer socket door transmissão full duplex: fluxo de dados bidirecional na mesma conexão MSS: tamanho máximo de segmento orientado a conexão: handshaking (troca de msgs de controle) inicia estado de remetente, receptor antes de trocar dados fluxo controlado: receptor não será afogado 3: Camada de Transporte 3a-28

TCP: estrutura do segmento URG: dados urgentes (pouco usados) ACK: no. ACK válido PSH: envia dados já (pouco usado) RST, SYN, FIN: gestão de conexão (comandos de estabelecimento, liberação) checksum Internet (como UDP) 32 bits no. porta origem no. porta dest tam. cab. número de seqüência número de reconhecimento sem uso checksum UAP R S F janela receptor ptr dados urg. Opções (tam. variável) dados da (tam. variável) contagem de dados por bytes (não segmentos!) no. bytes rcpt quer aceitar TCP: cenários de retransmissão temporização tempo Estação A Seq=92, 8 bytes de dados X perda Estação B ACK=100 Seq=92, 8 bytes de dados ACK=100 cenário do ACK perdido T. p/ Seq=100 Temp.p/ Seq=92 tempo Temp.p/ Seq=92 Host A Seq=100, 20 bytes de dados ACK=100 Host B Seq=92, 8 bytes de dados ACK=120 Seq=92, 8 bytes de dados ACK=120 temporização prematura, 3: Camada de Transporte 3a-29 3: Camada de Transporte 3a-30 TCP: cenários de retransmissão (cont) TCP geração de ACKs [RFCs 1122, 2581] SendBase = 120 timeout Host A Host B Seq=92, 8 bytes data Seq=100, 20 bytes data X loss ACK=120 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 no. de seq. maior que esperado -> lacuna 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 time ACKs cumulativos chegada de segmento que preenche a lacuna parcial ou completamente ACK imediato se segmento no início da lacuna 3: Camada de Transporte 3a-31 3: Camada de Transporte 3a-32

TCP: Controle de Fluxo controle de fluxo remetente não esgotaria buffers do receptor por transmitir muito, ou muito rápidamente RcvBuffer = tamanho do Buffer de recepção RcvWindow = espaço vazio no Buffer buffering pelo receptor receptor: explicitamente avisa o remetente da quantidade de espaço livre disponível (muda dinamicamente) 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 3: Camada de Transporte 3a-33 Princípios de Controle de Congestionamento Congestionamento: informalmente: muitas fontes enviando muitos dados muito rapidamente para a poder tratar diferente de controle de fluxo! manifestações: perda de pacotes (esgotamento de buffers em roteadores) longos atrasos (enfileiramento nos buffers dos roteadores) um dos 10 problemas mais importantes em s! 3: Camada de Transporte 3a-34 TCP: Controle de Congestionamento TCP: Controle de Congestionamento controle fim a fim (sem apoio da ) taxa de transmissão limitada pela tamanho da janela de congestionamento, Congwin: Congwin LastByteSent-LastByteAcked mim{congwin, RcvWindow} w segmentos, cada um c/ MSS bytes, enviados por RTT: throughput = w * MSS RTT Bytes/sec 3: Camada de Transporte 3a-35 sondagem para banda utilizável: idealmente: transmitir o mais rápido possível (Congwin o máximo possível) sem perder pacotes. aumentar Congwin até sinais de congestionamento. Qdo TCP detecta congestionamento diminui Congwin, depois volta à sondagem (aumento) novamente. duas fases partida lenta evitar congestionamento variáveis importantes: Congwin threshold: define limiar entre fases de partida lenta, controle de congestionamento 3: Camada de Transporte 3a-36

TCP: Controle de Congestionamento Como o emissor percebe o congestionamento? Evento de perda = timeout ou 3 acks repetidos O emissor TCP reduz a taxa (CongWin) após um evento de perda. Três mecanismos de controle: AADM (Aumento Aditivo, Decremento Multiplicativo) Partida lenta ( slow start ) TCP AADM Aumento aditivo: aumenta janela em 1 em cada RTT sem perda 24 Kbytes 16 Kbytes 8 Kbytes congestion window Decremento multiplicativo: diminui janela por fator de 2 após um evento de perda Comportamento conservador após eventos de timeout Conexão TCP de longa duração time 3: Camada de Transporte 3a-37 3: Camada de Transporte 3a-38 TCP: Partida lenta TCP: Partida lenta Quando a conexão começa, CongWin = 1 MSS Exemplo: MSS = 500 bytes & RTT = 200 msec Taxa inicial = 20 kbps Banda disponível deve ser >> MSS/RTT Algoritmo Partida Lenta initializa: Congwin = 1 for (cada segmento c/ ACK) Congwin++ until (evento de perda OR CongWin > threshold) RTT Estação A Estação B um segmento dois segmentos quqtro segmentos Desejável aumentar essa taxa rapidamente. Aumenta exponencialmente o tamanho da janela a cada RTT sem perda. Resumo: Taxa inicial é lenta, mas cresce exponencialmente. tempo 3: Camada de Transporte 3a-39 3: Camada de Transporte 3a-40

Refinamento Após 3 ACKs repetidos: CongWin écortada pela metade Em seguida, a janela cresce linearmente. Porém após evento de timeout: CongWin éajustada para 1 MSS; A janela então cresce exponencialmente Até um valor limite ( threshold ), depois cresce linearmente. Filosofia: 3 ACKs repetidos indicam capacidade da em entregar segmentos timeout antes de 3 ACKs repetidos é mais alarmante 3: Camada de Transporte 3a-41 Refinamento (mais) P: Quando o crescimento Implementação: da janela deve passar de Threshold variável Na ocorrência de evento exponencial para linear? de perda, Threshold é R: quando CongWin chegar ajustada para 1/2 de valor de CongWin a 1/2 do seu valor antes imediatamente antes do do timeout. evento de perda. 3: Camada de Transporte 3a-42 Refinamento (mais) Resumo: Controle Congestionamento TCP congestion window size (segments) 14 12 10 8 6 4 2 0 TCP Tahoe threshold TCP Reno 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Rounds detransmissão Quando CongWin está abaixo do Threshold, o emissor se encontra na fase de slow-start, janela cresce exponenciamente. Quando CongWin está acima do Threshold, o emissor se encontra na fase de evitar congestionamento, janela cresce linearmente. Quando um triplo ACK repetido ocorre, Threshold é ajustada para CongWin/2 and CongWin ajustada para Threshold. Series1 Series2 Quando ocorre timeout, Threshold é ajustada para CongWin/2 and CongWin is set to 1 MSS. 3: Camada de Transporte 3a-43 3: Camada de Transporte 3a-44