topico 12 - camada de transporte

49
Administração e Projeto de Redes Material de apoio para Sistemas de Informação Processamento de Dados Estudo da Camada de Transporte Estudo da Camada de Transporte 27/02/2007

Upload: api-3856186

Post on 07-Jun-2015

681 views

Category:

Documents


14 download

DESCRIPTION

Estudo da Camada de Transporte, Multiplexação e Demultiplexação, Transferência de dados e correção de erros

TRANSCRIPT

Administrao e Projeto de RedesMaterial de apoio para Sistemas de Informao Processamento de Dados

Estudo da Camada de Transporte27/02/2007

Semestre 1 Tpico 12

Estudo da Camada de Transporte

3

Esclarecimentos

Esse material de apoio para as aulas da disciplina e no substitui a leitura da bibliografia bsica Os professores da disciplina iro focar alguns dos tpicos da bibliografia assim como podero adicionar alguns detalhes no presentes na bibliografia, com base em suas experincias profissionais O contedo de slides com o ttulo Comentrios adicionais seguido de um texto, se refere a comentrios adicionais ao slide cujo texto indica e tem por objetivo incluir alguma informao adicional aos contedo do slide correspondente.

4

Glossrio

DNS:Domain Name System HTTP:Hyper Text Transfer Protocol RFC:Request for Comments SNMP:Simple Network Management Protocol TCP: Transmission Control Protocol UDP:User Datagram Protocol

5

Camada de Transporte - Definio

Estudo da Camada de Transporte: Viso geral Multiplexao e Demultiplexao: Orientados conexo No orientados conexo Transferncia de dados e correo de erros

6

Tipos de RedesFornecem comunicao lgica entre processos de aplicao em diferentes hospedeiros Os protocolos de transporte so executados nos sistemas finais Lado emissor: quebra as mensagens da aplicao em segmentos e envia para a camada de rede Lado receptor: remonta os segmentos em mensagens e passa para a camada de aplicao H mais de um protocolo de transporte disponvel para as aplicaes Internet: TCP e UDPaplicao transporte rede enlace fsica rede enlace fsica rede enlace fsica

rede enlace fsica

sp an tr

te or g l o ic

rede enlace fsica

rede enlace fsica

m fi a

m fi

aplicao transporte rede enlace fsica

7

Camada de transporte vs. camada de rede

Camada de rede: comunicao lgica entre os hospedeiros atravs de protocolo. Camada de transporte: comunicao lgica entre os processos atravs de protocolo.

Depende dos servios da camada de rede.

8

Protocolos da camada de transporte da InternetConfivel, garante ordem de entrega (TCP). Controle de congestionamento: Controle de fluxo. Orientado conexo. No confivel, sem ordem de entrega: UDP Extenso do melhor esforo do IP. Servios no disponveis: Garantia a atrasos. Garantia de banda.aplicao transporte rede enlace fsica

rede enlace fsica

rede enlace fsica rede enlace fsica

sp an tr

te or g l o ic

rede enlace fsica

rede enlace fsica

m fi a

m fi

aplicao transporte rede enlace fsica

9

Multiplexao/demultiplexaoCamada de transporteDemultiplexao no hospedeiro receptor: Entrega os segmentos recebidos ao socket correto Multiplexao no hospedeiro emissor: Coleta dados de mltiplos sockets, envelopa os dados com cabealho (usado depois para demultiplexao)

10

Como funciona a demultiplexao

Computador recebe datagramas IP Cada datagrama possui endereo IP de origem e IP de destino Cada datagrama carrega 1 segmento da camada de transporte Cada segmento possui nmeros de porta de origem e destino (lembre-se: nmeros de porta bem conhecidos para aplicaes especficas) O hospedeiro usa endereos IP e nmeros de porta para direcionar o segmento ao socket apropriado

32 bits Porta da fonte Porta do destino

outros campos do cabealho

dados da aplicao (mensagem)

11

Demultiplexao no orientada conexo

Cria sockets com nmeros de porta:DatagramSocket mySocket1 = new datagramSocket(99111); DatagramSocket mySocket2 = new DatagramSocket(99222);

