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

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

3: Nível de Transporte3b-1 TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 r Transmissão de dados bi- direccional: m Transmissão de dados bi- direccional.

Apresentações semelhantes


Apresentação em tema: "3: Nível de Transporte3b-1 TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 r Transmissão de dados bi- direccional: m Transmissão de dados bi- direccional."— Transcrição da apresentação:

1 3: Nível de Transporte3b-1 TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 r Transmissão de dados bi- direccional: m Transmissão de dados bi- direccional na mesma ligação m MSS: maximum segment size r Orientado-à-ligação: m handshaking (transferência de mensagens de controlo) Inicia o estado do emissor e do receptor antes de transferir os dados r Fluxo controlado: m Emissor não sobrecarrega o receptor r Ponto-a-ponto : m Um emissor, um receptor r Cadeia de bytes ordenada e fiável : m Não há fronteiras nas mensagens r pipelined : m TCP dimensão das janelas de controlo de congestão e de fluxo ajustável r Buffers no emissor e receptor socket door TCP Buffer de envio TCP Buffer de recepção socket door Aplicação Escrita de dados Aplicação Leitura de dados segmento

2 3: Nível de Transporte3b-2 TCP: estrutura do segmento # porto origem # porto destino 32 bits application data (variable length) Número sequência Número acknowledgment rcvr window size ptr urgent data checksum F SR PAU head len not used Opções (dimensão variável)

3 3: Nível de Transporte3b-3 TCP: estrutura do segmento # porto destino 32 bits application data (variable length) Número sequência Número acknowledgment rcvr window size ptr urgent data checksum F SR PAU head len not used Opções (dimensão variável) # porto origem r Nº de sequência e Nº de ACKS: m Contagem por bytes de dados m Não segmentos ! r Head Length em palavras de 32 b m Dimensão sem extensões 20 B r RCVR Window Size : m Nº de Bytes que o receptor espera receber r Opções : m Negociação de parâmetros MSS (usual 1500; 536; 512 B) Factor de escala p/ janela em ligações de alto débito

4 3: Nível de Transporte3b-4 TCP: estrutura do segmento # porto destino 32 bits application data (variable length) Número sequência Número acknowledgment rcvr window size ptr urgent data checksum F SR PAU head len not used Opções (dimensão variável) # porto origem r Flags de sinalização de informação urgente: m U – URG: dados que o nível superior do emissor sinalizou como urgentes m P – PSH: O receptor deve passar os dados para o nível superior imediata/ r Flags de controlo m A – ACK: valor válido no campo ACK m R- RST; S- SYN; F – FIN: estabelecimento e terminação da ligação r Ptr Urgent data m Apontador para o último byte de dados que contém dados urgentes

5 3: Nível de Transporte3b-5 TCP nº de sequência e ACK Seq. #s: m Nº da cadeia de bytes do primeiro byte do segmento de dados ACKs: m Nº de seq. do próximo byte esperado do outro lado m ACK acumulativo Q: Como é que o receptor processa segmentos for a de ordem ? m A: A especificação TCP não é clara, deixando esta questão para a implementação Host A Host B Seq=42, ACK=79, data = C Seq=79, ACK=43, data = C Seq=43, ACK=80 Utilizador digita C Sistema Terminal confirma (ACK) e ecoa o C Sistema Terminal recebe C e e ecoa de volta o C tempo Cenário simples de Telnet

6 3: Nível de Transporte3b-6 TCP: cenários de retransmissão Host A Seq=92, 8 bytes data ACK=100 loss timeout tempo Perda de ACK Host B X Seq=92, 8 bytes data ACK=100 Host A Seq=100, 20 bytes data ACK=100 Seq=92 timeout tempo Timeout antecipado, ACKs acumulativo Host B Seq=92, 8 bytes data ACK=120 Seq=92, 8 bytes data Seq=100 timeout ACK=120

7 3: Nível de Transporte3b-7 TCP: transferência de dados fiável Emissor simplificado, assume: wait for event wait for event evento: dados recebidos das aplicações dos níveis superiores evento: temporizador expira para o segmento com o nº de seq. y evento: ACK recebido com ACK y criação, envio do segmento Retransmisssão do segmento y ACK processado Transferência de dados uni-direcccional Sem controlo de fluxo Sem controlo de congestão

