23
TCP 1 TCP Faculdade de Engenharia da Universiadade do Porto Manuel P. Ricardo

TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 1

TCP

Faculdade de Engenharia da Universiadade do PortoFaculdade de Engenharia da Universiadade do Porto

Manuel P. Ricardo

Page 2: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 2

Bibliografia

L. Peterson, B. Davie, “Computer Networks – A Systems Approach”, Morgan Kaufamnn, 2000 (Sec. 5.1, 5.2, 6.1, 6.2, 6.3 e 6.4)

Page 3: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 3

TCP

♦ Características» Orientado às ligações

» Full-duplex

» Fluxo de bytes– aplicação escreve bytes

– TCP envia segmentos

– aplicação lê bytes

♦ Mecanismos de controlo» Controlo de fluxo

Evita que emissor congestione receptor

» Controlo de congestionamentoEvita que emissor congestione a rede

– aplicação lê bytes

Application process

Writebytes

TCPSend buffer

Segment Segment Segment

Transmit segments

Application process

Readbytes

TCPReceive buffer

… …

Page 4: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 4

Formato do Segmento

SrcPort DstPort

SequenceNum

Acknowledgment

0 4 10 16 31

Options (variable)

Data

Checksum

HdrLen 0 Flags

UrgPtr

AdvertisedWindow

Page 5: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 5

Estabelecimento da Ligação

Active participant(client)

Passive participant(server)

Page 6: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 6

Controlo de FluxoControlo de Fluxo

Page 7: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 7

Janela Deslizante

♦ Emissor » envia dados com indicação do número de ordem do 1º byte

Data (SequenceNum)

♦ Receptor » confirma recepção indicando número ordem próximo byte a receber» confirma recepção indicando número ordem próximo byte a receber

Acknowledgment

» indica espaço livre em memóriaAdvertisedWindow

Sender

Data (SequenceNum)

Acknowledgment +AdvertisedWindow

Receiver

Page 8: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 8Janela Deslizante Sending application

LastByteWritten

TCP

LastByteSentLastByteAcked

Receiving application

LastByteRead

TCP

LastByteRcvdNextByteExpected

» No emissor– LastByteAcked < = LastByteSent

– LastByteSent < = LastByteWritten

– Buferiza bytes entre LastByteAcked e LastByteWritten

» No receptor– LastByteRead < NextByteExpected

– NextByteExpected < = LastByteRcvd +1

– Buferiza bytes entre NextByteRead e LastByteRcvd

Page 9: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 9

Controlo de Fluxo

♦ Comprimento do buffer – no emissor � MaxSendBuffer

– no receptor � MaxRcvBuffer

♦ No receptorLastByteRcvd - LastByteRead < = MaxRcvBuffer

Sending application

LastByteWrittenTCP

LastByteSentLastByteAcked

Receiving application

LastByteReadTCP

LastByteRcvdNextByteExpected

LastByteRcvd - LastByteRead < = MaxRcvBuffer

AdvertisedWindow = MaxRcvBuffer -(LastByteRcvd - Las tByteRead )

♦ No EmissorLastByteWritten - LastByteAcked < = MaxSendBuffer

LastByteSent - LastByteAcked < = AdvertisedWindow

EffectiveWindow = AdvertisedWindow - (LastByteSent - LastByteAcked)

Processo bloqueia se quer enviar (write) y bytes e(LastByteWritten - LastByteAcked) + y > MaxSenderBuf fer

♦ ACKenviado como resposta à chegada de um segmento

Page 10: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 10

Retransmissão Adaptativa (Algoritmo Original)

♦ RTT � Round Trip Time (tempo de ida e volta)

♦ Medida de sampleRTT para cada par segmento/ACK

Cálculo da média pesada do ♦ Cálculo da média pesada do RTT

» RTT = a x RTT + (1-a) x SampleRTTa em [0.8, 0.9]

♦ TimeOut = 2 x RTT

Page 11: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 11

Melhoria de Karn/Partridge

♦ Não mede sampleRTT em caso de retransmissão

♦ Duplica valor do timeout em cada retransmissão

Sender Receiver Sender ReceiverSender Receiver

Sam

pleR

TT

Sender Receiver

Sam

pleR

TT

Page 12: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 12

Melhoria de Jacobson/ Karels

♦ Novo método de cálculo do RTT

» Dif = sampleRTT - RTT

» Desv = Desv + p ( |Dif| - Desv)– p em [0,1]

» RTT = RTT + ( p x Dif)

♦ Considera variância no cálculo do timeout» TimeOut = m x RTT + f x Desv

» m = 1, f = 4

♦ Mecanismo de timeout preciso» importante para controlo de congestionamento

Page 13: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 13

Controlo de CongestionamentoControlo de Congestionamento