Socket UDP identificado por 2 valores: (endereo IP de destino, nmero da porta de destino) Quando o hospedeiro recebe o segmento UDP: Verifica o nmero da porta de destino no segmento Direciona o segmento UDP para o socket com este nmero de porta Datagramas com IP de origem diferentes e/ou portas de origem diferentes so direcionados para o mesmo socket

12

Demultiplexao no orientada conexoDatagramSocket serverSocket = new DatagramSocket(6428);P1 P1

P2

P3

SP: 6428 DP: 9157 SP: 9157 DP: 6428

SP: 6428 DP: 5775 SP: 5775 DP: 6428

Cliente IP: A

Servidor IP: C

ClienteIP:B

SP fornece o endereo retorno 0

13

Demultiplexao no orientada conexoSocket TCP identificado por 4 valores: Endereo IP de origem Endereo da porta de origem Endereo IP de destino Endereo da porta de destino Hospedeiro receptor usa os quatro valores para direcionar o segmento ao socket apropriado Hospedeiro servidor pode suportar vrios sockets TCP simultneos: Cada socket identificado pelos seus prprios 4 valores Servidores Web possuem sockets diferentes para cada cliente conectado HTTP no persistente ter um socket diferente

14

Demultiplexao orientada conexo

P1

P4

P5

P6 SP: 5775 DP: 80 S-IP: B D-IP:C

P2

P1 P3

Cliente IP: A

SP: 9157 DP: 80 S-IP: A D-IP:C

Servidor IP: C

SP: 9157 DP: 80 S-IP: B D-IP:C

ClienteIP:B

15

Demultiplexao orientada conexo servidor web threaded

P1

P4 SP: 5775 DP: 80 S-IP: B D-IP:C SP: 9157 DP: 80 S-IP: A D-IP:C SP: 9157 DP: 80 S-IP: B D-IP:C

P2

P1 P3

Cliente IP: A

Servidor IP: C

ClienteIP:B

16

UDP: User Datagram Protocol [RFC 768]Protocolo de transporte da Internet sem gorduras Servio best effort, segmentos UDP podem ser: Perdidos Entregues fora de ordem para a aplicao Sem conexo: No h apresentao entre o UDP transmissor e o receptor Cada segmento UDP tratado de forma independente dos outros Por que existe um UDP? No h estabelecimento de conexo (que possa redundar em atrasos) Simples: no h estado de conexo nem no transmissor, nem no receptor Cabealho de segmento reduzido No h controle de congestionamento: UDP pode enviar segmentos to rpido quanto desejado (e possvel)

17

UDP: User Datagram Protocol [RFC 768]Muito usado por aplicaes de mutimdia contnua (streaming) Tolerantes perda Sensveis taxa Outros usos do UDP (por qu?): DNS (nomes) SNMP (gerenciamento) Transferncia confivel sobre UDP: acrescentar confiabilidade na camada de aplicao Recuperao de erro especfica de cada aplicao

32 bits Porta da fonte Porta do destino

outros campos do cabealho

dados da aplicao (mensagem)

18

UDP checksumObjetivo: detectar erros no segmento transmitido Transmissor: Trata o contedo do segmento como seqncia de inteiros de 16 bits Checksum: soma (complemento de 1 da soma) do contedo do segmento Transmissor coloca o valor do checksum no campo de checksum do UDP Receptor: Computa o checksum do segmento recebido Verifica se o checksum calculado igual ao valor do campo checksum: NO - erro detectado SIM - no h erros.

19

Exemplo: Internet checksumNote que: Ao se adicionar nmeros, um vai um do bit mais significativo deve ser acrescentado ao resultado. Exemplo: adicione dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 wraparound 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 sum 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

20

Princpios de transferncia confivel de dadosImportante nas camadas de aplicao, transporte e enlace Top 10 na lista dos tpicos mais importantes de redes! Caractersticas dos canais no confiveis determinaro a complexidade dos protocolos confiveis de transferncia de

21

Transferncia confivel: o ponto de partidadeliver_data(): chamada pela entidade de transporte para entregar dados para cima

rdt_send(): chamada da camada superior, (ex., pela aplicao). Passa dados para entregar camada superior receptora

lado transmissor

lado receptor

udt_send(): chamada pela entidade de transporte, para transferir pacotes para o receptor sobre o canal no confivel

rdt_rcv(): chamada quando o pacote chega ao lado receptor do canal

