Escolar Documentos
Profissional Documentos
Cultura Documentos
Aulas 09 e 10
Camada de Transporte
Conceitos, protocolos UDP e TCP Pedro Braconnot Velloso Redes de Computadores I Slides gentilmente cedidos pelo prof. Igor
ATENO!
Este apresentao contm partes baseadas nos seguintes trabalhos
de Rezende, J. F., Costa, L. H. M. K. e Rubinstein, M. G. - "Avaliao Experimental e Simulao do Protocolo TCP em Redes de Alta Velocidade", em XXI Simpsio Brasileiro de Telecomunicaes - SBrT'2005, setembro de 2005. Notas de aula do Prof. Jos Augusto Suruagy Monteiro, disponveis em http://www.nuperc.unifacs.br/Members/jose.suruagy/cursos
Camada de Transporte
Camada de Transporte
Prov um canal lgico de comunicao entre processos em diferentes sistemas finais
Para a aplicao, os sistemas finais esto diretamente conectados
Camada de Transporte
Prov um canal lgico de comunicao entre processos em diferentes sistemas finais
Para a aplicao, os sistemas finais esto diretamente conectados
Comunicao Fim-a-Fim
Camada de Transporte
Protocolos de transporte
Executados nos sistemas finais
Camada de Transporte
Protocolos de transporte
Executados nos sistemas finais
Transmissor
Converte as mensagens da aplicao em segmentos Encaminha os segmentos para a camada de rede
Camada de Transporte
Protocolos de transporte
Executados nos sistemas finais
Receptor
Recebe os segmentos da camada de rede Remonta as mensagens e encaminha para a aplicao
origem
datagrama Hn Ht mensagem segmento Ht
M M M M
quadro Hl Hn Ht
Encapsulamento
Hl Hn Ht
enlace fsica
Hl Hn Ht
comutador
destino
M Ht Hn Ht Hl Hn Ht M M M
Hn Ht Hl Hn Ht
M M
Hn Ht Hl Hn Ht
M M
roteador
Camada de Transporte
Existem diferentes protocolos de transporte
Fornecem diferentes tipos de servios Aplicaes usam o mais adequado ao seu propsito
Na Internet
User Datagram Protocol (UDP) Transmission Control Protocol (TCP)
Transporte x Rede
Camada de transporte
Canal lgico de comunicao entre processos
Transporte x Rede
Servio da camada de rede
Entrega de melhor esforo No garante a
Entrega dos segmentos Ordenao dos segmentos Integridade dos dados contidos nos segmentos
Servio no-confivel
Transporte x Rede
Servios da camada de transporte
Estender o servio de entrega da camada de rede
Rede: entre sistemas finais Transporte: entre processos rodando em sistemas finais
Multiplexao e demultiplexao
Verificao de integridade
Campos de deteco de erros no cabealho
Servios mnimos
Protocolos
UDP
Somente os servios mnimos
Entrega no-confivel e no-ordenada
TCP
Mais do que os servios mnimos
Entrega confivel e ordenada
Estabelecimento de conexo Controle de congestionamento Controle de fluxo
Protocolos
UDP
Somente os servios mnimos
Entrega no-confivel e no-ordenada
TCP
Mais do que os servios mnimos
Entrega confivel e ordenada
Estabelecimento de conexo Controle de congestionamento Controle de fluxo
Sockets
Um processo envia/recebe mensagens para/do seu socket
uma interface de software entre as camadas de aplicao e de transporte
API (Application Programming Interface) entre a aplicao e a rede
Sockets
API permite ao desenvolvedor
Controlar tudo do lado da camada de aplicao Controlar pouco do lado da camada de transporte
1. Escolha do protocolo 2. Alguns parmetros do protocolo
Sistema final
processo
processo
socket
TCP com buffers, variveis Internet
socket
TCP com buffers, variveis
controlado pelo SO
Endereamento de Processos
Processos devem ter um identificador Uma interface de rede de uma estao possui um identificador nico
Endereo IP de 32 bits
O endereo IP de uma estao na qual um processo est sendo executado suficiente para identificar o processo?
Endereamento de Processos
Processos devem ter um identificador Uma interface de rede de uma estao possui um identificador nico
Endereo IP de 32 bits
O endereo IP de uma estao na qual um processo est sendo executado suficiente para identificar o processo?
No!
Endereamento de Processos
Identificador inclui tanto o endereo IP quanto nmeros de portas
Associados ao processo em execuo na estao
Exemplos
???
(De)Multiplexao
um dos servios mnimos
Identificar a qual processo pertence um segmento Encaminhar para o processo correto
Socket
Interface entre a camada de aplicao e a de transporte dentro de uma mquina
(De)Multiplexao
Multiplexao
Receber as mensagens de vrios sockets Agrupar as mensagens de um mesmo socket Adicionar um cabealho
Demultiplexao
Encaminhar um segmento para o socket correto
Baseado nos dados do cabealho
(De)Multiplexao
processo Comunicao A Comunicao B
socket
Demultiplexao
Feita com base nos campo do cabealho dos segmentos e datagramas
IP origem IP destino
Demultiplexao
Feita com base nos campo do cabealho dos segmentos e datagramas
IP origem IP destino
Demultiplexao
Depende do tipo de servio oferecido pela camada de transporte
Orientado conexo No-orientado conexo
Connectionless demultiplexing
Create sockets with port numbers:
DatagramSocket mySocket1 = new DatagramSocket(12534); DatagramSocket mySocket2 = new DatagramSocket(12535);
UDP socket identified by two- IP datagrams with different source IP addresses and/or tuple: source port numbers (dest IP address, dest port number) directed to same socket
cliente IP: A
servidor IP: C
Cliente IP:B
Endereo de retorno
P1
P4
P5
P2
P1 P3
cliente IP: A
servidor IP: C
Cliente IP:B
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
Cliente IP:B
UDP
Definido pela RFC 768 Protocolo de transporte mnimo
Servio de melhor esforo
Sem conexo
No h setup entre remetente e o receptor Tratamento independente de cada segmento UDP
UDP
Por qu necessrio?
Elimina o estabelecimento de conexo
Menor latncia
simples
No mantm estado da conexo nem no remetente, nem no receptor
udio: 5kb-1Mb centenas de miliseg. vdeo:10kb-5Mb Idem at 10 kbps elstica poucos seg. centenas de miliseg. sim/no (?)
UDP
Utilizado para aplicaes multimdias
Tolerantes a perdas Sensveis taxa de transmisso
Outros usos
DNS Reduzir a latncia na requisio de pginas Web SNMP Reduzir o tempo de reao a um problema na rede
UDP
Formato do segmento
Cabealho de 8 bytes
32 bits
porta destino
checksum
soma de verificao
UDP
Soma de verificao (checksum)
Usada para detectar erros no segmento transmitido
Ex.: bits trocados Transmissor:
Trata contedo do segmento como seqncia de inteiros de 16bits Campo checksum zerado Checksum: soma (adio usando complemento de 1) do contedo do segmento Transmissor coloca complemento do valor da soma no campo checksum do cabealho UDP
Receptor:
Calcula checksum do segmento recebido Soma do checksum computado com o enviado no segmento igual a FFFF?
Exemplo de Checksum
Ao adicionar nmeros, o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado
Exemplo: adio de 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 transbordo 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 soma 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 soma de 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 verificao
Transferncia Confivel
Importante nas camadas de transporte, enlace, etc. Na lista dos 10 tpicos mais importantes em redes Caractersticas do canal no confivel determinam a complexidade de um protocolo de transferncia confivel de dados (rdt)
Transferncia Confivel
rdt_send(): chamada de cima, (ex.: pela apl.). Passa dados p/ serem entregues camada sup. do receptor deliver_data(): chamada pela entidade de transporte p/ entregar dados p/ camada superior
transmissor
receptor
udt_send(): chamada pela entidade de transporte, p/ transferir pacotes para o receptor sobre o canal no confivel
Transferncia Confivel
O que um canal confivel?
Nenhum dado transmitido corrompido Nenhum dado transmitido perdido Todos os dados so entregues ordenadamente
Transferncia Confivel
Quais os mecanismos usados para prover um canal confivel?
Sero vistos passo-a-passo
Desenvolver incrementalmente os lados transmissor e receptor de um protocolo confivel de transferncia de dados (rdt) Considerar apenas fluxo unidirecional de dados
Informaes de controle fluem em ambos os sentidos
Transferncia Confivel
Estado 1
evento aes
Estado 2
estado: neste estado o prximo estado determinado unicamente pelo prximo evento
Canal Confivel
Protocolo rdt 1.0 Canal de transmisso perfeitamente confivel
no h erros de bits no h perda de pacotes
Deteco de erros
+
Mecanismos automticos de repetio de requisio (ARQs)
Receptor
rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(NAK) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK)
Transmissor
Receptor
rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(NAK) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK)
Transmissor
O que fazer?
Remetente usa ACKs/NAKs para cada ACK/NAK do receptor
E se perder ACK/NAK do remetente?
Retransmitir
Mas pode causar retransmisso de pacote recebido certo
Receptor
rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt)
rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt)
Receptor
Deve verificar se o pacote recebido duplicado Estado indica se no. de seq. esperado 0 ou 1 Obs.: Receptor no tem como saber se ltimo ACK/NAK foi recebido bem pelo transmissor
No so identificados
aguarda 0 de baixo
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK1, chksum) udt_send(sndpkt)
Checksum, no. de seq., ACKs, retransmisses podem ajudar, mas no sero suficientes Como lidar com perdas?
Transmissor espera at ter certeza que se perdeu pacote ou ACK, e ento retransmite
Requer temporizador
retransmisso
d trans
U
0.008
sender
= 0.00027
microsec onds
d trans
U
0.008
sender
= 0.00027
microsec onds
Paralelismo (pipelining)
Transmissor envia vrios pacotes em seqncia
Todos esperando para serem reconhecidos
Faixa de nmeros de seqncia deve ser aumentada Armazenamento no Transmissor e/ou no receptor
Paralelismo (pipelining)
Duas formas genricas
Go-back-N Retransmisso seletiva
Paralelismo (pipelining)
Retransmisso seletiva
O transmissor pode ter at N pacotes no reconhecidos em trnsito Receptor reconhece pacotes individuais Transmissor possui um temporizador para cada pacote ainda no reconhecido
Se o temporizador estourar, retransmite apenas o pacote correspondente
Go-back-N (GBN)
Transmissor
No. de seq. de k-bits no cabealho do pacote Admite janela de at N pacotes consecutivos no reconhecidos
ACK(n): reconhece todos pacotes, at e inclusive no. de seq n - ACK cumulativo Pode receber ACKs duplicados Temporizador para pacote mais antigo no confirmado timeout(n): retransmite pacote n e todos os pacotes com no. de seq maiores que estejam dentro da janela
GBN em ao
Retransmisso Seletiva
Receptor reconhece individualmente todos os pacotes recebidos corretamente
Armazena pacotes no buffer, conforme necessrio, para posterior entrega ordenada camada superior
Janela de transmisso
N nmeros de seqncia consecutivos Outra vez limita nmeros de seqncia de pacotes enviados, mas ainda no reconhecidos
Retransmisso Seletiva
Retransmisso Seletiva
transmissor
Dados de cima
Se prx. no. de seq (n) disponvel est na janela, envia o pacote e liga temporizador(n)
receptor Pacote n em
Envia ACK(n)
[rcvbase, rcvbase+N-1]
Estouro do temporizador(n):
reenvia pacote n, reinicia temporizador(n) ACK(n) em [sendbase,nextseqnum-1]: marca pacote n recebido se n for menor pacote no reconhecido, avana base da janela ao prx. no. de seq no reconhecido
entrega pacotes armazenados em ordem), Avana janela p/ prxima pacote ainda no recebido
Pacote n em
ACK(n)
[rcvbase-N,rcvbase-1]
Seno:
Ignora
Retransmisso seletiva em ao
TCP
Muito mais complexo que o UDP
UDP: RFC 768 TCP: RFCs 793, 1122, 1323, 2018 e 2581
Orientado conexo
Antes do incio da transmisso existem um handshake
Dois processos trocam segmentos para definir parmetros
TCP
ponto-a-ponto
Um transmissor e um receptor
Controle de fluxo
Receptor no ser afogado pelo transmissor
Controle de congestionamento
Evitar a saturao dos enlaces da rede
Estabelecimento de Conexo
feita antes da troca de dados Inicializao de variveis
Nmeros de seqncia Tamanho dos buffers, Variveis do mecanismo de controle de fluxo
Janela de recepo (RcvWindow)
Etc.
cliente
servidor
SYN+ACK
cliente
servidor
FIN
cliente
servidor
Encerramento de Conexo
Encerramento de Conexo
Encerramento de Conexo
cliente
servidor
Segmento TCP
Cabealho: 20 bytes
Segmento TCP
Cabealho: 20 bytes
URG: dados urgentes (pouco usado) ACK: campo de ACK vlido PSH: envio imediato para a aplicao RST, SYN, FIN: estabelec. de conexo (comandos de criao e trmino) Internet checksum (como no UDP)
arquivo
// // //
1
//
1000
//
1999
//
499999
primeiro segmento
segundo segmento
arquivo
// // //
1
//
1000
//
1999
//
499999
primeiro segmento
segundo segmento
ACK cumulativo
42 1 byte
Temporizao
Como escolher valor do temporizador TCP?
Maior que o RTT
Muito longo
Reao demorada perda de segmentos
Temporizao
Como estimar o RTT?
Medir o tempo entre a transmisso de um segmento e o recebimento do ACK correspondente
Ignorar retransmisses
Temporizao
Temporizao
Intervalo de temporizao escolhido
EstimatedRTT mais uma margem de segurana
Definida pela variao das amostras em relao estimativa
Transmissor TCP
Transmissor TCP simplificado
Ignora ACKs duplicados Ignora controles de fluxo e de congestionamento
Dispara o temporizador
Se j no estiver disparado Relativo ao segmento mais antigo ainda no reconhecido Valor calculado previamente
Transmissor TCP
Quando ocorre um estouro do temporizador
Retransmitir o segmento que causou o estouro do temporizador Reiniciar o temporizador
Cenrio de Retransmisso
Perda do ACK
Reinicia o temporizador
Desliga o temporizador
Cenrio de Retransmisso
Estouro prematuro, ACKs cumulativos
Cenrio de Retransmisso
Perda de um ACK cumulativo
Desliga o temporizador
Gerao de ACKs
Evento no receptor
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 Chegada de segmento que preenche a lacuna parcial ou completamente
Ao do receptor
ACK retardado. Espera at 500 ms pelo prx. segmento. Se no chegar segmento, envia ACK Envia imediatamente um nico ACK cumulativo Envia ACK duplicado, indicando no. de seq.do prximo byte esperado ACK imediato se segmento comea no incio da lacuna
Retransmisso Rpida
O intervalo do temporizador pode ser grande
Espera demais para retransmitir um pacote perdido
Retransmisso Rpida
Host A Host B
timeout
Reenv
ia o 2
o. seg
mento
tempo
Retransmisso Rpida
event: recebido ACK, com valor do campo ACK de y if (y > SendBase) { SendBase = y if (houver segmentos ainda no reconhecidos) liga temporizador else desliga temporizador } else { incrementa contador de ACKs duplicados recebidos para y if (contador de ACKs duplicados recebidos para y = 3) { retransmita segmento com nmero de seqncia y } um ACK duplicado para um segmento j reconhecido
Retransmisso rpida
TCP: Buffers
Buffers
Transmisso e recepo Tamanho definido durante a conexo
Controle de Congestionamento
Fontes enviam dados acima da capacidade da rede de trat-los
Perda de pacotes
Saturao de buffers nos roteadores
Atrasos maiores
Espera nos buffers dos roteadores
Controle de Congestionamento
Fontes enviam dados acima da capacidade da rede de trat-los
Perda de pacotes
Saturao de buffers nos roteadores
Atrasos maiores
Espera nos buffers dos roteadores
Dois remetentes, dois receptores Um roteador, buffers infinitos Sem retransmisso Grandes retardos qdo. congestionada Mxima vazo alcanvel
vazo
atraso
out
Hospedeiro D
Hospedeiro B
Hospedeiro C
=
out in (b) Retransmisso perfeita apenas qdo. h perda:
>
out in (c) Retransmisso de pacotes atrasados (no perdidos) torna
maior (do in
out que o caso perfeito) para o mesmo
Cada pacote enviado em mdia duas vezes
R/2 R/2
R/2
R/3
out
out
out
R/2
R/4
in
R/2
in
in
R/2
a.
c.
Hospedeiro B
o u t
R/2
H o st B
Controle de Congestionamento
Controle de congestionamento fim-a-fim
No usa realimentao explcita da rede Congestionamento inferido a partir das perdas e dos atrasos observados nos sistemas finais Abordagem usada pelo TCP
Aumento aditivo
Incrementa CongWin de 1 MSS a cada RTT at detectar uma perda
Diminuio multiplicativa
Corta CongWin pela metade aps evento de perda
Aumento aditivo
Incrementa CongWin de 1 MSS a cada RTT at detectar uma perda
Diminuio multiplicativa
Corta CongWin pela metade aps evento de perda
Sem considerar a fase de inicializao: partida lenta
taxa =
Partida Lenta
No incio da conexo: CongWin = 1 MSS
Exemplo: MSS = 500 bytes = 4000 bits e RTT = 200 ms Taxa inicial = 20 kb/s
Partida Lenta
Duplica CongWin a cada RTT Atravs do incremento da CongWin para cada ACK recebido A W=1 B
RTT
Partida Lenta
Duplica CongWin a cada RTT Atravs do incremento da CongWin para cada ACK recebido A W=2 B
RTT
+2 ACKs
Partida Lenta
Duplica CongWin a cada RTT Atravs do incremento da CongWin para cada ACK recebido A W=4 B
RTT
+2 ACKs
+4 ACKs
Partida Lenta
Duplica CongWin a cada RTT Atravs do incremento da CongWin para cada ACK recebido A W=4 B
RTT
ento o +2 mo ue ACKs m l termina? em q Mas nencia +4 ACKs o expo taxa inicial ent im baixa, cresc cresce mas
rapidamente de forma exponencial
Preveno de Congestionamento
Mesmo que no haja perda ,o crescimento exponencial deve ser interrompido? Sim!
Quando CongWin atinge o limiar de partida lenta (ssthresh)
Mais uma varivel de estado Inicialmente, definido por configurao Aps uma perda o limiar ajustado para 1/2 da CongWin imediatamente antes do evento de perda
Inicialmente: ssthresh=8
Inicialmente: ssthresh=8
Aumento aditivo, resultando no incremento da CongWin de 1 MSS a cada RTT Recuperao rpida, implementa diminuio multiplicativa. CongWin no cai abaixo de 1 MSS. Entra estado de partida lenta
Limiar = CongWin/2, CongWin = Limiar, Ajusta estado para Preveno de Congestionamento Limiar = CongWin/2, CongWin = 1 MSS, Ajusta estado para Partida lenta Incrementa contador de ACKs duplicados para o segmento que est sendo reconhecido
qualquer
ACK duplicado
qualquer
Exerccio: Problema 37
Vazo do TCP
TCP
Permite o envio de W segmentos antes de receber um ACK
Janela de congestionamento
Vazo do TCP
Qual a vazo mdia do TCP em funo do tamanho da janela e do RTT?
Ignore a partida lenta
Seja W o tamanho da janela quando ocorre a perda Quando a janela W a vazo W/RTT Logo aps a perda, janela cai a W/2, e a vazo cai para W/2RTT Vazo mdia = 0,75 W/RTT
Conexo TCP 2
Exemplo:
Canal com taxa R compartilhado por 9 conexes
Novas aplicaes pedem 1 TCP obtm taxa de R/10 Novas aplicaes pedem 11 TCPs obtm taxa R/2
Implementaes
Tahoe
Original
Bic
Usado pelo Debian (/proc/sys/net/ipv4/ tcp_congestion_control)
Etc.
Problema
Requer janela de W = 83.333 segmentos em trnsito
Aulas 09 e 10
Camada de Transporte
Conceitos, protocolos UDP e TCP Pedro Braconnot Velloso Redes de Computadores I Slides gentilmente cedidos pelo prof. Igor