8 3: Nível de Transporte3b-8 TCP: transferência de dados fiável 00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number loop (forever) { 04 switch(event) 05 event: data received from application above 06 create TCP segment with sequence number nextseqnum 07 start timer for segment nextseqnum 08 pass segment to IP 09 nextseqnum = nextseqnum + length(data) 10 event: timer timeout for segment with sequence number y 11 retransmit segment with sequence number y 12 compute new timeout interval for segment y 13 restart timer for sequence number y 14 event: ACK received, with ACK field value of y 15 if (y > sendbase) { /* cumulative ACK of all data up to y */ 16 cancel all timers for segments with sequence numbers < y 17 sendbase = y 18 } 19 else { /* a duplicate ACK for already ACKed segment */ 20 increment number of duplicate ACKs received for y 21 if (number of duplicate ACKS received for y == 3) { 22 /* TCP fast retransmit */ 23 resend segment with sequence number y 24 restart timer for segment y 25 } 26 } /* end of loop forever */ Emissor TCP simplificado

9 3: Nível de Transporte3b-9 TCP geração de ACKs [RFC 1122, RFC 2581] Evento Chegada ordenada de segmentos, Sem buracos, tudo o mais já confirmado (ACKed) Chegada ordenada de segmentos, Sem buracos, Um ACK pendente por atraso Chegada de segmentos desordenada Nº de seq. superior ao esperado Buraco(s) detectados Chegada de segmento que preenche completa ou incompletamente o buraco TCP Acção no receptor ACK atrasado. Espera máxima de 500 ms pelo próximo segmento. Se não chega segmento, envia ACK Envia imediatamente um único ACK Acumulativo, referente a todos os segmentos que chegaram ordenadamente Envia ACK duplicado, indicando o nº de seq. do próximo byte esperado ACK imediato se o segmento começa no limite inferior do buraco

10 3: Nível de Transporte3b-10 TCP Controlo de fluxo receptor: m Informa explicitamente o emissor da quantidade de buffer livre, de forma dinâmica m RcvWindow: campo usado do cabeçalho TCP emissor: Mantém a quantidade de dados transmitidos e não confirmados (unACKed) inferior ao valor mais recente que recebeu da janela RcvWindow Emisor não sobrecarrega o receptor por transmitir demasiadamente rápido Controlo de fluxo Não controla o que se passa na rede

11 3: Nível de Transporte3b-11 TCP Controlo de fluxo - receptor LastByteRead = nº do último byte lido do buffer pela aplicação do lado B LastByteRcv = nº do último byte recebido da rede e colocado no buffer do lado B LastByteRcv – LastByteRead <= RcvBuffer RcvWindow = RcvBuffer – [LastByteRcv – LastByteRead] RcvBuffer = dimensão do buffer de recepção do TCP RcvWindow = quantidade de espaço disponível no buffer LastByteRead LastByteRcv

12 3: Nível de Transporte3b-12 TCP Controlo de fluxo - emissor LastByteSend = nº do último byte enviado para a rede LastByteAck = nº do último byte que foi confirmada a recepção LastByteSend – LastByteAcK <= RcvWindow RcvBuffer = dimensão do buffer de recepção do TCP RcvWindow = quantidade de espaço disponível no buffer receptor: Sinaliza o emissor RcvWindow = 0 m Não tem mais informação para enviar para o emissor emissor: m Não pode enviar mais informação ! Solução: m TCP obriga o emissor a enviar um segmento de 1 B para obrigar o receptor a responder

13 3: Nível de Transporte3b-13 TCP Round Trip Time eTimeout Q: como estabelecer o valor de timeout do TCP? r Superior a RTT m nota: RTT vai variar r Muito pequeno: timeout antecipado m Retransmissões desnecessárias r Muito longo: reacção lenta à perda de segmentos Q: Como estimar RTT? SampleRTT : tempo medido desde a transmissão do segmento para o nível de rede até à recepção do ACK m Ignora retransmissões, m Faz o ACK acumulativo dos segmentos SampleRTT vai variar, m Estimar RTT de forma suave Usar várias medidas recentes e não apena o valor corrente de SampleRTT

14 3: Nível de Transporte3b-14 TCP Round Trip Time e Timeout EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT r Exponential weighted moving average r Influência de uma amostra decresce com uma rapidez exponencial r Valor típico de x: Parametrizando o timeout EstimatedRTT mais margem de segurança Grande variação em EstimatedRTT -> margem de segurança superior Timeout = EstimatedRTT + 4*Deviation Deviation = (1-x)*Deviation + x*|SampleRTT-EstimatedRTT| Mede a variação de SampleRTT em relação ao EstimatedRTT

15 3: Nível de Transporte3b-15 TCP Gestão das ligações Recordar: O emissor TCP estabelece uma ligação antes de iniciar a transmissão dos segmentos r Inicialização das variáveis TCP : m Nº de sequência m Buffers Informação de janela de controlo de fluxo ( RcvWindow ) r Cliente: Inicia a ligação socket_fd=socket(Domínio, Tipo, 0) connect(socket_fd,estr_ender,dim_estr_ender) Domínio =PF_INET(comunicação entre STs IPVv4) Tipo = SOCK_STREAM (TCP) ou SOCK_DGRAM (UDP) estr_end = domínio; porto; end IP destino) r Servidor: contactado pelo cliente socket_fd=socket(Domínio, Tipo, 0) bind(socket_fd1,estr_endereços,dim_estr_ender) listen (socket_fd1, num_lig_em_espera) new_fd=accept(socket_fd1, estr_endereços, dim) estr_end = domínio; porto; end IP origem)