22

Transferncia confivel: o ponto de partidaEtapas: Desenvolver incrementalmente o transmissor e o receptor de um protocolo confivel de transferncia de dados (rdt) Considerar apenas transferncias de dados unidirecionais Mas informao de controle deve fluir em ambas as direes! Usar mquinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor

estado: quando neste estado o prximo estado fica unicamente determinado pelo prximo evento

evento causando transio de estados aes tomadas na transio de estado estado 1 evento aes estado 2

23

rdt1.0: Transfrencia confivel sobre canais confiveisCanal de transmisso perfeitamente confivel No h erros de bits No h perdas de pacotes FSMs separadas para transmissor e receptor: Transmissor envia dados para o canal subjacente Receptor l os dados do canal subjacente

24

rdt2.0: canal com erros de bitCanal subjacente pode trocar valores dos bits num pacote Checksum para detectar erros de bits A questo: como recuperar esses erros: Reconhecimentos (ACKs): receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente Reconhecimentos negativos (NAKs): receptor avisa explicitamente ao transmissor que o pacote tem erros Transmissor reenvia o pacote quando da recepo de um NAK Novos mecanismos no rdt2.0 (alm do rdt1.0): Deteco de erros

25

rdt2.0: especificao FSM

26

rdt2.0: cenrio de errordt_send(data) snkpkt = make_pkt(data, checksum) rdt_rcv(rcvpkt) && udt_send(sndpkt) isNAK(rcvpkt) aguarda aguarda chamada ACK ou udt_send(sndp de cima NAK kt) rdt_rcv(rcvpkt) && isACK(rcvpkt) L

rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(NAK) aguarda chamada de baixo rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,dat a) deliver_data(data) udt_send(ACK)

27

Rdt2.0: tem um problema fatal !O que acontece se o ACK/NAK corrompido? Transmissor no sabe o que aconteceu no receptor! No pode apenas retransmitir: possvel duplicata Tratando duplicatas: Transmissor acrescenta nmero de seqncia em cada pacote Transmissor reenvia o ltimo pacote se ACK/NAK for perdido Receptor descarta (no passa para a aplicao) pacotes duplicados Pare e espere Transmissor envia um pacote e ento espera pela resposta do receptor

28

Rdt2.1: transmissor, trata ACK/NAKs perdidos

29

Rdt2.1: transmissor, trata ACK/NAKs perdidos

30

rdt2.1: discussoTransmissor: Adiciona nmero de seqncia ao pacote Dois nmeros (0 e 1) bastam. Por qu? Deve verificar se os ACK/NAK recebidos esto corrompidos Duas vezes o nmero de estados O estado deve lembrar se o pacote corrente tem nmero de seqncia 0 ou 1 Receptor: Deve verificar se o pacote recebido duplicado Estado indica se o pacote 0 ou 1 esperado Nota: receptor pode no saber se seu ltimo ACK/NAK foi recebido pelo transmissor

31

rdt2.2: um protocolo sem NAKMesma funcionalidade do rdt2.1, usando somente ACKs Em vez de enviar NAK, o receptor envia ACK para o ltimo pacote recebido sem erro Receptor deve incluir explicitamente o nmero de seqncia do pacote sendo reconhecido ACKs duplicados no transmissor resultam na mesma ao do NAK: retransmisso do pacote corrente

32

rdt2.2: fragmentos do transmissor e do receptorrdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)aguarda chamada 0 de cima

aguarda ACK 0

fragmento FSM do transmissor

udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0) L

rdt_rcv(rcvpkt) && (corrupt(rcvpkt) || has_seq1(rcvpkt)) udt_send(sndpkt)

aguard a 0 de baixo

fragmento FSM do receptor

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt)

extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK1, chksum) udt_send(sndpkt)

33

rdt3.0: canais com erros e perdasNova hiptese: canal de transmisso pode tambm perder pacotes (dados aos ACKs) Checksum, nmeros de seqncia, ACKs, retransmisses sero de ajuda, mas no o bastante Abordagem: transmissor espera um tempo razovel pelo ACK Retransmite se nenhum ACK for recebido nesse tempo Se o pacote (ou ACK) estiver apenas atrasado (no perdido): Retransmisso ser duplicata, mas os nmeros de seqncia j tratam com isso Receptor deve especificar o nmero de seqncia do pacote sendo reconhecido Exige um temporizador decrescente

