Your SlideShare is downloading. ×
0
TCP: Visão Geral                                    RFCs: 793, 1122, 1323,                                               2...
Estrutura do Segmento TCP                                          32 bitsURG: dados urgentes                             ...
Números de Seqüência e ACKs do TCPNúmeros de seqüência:                                         Host A                    ...
TCP: transferência de dados confiávelevento: dados recebidos                                   transmissor simplificado, a...
TCP:           00 sendbase = initial_sequence number                   01 nextseqnum = initial_sequence number            ...
Geração de ACK [RFC 1122, RFC 2581]Evento                            Ação do TCP Receptorsegmento chega em ordem,         ...
TCP: cenários de retransmissão                  Host A               Host B                            Host A             ...
TCP: Controle de Fluxo         controle de fluxo                         receptor: explicitamente         transmissor não ...
TCP Round Trip Time e TemporizaçãoQ: como escolher o valor        Q: Como estimar o RTT?  da temporização do            • ...
TCP Round Trip Time e TemporizaçãoEstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT     •   Média móvel com peso exponential...
TCP Estabelecimento de Conexão TCP transmissor estabelece conexão   Three way handshake:   com o receptor antes de trocar ...
TCP Término de Conexão                                                     cliente          servidorFechando uma conexão: ...
TCP Término de Conexão                                                      cliente          servidorPasso 3: cliente rece...
TCP Controle de Conexão                         Estados do ServidorEstados do Cliente
Princípios de Controle de CongestionamentoCongestionamento:• informalmente: “muitas fontes enviando dados acima da  capaci...
Causas/custos do congestionamento: cenário 1•   dois transmissores, dois    receptores•   um roteador, buffers    infinito...
Causas/custos do congestionamento: cenário 2• um roteador, buffers finitos• transmissor reenvia pacotes perdidos
Causas/custos do congestionamento: cenário 2•     sempre vale :   λ     =   λout(tráfego bom)•                          in...
Causas/custos do congestionamento: cenário 3•   quatro transmissores            Q: o que acontece quando λ                ...
Causas/custos do congestionamento: cenário 3Outro “custo” do congestionamento:• quando pacote é descartado, qualquer capac...
Abordagens do problema de controle de              congestionamentoExistem duas abordagens gerais para o problema  de cont...
Estudo de caso: controle de    congestionamento do serviço ATM ABRABR: available bit rate:                células RM (reso...
Estudo de caso: controle de    congestionamento do serviço ATM ABR•   campo ER (explicit rate) de dois bytes nas células R...
TCP: Controle Congestionamento• controle fim-a-fim (não há assistência da rede)• taxa de transmissão é limitada pelo taman...
TCP: Controle Congestionamento• “teste” para reconhecer a        • duas “fases””  taxa possível:                       – s...
TCP Slowstart                                           Host A        Host Balgoritmo Slowstart                           ...
TCP: Congestion Avoidance Congestion avoidance /* acabou slowstart      */ /* Congwin > threshold */ Até (evento perda) { ...
AIMD                                    TCP EqüidadeTCP congestion  avoidance:                        Objetivo: se N sessõ...
Porque o TCP é justo?Duas sessões competindo pela banda:•   O aumento aditivo fornece uma inclinação de 1, quando a vazão ...
TCP: modelagem da latênciaQ: Quanto tempo demora para receber Notação, hipóteses:   um objeto de um servidor Web após • As...
TCP: modelagem da latência                                            K:= O/WSCaso 1: latencia = 2RTT + O/R   Caso 2: late...
TCP Modelagem de Latência: Slow Start  •    Agora suponha que a janela cresce de acordo com os procedimentos da       fase...
TCP Modelagem de Latência: Slow Start (cont.)                        iniciaExemplo:                        conexão TCP    ...
TCP Modelagem de Latência: Slow Start (cont.) S   + RTT = tempo quando o servidor inicia o envio do segmento R           a...
Capítulo 3: Resumo• princípios por trás dos                 A seguir:  serviços da camada de                   •   saímos ...
Upcoming SlideShare
Loading in...5
×

Cap03b

317

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
317
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Cap03b"

  1. 1. TCP: Visão Geral RFCs: 793, 1122, 1323, 2018, 2581 • ponto-a-ponto: • dados full-duplex: – um transmissor, um receptor – transmissão bi-direcional na • confiável, seqüêncial byte mesma conexão stream: – MSS: maximum segment size – não há contornos de mensagens • orientado à conexão: • pipelined: (transmissão de vários – handshaking (troca de pacotes em confirmação) mensagens de controle) inicia o estado do transmissor e do – Controle de congestão e de fluxo receptor antes da troca de dados definem tamanho da janela • controle de fluxo: • buffers de transmissão e de recepção – transmissor não esgota a capacidade do receptor aplicação aplicação envia dados lê dadossocket socket port port TCP TCP buffe de txr buffer de rx segment
  2. 2. Estrutura do Segmento TCP 32 bitsURG: dados urgentes contagem por (pouco usado) porta origem porta destino bytes de dados número de seqüência (não segmentos!) ACK: campo de ACK é válido número de reconhecimento tam. nãoPSH: produz envio de cabec.usado UA P R S F janela de recep. dados (pouco usado) checksum dados urgentes número de bytes receptor está RST, SYN, FIN: Opções (tamanho variável) pronto paraestabelec. de conexão aceitar (comandos de criação e término) dados de aplicação Internet (tamanho variável) checksum (como no UDP)
  3. 3. Números de Seqüência e ACKs do TCPNúmeros de seqüência: Host A Host B – número do primeiro byte no segmentos de Usuário Seq=4 digita 2 , AC K=79, dados ‘C’ data = ‘C’ host confirmaACKs: recepção de ‘C’, e ecoa o – número do próximo ta = ‘ C’ ’C’ de volta 3, da byte esperado do outro CK=4 79, A Seq= lado – ACK cumulativo Q: host confirma como o receptor trata recepção Seq=4 segmentos foram de do ‘C’ ecoado 3 , A CK = 80 ordem – A especificação do TCP não define, fica a tempo critério do cenário telnet simples implementador
  4. 4. TCP: transferência de dados confiávelevento: dados recebidos transmissor simplificado, assumindo da aplicação acima que não há controle de fluxo nem de cria, envia segmento congestionamento evento: temporização esgotada espera wait for para segmento com seq = y por event evento retransmite segmento evento: ACK recebido,com número de ACK = yprocessamento do ACK
  5. 5. TCP: 00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number 02transferência 03 loop (forever) { 04 switch(event) 05 event: dados recebidos da aplicação acima confiável 06 07 cria segmento TCP com número de seqüência nextseqnum inicia temporizador para segmento nextseqnum 08 passa segmento ao IP 09 nextseqnum = nextseqnum + length(data) 10 event: esgotamento de temp. para segmento com seq = y 11 retransmite segmento com seq = y 12 calcule nova temporização para o segmento yTransmissor 13 reinicia temporizador para número de seqüência y 14 event: ACK recebido, com valor y no campo de ACKTCP simplificado 15 if (y > sendbase) { /* ACK cumulativo de todos os dados até y */ 16 cancela todas as temporizações para segmentos com seq < y 17 sendbase = y 18 } 19 else { /* um ACK duplicata para um segmento já reconhecido */ 20 incrementa numero de duplicatas de ACKs recebidas para y 21 if (numero de duplicatas de ACKS recebidas para y == 3) { 22 /* TCP fast retransmit */ 23 reenvia segmento com número de seqüência y 24 reinicia temporização para segmento y 25 } 26 } /* end of loop forever */
  6. 6. Geração de ACK [RFC 1122, RFC 2581]Evento Ação do TCP Receptorsegmento chega em ordem, ACK retardado. Espera até 500msnão há lacunas, pelo próximo segmento. Se não chegar,segmentos anteriores já aceitos envia ACKsegmento chega em ordem, imediatamente envia um ACKnão há lacunas, cumulativoum ACK atrasado pendentesegmento chega fora de ordem envia ACK duplicado, indicando númeronúmero de seqüência chegou de seqüência do próximo byte esperadomaior: gap detetadochegada de segmento que reconhece imediatamente se o segmentoparcial ou completamente começa na borda inferior do gappreenche o gap
  7. 7. TCP: cenários de retransmissão Host A Host B Host A Host B Seq=9 Seq=9 2 , 8 byt 2 , 8 byt es da es da ta Seq= ta Seq=92 temp. 1 temporização 00, 2 0 byt es da ta Seq=100 temp. 100 A CK= 00 =1 0 X CK CK=12 loss A A Seq=9 Seq=9 2 2 , 8 byt , 8 byt es da es da ta ta 0 =1 2 100 A CK A C K=tempo tempo temporização prematura, cenário com perda do ACK ACKs cumulativos
  8. 8. TCP: Controle de Fluxo controle de fluxo receptor: explicitamente transmissor não deve informa o transmissor da esgotar os buffers de área livre no buffer receção enviando (dinamicamente mudando) dados rápido demais – campo RcvWindow no segmento TCPRcvBuffer = tamanho do Buffer de recepção do TCP transmissor: mantém aRcvWindow = total de espaço livre no buffer quantidade de dados transmitidos mas não reconhecidos menor que o último RcvWindow recebido armazenamento de recepção
  9. 9. TCP Round Trip Time e TemporizaçãoQ: como escolher o valor Q: Como estimar o RTT? da temporização do • SampleRTT: tempo medido da TCP? transmissão de um segmento até a respectiva confirmação• maior que o RTT – ignora retransmissões e segmentos – nota: RTT varia reconhecidos de forma cumulativa• muito curto: temporização • SampleRTT varia de forma rápida, é prematura desejável um amortecedor para a – retransmissões estimativa do RTT desnecessárias – usar várias medidas recentes, não• muito longo: a reação à apenas o último SampleRTT perda de segmento fica obtido lenta
  10. 10. TCP Round Trip Time e TemporizaçãoEstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT • Média móvel com peso exponential • influencia de uma dada amostra decresce de forma exponencial • valor típico de x: 0.1Definindo a temporização• EstimtedRTT mais “margem de segurança”• grandes variações no EstimatedRTT -> maior margem de segurança Temporização = EstimatedRTT + 4*Desvios Desvios = (1-x)*Desvio + x*|SampleRTT-EstimatedRTT|
  11. 11. TCP Estabelecimento de Conexão TCP transmissor estabelece conexão Three way handshake: com o receptor antes de trocar Passo 1: sistema final cliente envia segmentos de dados TCP SYN ao servidor• initializar variáveis: – especifica número de seqüência – números de seqüência inicial – buffers, controle de fluxo (ex. RcvWindow) Passo 2: sistema final servidor que recebe o SYN, responde com• cliente: iniciador da conexão segmento SYNACK Socket clientSocket = new Socket("hostname","port – reconhece o SYN recebido number"); – aloca buffers• servidor: chamado pelo cliente – especifica o número de Socket connectionSocket = seqüência inicial do servidor welcomeSocket.accept(); Passo 3: o sistema final cliente reconhece o SYNACK
  12. 12. TCP Término de Conexão cliente servidorFechando uma conexão: close FINcliente fecha o socket: clientSocket.close(); AC K closePasso 1: o cliente envia o FIN segmento TCP FIN ao servidor espera temp. A CKPasso 2: servidor recebe FIN, responde com ACK. Fecha a conexão, envia FIN. closed
  13. 13. TCP Término de Conexão cliente servidorPasso 3: cliente recebe FIN, closing FIN responde com ACK. – Entra “espera temporizada” AC K - vai responder com ACK a closing FINs recebidos FINPasso 4: servidor, recebe ACK. espera temp. Conexão fechada. A CK closed closed
  14. 14. TCP Controle de Conexão Estados do ServidorEstados do Cliente
  15. 15. Princípios de Controle de CongestionamentoCongestionamento:• informalmente: “muitas fontes enviando dados acima da capacidade da rede tratá-los”• diferente de controle de fluxo!• sintomas: – perda de pacotes (saturação de buffer nos roteadores) – atrasos grandes (filas nos buffers dos roteadores)• um dos 10 problemas mais importantes na Internet!
  16. 16. Causas/custos do congestionamento: cenário 1• dois transmissores, dois receptores• um roteador, buffers infinitos• não há retransmissão • grandes atrasos quando congestionado • máxima vazão obtenível
  17. 17. Causas/custos do congestionamento: cenário 2• um roteador, buffers finitos• transmissor reenvia pacotes perdidos
  18. 18. Causas/custos do congestionamento: cenário 2• sempre vale : λ = λout(tráfego bom)• in “perfeita” retransmissão somente quando há perdas: λ > λout in• retransmissão de pacotes atrasados (não perdidos) torna λ maior (que o caso perfeito ) para o mesmo λ in out “custos” do congestionamento: • mais trabalho (retransmissões) para um dado “tráfego bom” • retransmissões desnecessárias: enlace transporta várias cópias do mesmo pacote
  19. 19. Causas/custos do congestionamento: cenário 3• quatro transmissores Q: o que acontece quando λ in• caminhos com múltiplos saltos e λ aumentam ?• temporizações/retransmissões in
  20. 20. Causas/custos do congestionamento: cenário 3Outro “custo” do congestionamento:• quando pacote é descartado, qualquer capacidade de transmissão que tenha sido anteriormente usada para aquele pacote é desperdiçada!
  21. 21. Abordagens do problema de controle de congestionamentoExistem duas abordagens gerais para o problema de controle de congestionamento: Controle de congestionamento Controle de congestionamento fim-a-fim: assistido pela rede: • não usa realimentação explícita • roteadores enviam informações da rede para os sistemas finais • congestionamento é inferido a – bit único indicando o partir das perdas e dos atrasos congestionamento (SNA, observados nos sistemas finais DECbit, TCP/IP ECN, • abordagem usada pelo TCP ATM) – taxa explícita do transmissor poderia ser enviada
  22. 22. Estudo de caso: controle de congestionamento do serviço ATM ABRABR: available bit rate: células RM (resource management) :• “serviço elástico” • enviadas pelo transmissor, entremeadas• se o caminho do transmissor está com as células de dados pouco usado: • bits nas células RM são usados pelos – transmissor pode usar a comutadores (“assistida pela rede”) banda disponível – NI bit: não aumentar a taxa• se o caminho do transmissor está (congestionamento leve) congestionado: – CI bit: indicação de – transmissor é limitado a uma congestionamento taxa mínima garantida • as células RM são devolvidos ao transmissor pelo receptor, com os bits de indicaçaõ intactos
  23. 23. Estudo de caso: controle de congestionamento do serviço ATM ABR• campo ER (explicit rate) de dois bytes nas células RM – comutador congestionado pode reduzir o valor de ER nas células – o transmissor envia dados de acordo com esta vazão mínima suportada no caminho• bit EFCI nas células de dados: marcado como 1 pelos comutadores congestionados – se a célula de dadosque precede a célula RM tem o bit EFCI com valor 1, o receptor marca o bit CI na célula RM devolvida
  24. 24. TCP: Controle Congestionamento• controle fim-a-fim (não há assistência da rede)• taxa de transmissão é limitada pelo tamanho da janela, Congwin, sobre os segmentos: Congwin• w segmentos, cada um com MSS bytes enviados em um RTT: w * MSS vazão = Bytes/seg RTT
  25. 25. TCP: Controle Congestionamento• “teste” para reconhecer a • duas “fases”” taxa possível: – slow start – idealmente: transmitir tão – congestion avoidance rápido quanto possível • variáveis importantes: (Congwin tão grande – Congwin quanto possível) sem perdas – aumentar Congwin até – threshold: define o que ocorra perda limite entre a fase slow (congestionamento) start e a fase congestion avoidance – perda: diminuir Congwin, então ir testando (aumentando) outra vez
  26. 26. TCP Slowstart Host A Host Balgoritmo Slowstart one segm ent RTTinitializar: Congwin = 1para (cada segmento reconhecido two segm en ts Congwin++até (evento perda OU CongWin > threshold) four segm ents• aumento exponencial (por RTT) no tamanho da janela (não tão lento!) tempo• evento de perda : temporização (Tahoe TCP) e/ou 3 ACKs duplicados (Reno TCP)
  27. 27. TCP: Congestion Avoidance Congestion avoidance /* acabou slowstart */ /* Congwin > threshold */ Até (evento perda) { cada w segmentos reconhecidos: Congwin++ } threshold = Congwin/2 Congwin = 1 realiza slowstart 11: TCP Reno pula a fase slowstart (recuperaçaõ rápida)após três ACKs duplicados
  28. 28. AIMD TCP EqüidadeTCP congestion avoidance: Objetivo: se N sessões TCP devem passar pelo mesmo gargalo,• AIMD: aumento cada uma deve obter 1/N da aditivo, redução capacidade do enlace multiplicativa – aumenta a janela de 1 a cada RTT conexão TCP 1 – diminui a janela por um fator de 2 em caso de evento perda roteador com conexão TCP 2 gargalo de capacidade R
  29. 29. Porque o TCP é justo?Duas sessões competindo pela banda:• O aumento aditivo fornece uma inclinação de 1, quando a vazão aumenta• redução multiplicativa diminui a vazão proporcionalmente R divisão igual da banda Vazão da Conexão 1 perda: reduz janela por um fato de 2 congestion avoidance: aumento aditivo perda: reduz janela por um fator de 2 congestion avoidance: aumento aditivo Vazão da Conexão 2 R
  30. 30. TCP: modelagem da latênciaQ: Quanto tempo demora para receber Notação, hipóteses: um objeto de um servidor Web após • Assuma um enlace entre o cliente e enviar um pedido? o servidor com taxa de dados R• estabelecimento de conexão TCP • Assuma: janela de• atraso de transferência de dados congestionamento fixa, W segmentos • S: MSS (bits) • O: tamanho do objeto (bits) • não há retransmissões (sem perdas e corrupção de dados) Dois casos a considerar: • WS/R > RTT + S/R: ACK para o primeiro segmento retorna antes de se esgotar a janela de transmissão de dados • WS/R < RTT + S/R: espera pelo depois de esgotar a janela de transmissão de dados
  31. 31. TCP: modelagem da latência K:= O/WSCaso 1: latencia = 2RTT + O/R Caso 2: latencia = 2RTT + O/R + (K-1)[S/R + RTT - WS/R]
  32. 32. TCP Modelagem de Latência: Slow Start • Agora suponha que a janela cresce de acordo com os procedimentos da fase slow start. • Vamos mostrar que a latência de um objeto de tamanho O é: O ⎡ S⎤ S Latency = 2 RTT + + P ⎢ RTT + ⎥ − ( 2 P − 1) R ⎣ R⎦ R onde P é o número de vezes que o TCP fica bloqueado no servidor: P = min{Q, K − 1}- onde Q é o número de vezes que o servidor ficaria bloqueado se o objeto fosse de tamanho infinito.- e K é o número de janelas que cobrem o objeto.
  33. 33. TCP Modelagem de Latência: Slow Start (cont.) iniciaExemplo: conexão TCP pedeO/S = 15 segmentos objeto primeira janela = S/RK = 4 janelas RTT segunda janela = 2S/RQ=2 terceira janela = 4S/RP = min{K-1,Q} = 2Servidor bloqueado P=2 times. quarta janela = 8S/R transmissão objeto completa entregue tempo no tempo no servidor cliente
  34. 34. TCP Modelagem de Latência: Slow Start (cont.) S + RTT = tempo quando o servidor inicia o envio do segmento R até quando o servidor recebe reconhecimento inicia S conexão TCP −1 2k = tempo para enviar a k-ésima janela R pede objeto primeira janela + = S/R⎡S S⎤ tempo de bloqueio após a⎢R + RTT − 2 k −1 ⎥ = RTT segunda janela⎣ R⎦ k-ésima janela = 2S/R terceira janela = 4S/R Platencia= + 2 RTT + ∑ TempoBloqueio p O quarta janela R p =1 = 8S/R P = + 2 RTT + ∑ [ + RTT − 2k −1 ] O S S R k =1 R R transmissão objeto O S S completa = + 2 RTT + P[ RTT + ] − (2 P − 1) entregue R R R tempo no tempo no servidor cliente
  35. 35. Capítulo 3: Resumo• princípios por trás dos A seguir: serviços da camada de • saímos da “borda” da rede transporte: (camadas de aplicação e de – multiplexação/demultiplexação transporte) – transferência de dados confiável • vamos para o “núcleo” da rede – controle de fluxo – controle de congestionamento• instantiação e implementação na – UDP – TCP
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×