16 3: Nível de Transporte3b-16 TCP Gestão das ligações: Estabelecimento Passo 1: Ligação pedidda r Sistema Terminal do cliente envia segmento SYN =1 para o servidor m Não tem campo de dados m Define o nº de seq. original client_isn Passo 2: Ligação concedida r Sistema Terminal do Servidor recebe o segmento de controlo SYN =1 m Não tem campo de dados m Confirma a recepção do seg. Ack = client_isn+1 m Define o nº de seq. inicial do servidor Server_isn m Responde com o segmento de controlo SYNACK Passo 3: Ligação confirmada r Sistema Terminal do cliente envia segmento SYN = 0 para o servidor m Reserva buffers e variáveis m Confirma a recepção do seg. Ack = server_isn+1

17 3: Nível de Transporte3b-17 cliente Connection-request (SYN=1, seq=client_isn) servidor Connection-granted (SYN=1, seq=server_isn, ack_client_isn+1) Acknowldege (SYN=0, seq=client_isn+1, ack=server_isn+1) pedido Reserva buffers e variáveis tempo TCP Gestão das ligações: Estabelecimento Reserva buffers e variáveis estabelecimento

18 3: Nível de Transporte3b-18 TCP Gestão das ligações: Fecho Passo 1/2: Pedido de fim de ligação do cliente r Sistema Terminal do cliente envia o segmento de controlo FYN = 1 para terminar a ligação TCP m Cancela a reserva de recursos r Sistema Terminal do servidor confirma a recepção do FYN do cliente m Envia ACK r Cliente: fecha a ligação close(sock_fd) r Servidor: fecha a ligação com o cliente close(sock_fd1) Passo 3/4: Pedido de fim de ligação do servidor r Sistema Terminal do servidor envia o segmento de controlo FYN = 1 para terminar a ligação TCP m Cancela a reserva de recursos r Sistema Terminal do cliente confirma a recepção do FYN do cliente m Envia ACK m Espera um tempo até dar a ligação por terminada

19 3: Nível de Transporte3b-19 cliente FIN servidor ACK FIN Fechando Fechou Tempo de espera Fechou TCP Gestão das ligações: Fecho

20 3: Nível de Transporte3b-20 Ciclo de vida do cliente TCP Ciclo de vida do servidor TCP TCP Gestão das ligações: ciclo de vida

21 3: Nível de Transporte3b-21 Princípios de controlo de congestão Congestão: r Informalmente: demasiadas fontes enviam informação a um ritmo muito superior ao que a rede é capaz de processar r Diferente do controlo de fluxo! r Sintomas: m Perda de pacote (buffer overflow nos routers) m Atrasos elevados (queueing nos buffers dos router) r Problema da lista dos TOP 10!

22 3: Nível de Transporte3b-22 Causas e custos do controlo de congestão: cenário 1 r Dois emissores r Dois receptores r Um router r Buffer infinito r Sem retransmissões r Atraso elevado em situação de congestão r Débito máximo atingível

23 3: Nível de Transporte3b-23 r um router r buffers finitos r Emissor retransmite pacotes perdidos Causas e custos do controlo de congestão: cenário 2