34

Transmissor rdt3.0

35

rdt3.0: em ao

36

rdt3.0: em ao

37

Desempenho do rdt3.0

rdt3.0 funciona, mas o desempenho sofrvel Exemplo: enlace de 1 Gbps, 15 ms de atraso de propagao, pacotes de 1 KB:

L (tamanho do pacote em bits) 8 kb/pkt T = = = 8 microseg R (taxa de transmisso, bps) 10**9 b/s transmiss o

U

sender =

L/ R

RTT + L / R

=

.008

30.008

= 0.00027microsegmicroseco nds

U

sender

: utilizao frao de tempo do transmissor ocupado

Um pacote de 1 KB cada 30 ms -> 33 kB/s de vazo sobre um canal de 1 Gbps O protocolo de rede limita o uso dos recursos fsicos!

38

rdt3.0: operao pare e espere

U

39

Protocolos com paralelismo (pipelining)Paralelismo: transmissor envia vrios pacotes ao mesmo tempo, todos esperando para serem reconhecidos Faixa de nmeros de seqncia deve ser aumentada Armazenamento no transmissor e/ou no receptor

(a) operao do protocolo pare e espere

(a) operao do protocolo com paralelismo

Duas formas genricas de protocolos com paralelismo: go-Back-N, retransmisso seletiva

40

Pipelining: aumento da utilizao

Aumento da utilizao por um fator de 3!

U

sender =

3* L/ R RTT + L / R

=

.02430.008

= 0.0008

microsecon ds

41

Go-Back-NTransmissor: Nmero de seqncia com k bits no cabealho do pacote janela de at N pacotes no reconhecidos, consecutivos, so permitidos

ACK(n): reconhece todos os pacotes at o nmero de seqncia N (incluindo este limite). ACK cumulativo Pode receber ACKs duplicados (veja receptor) Temporizador para cada pacote enviado e no confirmado Tempo de confirmao (n): retransmite pacote n e todos os pacotes com nmero de seqncia maior que estejam dentro da janela

42

GBN: FSM estendida para o transmissor

43

GBN: FSM estendida para o receptor

Somente ACK: sempre envia ACK para pacotes corretamente recebidos com o mais alto nmero de seqncia em ordem Pode gerar ACKs duplicados Precisa lembrar apenas do expectedseqnum Pacotes fora de ordem: Descarta (no armazena) -> no h buffer de recepo! Reconhece pacote com o mais alto nmero de seqncia em ordem

44

GBN em ao

45

Retransmisso seletivaReceptor reconhece individualmente todos os pacotes recebidos corretamente Armazena pacotes, quando necessrio, para eventual entrega em ordem para a camada superior Transmissor somente reenvia os pacotes para os quais um ACK no foi recebido Transmissor temporiza cada pacote no reconhecido Janela de transmisso N nmeros de seqncia consecutivos Novamente limita a quantidade de pacotes enviados, mas no reconhecidos

46

Retransmisso seletiva: janelas do transmissor e do receptor

47

Retransmisso seletivaTRANSMISSOR Dados da camada superior: Se o prximo nmero de seqncia disponvel est na janela, envia o pacote Tempo de confirmao(n): Reenvia pacote n, restart timer ACK (n) em [sendbase,sendbase+N]: Marca pacote n como recebido Se n o menor pacote no reconhecido, avana a base da janela para o prximo nmero de seqncia no reconhecido RECEPTOR Pacote n em [rcvbase, rcvbase + N -1] Envia ACK(n) Fora de ordem: armazena Em ordem: entrega (tambm entrega pacotes armazenados em ordem), avana janela para o prximo pacote ainda no recebido pkt n em [rcvbase-N,rcvbase-1] ACK(n) Caso contrrio:

48

Retransmisso seletiva em ao

49

Retransmisso seletiva: dilemaExemplo: Seqncias: 0, 1, 2, 3 Tamanho da janela = 3 Receptor no v diferena nos dois cenrios! Incorretamente passa dados duplicados como novos (figura a) P.: Qual a relao entre o espao de numerao seqencial e o tamanho da janela?