Page 14: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 14

TCP - Controlo de Congestionamento

♦ Princípio de funcionamento» Cada fonte determina a sua capacidade de geração de tráfego

» Baseada em critérios de – justiça entre fluxos

– utilização máxima de recursos

(capacidade de comutação, capacidade de transporte dos links) (capacidade de comutação, capacidade de transporte dos links)

♦ ACKs recebidos regulam a transmissão de pacotes� são o relógioda fonte

Page 15: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 15

Subida Aditiva/Descida Multiplicativa

♦ Mudanças na capacidade de canal � ajuste na transmissão

♦ Nova variável de estado por ligação � CongestionWindow» Limita a quantidade de dados em trânsito

– MaxWin = MIN(CongestionWindow, AdvertisedWindow)– MaxWin = MIN(CongestionWindow, AdvertisedWindow)

– EffWin = MaxWin - (LastByteSent - LastByteAcked)

♦ Objectivo» Se congestionamento da rede diminui � aumenta CongestionWindow

» Se congestionamento da rede aumenta � diminui CongestionWindow

♦ Débito (byte/s) � CongestionWindow/RTT

Page 16: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 16

Subida Aditiva/Descida Multiplicativa

♦ Como sabe a fonte se/quando a rede está congestionada?

� Por ocorrência de timeout!» Redes fixas � pacotes raramente sofrem erros

» Ocorrência de timeout � perda de pacote» Ocorrência de timeout � perda de pacote

» Perda de pacotes � congestionamento– Filas nos routers cheias

Page 17: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 17

Subida Aditiva/Descida Multiplicativa

♦ Algoritmo» Incrementa CongestionWindow de 1 pacote

– Por cada RTT (Round Trip Time) � Subida linear

» Divide CongestionWindow por 2– Sempre que há perda de pacote � Descida multiplicativa

Source Destination

♦ Na prática,» Incrementa ligeiramente por ACK recebido» Increment= MSS * (MSS / CongestionWindow)

» CongestionWindow += Increment

» MSS � Maximum Segment Size

Page 18: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 18

Subida Aditiva/Descida Multiplicativa

♦ Funcionamento Dente de Serra

607060

20

1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0

KB

Time (seconds)

304050

10

10.0

Page 19: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 19

Arranque Lento ☺♦ Objectivo

» Determinar capacidade de transmissão disponível

♦ Aproximação

Source Destination

♦ Aproximação» Começar com CongestionWindow = 1 pacote

» Duplicar CongestionWindow em cada RTT

Page 20: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 20

Retransmissão e Recuperação Rápidas

♦ Problema» Se timeout TCP grande

� periodo de inactividade pode ser grandePacket 1

Packet 2

Packet 3

Packet 4

ACK 1

ACK 2

ACK 2

Sender Receiver

♦ Solução» Retransmissão rápida

� utilização de ACKs repetidos (3)

Packet 5

Packet 6

Retransmitpacket 3

ACK 2

ACK 2

ACK 6

ACK 2

Page 21: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 21

TCP – ArranqueLento

♦ TCP tem congestionWindow» número de pacotes em trânsito, sem causar congestionamento

» Novos pacotes enviados se permitidos por– congestionWindow , e

– Advertisedwindow , do receptor

♦ ArranqueLento ☺» Emissor começa com congestionWindow=1sgm

Source Destination

…» Emissor começa com congestionWindow=1sgm

» Duplica congestionWindow em cadaRTT

♦ Quando detecta perda de pacote, por timeout» threshold = ½ congestionWindow

» congestionWindow=1sgm(router esvazia filas)

» Pacote perdido retransmitido

» ArranqueLentoenquanto

congWindow<threshold

» Depois � fase de PrevençãoDeCongestionamento

Page 22: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 22PrevençãoDeCongestionamento(Congestion Avoidance)

♦ PrevençãoDeCongestionamento(subida aditiva)

» Incrementa congestionWindow de 1 sgm, por cada RTT

♦ Detecção de perda de pacote, por recepção de 3 ACKs duplicados» Deduz que pacote se perdeu,

– não por congestionamento severo, porque segm seguintes chegaram destino

» Retransmite pacote perdido Source Destination» Retransmite pacote perdido

» congestionWindow=congestionWindow / 2

» Fase de PrevençãoDeCongestionamento

Source Destination

60

20

1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0

KB

Time (seconds)

70

304050

10

10.0

Page 23: TCP - Faculdade de Engenharia da Universidade do Portomricardo/09_10/pgre/slides/tcp-flow+congestio… · TCP 3 TCP ♦ Características » Orientado às ligações » Full-duplex

TCP 23

TCP – Controlo de Congestionamento

♦ Na realidade, um pouco mais complexo

♦ RFC 2001, “TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery Algorithms”