24 3: Nível de Transporte3b-24 r 1 - Situação ideal : (goodput) r 2 - Retransmissões ocorrem quando há perdas: r 3 - Retransmissões de pacotes atrasados (não perdidos) faz maior para o mesmo in out = in out > in out custos da congestão: r Mais trabalho (retrans) para um dado goodput r Retransmissões desnecessárias: ligação transporte múltiplas cópias do pacote Causas e custos do controlo de congestão: cenário

25 3: Nível de Transporte3b-25 r 4 emissores r Caminho com vários nós r timeout/retransmissões in Q: o que acontece quando e aumenta ? in Causas e custos do controlo de congestão: cenário 3 r A C: R1 R2 r B D: R2 R3 r C A: R3 R4 r D B: R4 R1

26 3: Nível de Transporte3b-26 Causas e custos do controlo de congestão: cenário 3 r A C: R1 R2 r B D: R2 R3 r C A: R3 R4 r D B: R4 R1 r in pequeno m Mais dados são transmitidos na rede e entregues ao destino m Overflow de buffers é raro m out também aumenta r in e in muito elevado (B->D) m Tráfego de A que chega a R2 pode ser aproximadamente R m Tráfego de B->D que chega a R2 é muito superior ao tráfego proveniente de A->C). m Quando maior for o tráfego de B->D maior é a probabilidade do tráfego de A->C encontrar o buffer de R2 cheio com um pacote de B

27 3: Nível de Transporte3b-27 Outro custo da congestão: r Quando um pacote se perde, qualquer capacidade de transmisssão que já tenha sido usada para o transmitir é perdida! Causas e custos do controlo de congestão: cenário 3

28 3: Nível de Transporte3b-28 Aproximações ao controlo de congestão Controlo de congestão extremo-a-extremo: r Não há feedback da rede r Congestão inferida pelos Sistemas Terminais, quando detectam perdas na rede r Aproximação do TCP Controlo de congestão assistido pela rede: r Routers fornecem feedback aos Sistemas Terminas m Um único bit indica a congestão m Envio explicíto do ritmo a que o emissor pode enviar Duas aproximações ao controlo de congestão:

29 3: Nível de Transporte3b-29 Caso de estudo: Controlo de congestão ATM ABR ABR: available bit rate: r Serviço elástico r Se o caminho do emissor não está carregado: m Emissor deve usar a largura de banda disponível r Se o caminho do emissor não está congestionado : m Emissor envia apenas ao ritmo mínimo garantido RM (resource management) cells: r Enviadas pelo emissor, intercaladas com as células de dados r Bits nas células RM activadas pelos switches (network- assisted) m NI bit: não aumentar o ritmo (congestão média) m CI bit: indicador de congestão r Células RM cells retornadas pelo receptor com os bits intactos

30 3: Nível de Transporte3b-30 r ER (explicit rate) campo de 2 bytes numa célula RM m switch congestionado pode diminuir o valor de ER da célula m Emissor envia ao ritmo mínimo suportado pelo caminho r EFCI bit na célula de dados: m EFCI = 1 indica congestão no switch m Se as células de dados que precedem a célula RM têm EFCI ctivo, receptor activa CI na célula RM de retorno r Bits CI e NI m Um switch pode activar o bit NI/CI, o qual deverá ser retornado ao emissor na próxima célula RM Caso de estudo: Controlo de congestão ATM ABR

31 3: Nível de Transporte3b-31 Controlo de congestão no TCP r Controlo extremo-a-extremo (não assistido pela rede) Ritmo de transmissão limitado pela dimensão da janela de congestão, Congwin : r W segmentos, cada um com MSS bytes enviados em cada RTT: Débito = w * MSS RTT Bytes/sec Congwin

32 3: Nível de Transporte3b-32 r Duas fases m slow start m congestion avoidance r Variáveis importantes: Congwin threshold Define o valor de limiar (threshold) entre duas fases slow start e controlo de congestao rprobing para a largura de banda utilizável: Idealmente: transmite táo rápido quanto possível sem perdas ( Congwin tão grande quando possível) aumenta Congwin até perdas (congestão) perdas: diminui Congwin, então aumenta o probing Controlo de congestão no TCP

33 3: Nível de Transporte3b-33 TCP Slowstart r Aumenta exponencialmente (por RTT) o tamanho da janela r Evento de perda: m TCP Tahoe : Timeout m TCP Reno: Timeout e/ou três ACKs duplicados (recebidos antes do timeout) initialize: Congwin = 1 for (each segment ACKed) Congwin++ until (loss event OR Congwin > threshold) Algoritmo de Slowstart Host A one segment RTT Host B Tempo two segments four segments

34 3: Nível de Transporte3b-34 TCP Congestion Avoidance /* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 perform slowstart Congestion avoidance 1 1: TCP Reno ultrapassa o slowstart (recuperação rápida ) após 3 ACKs duplicados

35 3: Nível de Transporte3b-35 TCP Fairness Objectivo de justiça: se uma ligação estrangulada é partilhada por N sessões TCP, cada uma delas deve obter 1/N da capacidade da ligação Método de evitar congestão: m Incrementa a janela 1 unidade por RTT m Decrementa a janela 2 unidades por evento de perda AIMD –Additive Increase Multiplicative Decrease Ligação TCP 1 bottleneck router Capacidade = R Ligação TCP 2

36 3: Nível de Transporte3b-36 Porque é que o TCP é justo ? Duas sessões em competição: r Aumento aditivo : m Aumento origina um declive de 1, quando o débito aumenta r Decréscimo multiplicativo : m Débito decresce proporcionalmente R R Largura de Banda partilhada igualmente Débito da ligação 1 Débito da ligação 2 Evitar a congestão: aumento aditivo Perdas: janela decresce por um factor 2 A B C D

37 3: Nível de Transporte3b-37 Modelo de latência do TCP Q: Quanto tempo demora a receber um objecto um dum Web servidor depois de enviar um pedido ? m Estabelecimento duma ligação TCP m Fase de transferência de dados Pressupostos: r Ligação Cliente e o Servidor não é partilhada com outro tipo de tráfego m TCP ou UDP. r Sem retransmissões m Sem perdas m Sem corrupção r Headers desprezáveis r Tempo de transmissão m Só é significativo para os segmentos de dimensão máxima r Controlo de fluxo: m Não afecta os resultados r Controlo de congestão m Threshold tão elevado que não é atingido

38 3: Nível de Transporte3b-38 Modelo de latência do TCP Notações: r R = Ritmo de transferência [b/s] r W= Dimensão da janela de congestão [segmentos] r S = MSS Dimensão do maior segmento [bits] r O = Dimensão do objecto [bits] Dois casos a considerar: r Servidor recebe o ACK do 1º segmento antes de transmitir todos os dados da janela m WS/R > RTT + S/R r O Servidor transmite os dados da janela antes de receber o ACK do 1º segmento; espera ACK antes de prosseguir a transmissão m WS/R < RTT + S/R

39 3: Nível de Transporte3b-39 Modelo de latência TCP Caso 1: latencia = 2RTT + O/R Caso 2: latencia = 2RTT + O/R + (K-1)[S/R + RTT - WS/R] Nº de janelas que é preciso para txd o objecto K:= O/WS W = 4 W = 2

40 3: Nível de Transporte3b-40 Modelo de latência TCP: Slow Start r Supondo que a janela cresce de acordo com o SlowStart. r A latência de um objecto de dimensão O é: Em que P é o nº de vezes que o TCP no servidor bloqueia (stall) -em que Q é o nº de vezes que o servidor pára se o objecto tiver uma dimensão infinita - K é o nº da janela que cobre o objecto

41 3: Nível de Transporte3b-41 Exemplo: O/S = 15 segmentos K = 4 janelas Q = 2 P = min{K-1,Q} = 2 Servidor pára P=2 vezes. Modelo de latência TCP: Slow Start

42 3: Nível de Transporte3b-42 Modelo de latência TCP: Slow Start

43 3: Nível de Transporte3b-43 Chapter 3: Summary r Princípios do serviço do nível de transporte: m multiplexagem/demultiplexagem m Transferência de dados fiável m Controlo de fluxo m Controlo de congestão r Instanciação e implementação na Internet m UDP m TCP Próximo: r Deixar a periferia da rede r Entrar no core da rede


Carregar ppt "3: Nível de Transporte3b-1 TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 r Transmissão de dados bi- direccional: m Transmissão de dados bi- direccional."

Apresentações semelhantes


Anúncios Google