Redes de Computadores 1
Redes de Enlaces Diretos
Sumário
Codificação
Estruturação em quadros
Detecção de Erros
Algoritmos de Janelas Deslizantes
Redes de Computadores 2
Encoding
• Signals propagate over a physical medium
– Modulate electromagnetic waves– E.g., vary voltage
– Encode, transmit signal, decode
– Network adaptor: contains signaling componentes that:
– Encode the bits into signals at sending node – Decode the signals into bits at the receiving node
Redes de Computadores 3
Codificação
• Sinais viajam entre componentes de
sinalização
• Bits fluem entre adaptadores
Bits Signal
Adaptor Adaptor Node B
Node A
Redes de Computadores 4
Encoding: NRZ
• Encode binary data onto signals
– e.g., 0 as low signal and 1 as high signal – known as Non-Return to Zero (NRZ)Bits NRZ
0 0 1 0 1 1 1 1 0 1 0 0 0 0 1 0
Problem: Consecutive 1s or 0s
• NRZ: receivers keep averages of the signals
received to distinguish 0s and 1s
• After a long sequence of 0s or 1s the average
moves up or down:
– It becomes difficult to detect a significant change in the signal
Problem: Consecutive 1s or 0s
• NRZ: Clock recovering
• Frequent transitions from low to high and
vice-versa are necessary to enable clock
recovery
• Both the encoding and decoding processes
are driven by a clock:
– Every clock cycle the sender transmits a bit and the receiver recovers a bit
Redes de Computadores 7
Encoding: NRZI
• Non-return to Zero Inverted (NRZI)
• make a transition from current signal to
encode a one;
• stay at current signal to encode a zero.
• solves the problem of consecutive ones
Redes de Computadores 8
Encoding: Manchester
• Manchester
– transmit XOR of the NRZ encoded data and the clock
– The frequency of the signal is twice the binary code – Alternatively:
• O: transition from low to high • 1: transiton from high to low
– Rate at which the signals change: baud rate – Rate at wich the bits change: bit rate – Manchester is only 50% efficient.
Redes de Computadores 9
Encodings (cont)
Bits NRZ Clock Manchester NRZI 0 0 1 0 1 1 1 1 0 1 0 0 0 0 1 0 Redes de Computadores 10Encoding: 4B/5B
• 4B/5B
– every 4 bits of data encoded in a 5-bit code – 5-bit codes selected to have no more than one
leading 0 and no more than two trailing 0s – thus, never get more than three consecutive 0s – resulting 5-bit codes are transmitted using NRZI
• solves the problem of consective ones
– achieves 80% efficiency
Encoding: 4B/5B
4 bits 5bits 0000 11110 0001 01001 0010 10100 0011 10101 0100 01010 0101 01011 0110 01110 0111 01111 4 bits 5 bits 1000 10010 1001 10011 1010 10110 1011 10111 1100 11010 1101 11011 1110 11100 1111 11101Framing
• Problema a ser resolvido:
– Como agrupar seqüências de bits em quadros para que possam ser processados como unidades de informação?
ou, de outra forma,
– Como fazer delimitação de quadros?Redes de Computadores 13
Framing: Soluções
• Inserir intervalos de tempo entre
transmissões de quadro
– Em comunicação assíncrona não é viável
• Fazer contagem de caracteres
Redes de Computadores 14
Framing
• Break sequence of bits into a frame
• Typically implemented by network adaptor
Frames Bits
Adaptor Adaptor Node B
Node A
Redes de Computadores 15
Approaches
• Sentinel-based
– delineate frame with special pattern: 01111110 – e.g., HDLC, SDLC, PPP
– problem: special pattern appears in the payload – solution: bit stuffing
• sender: insert 0 after five consecutive 1s • receiver: delete 0 that follows five consecutive 1s
Header Body
8 16 16 8
CRC Beginning
sequence Endingsequence
Redes de Computadores 16
Flags de
início e fim de quadro
• Bits são transmitidos de forma transparente:
– TX ao encontrar cinco bits 1 consecutivos insereum bit 0
– RX ao receber cinco bits 1 seguido de um bit 0 remove o bit 0
• Processo conhecido como bit stuffing
Approaches (cont)
• Counter-based
– include payload length in header – e.g., DDCMP
– problem: count field corrupted – solution: catch when CRC fails
SYN Header Body
8 8 8 14 42 16 SYN Clas s CRC Count
Contagem de caracteres
• Princípio:
– Usa um campo no cabeçalho para especificar o número de caracteres no quadro
• Problema: erro nesse campo faz com que o
receptor perca a sincronização
• Não é usado na prática para protocolos da
camada de enlace
Redes de Computadores 19
Contagem de caracteres
Redes de Computadores 20
Caracteres de
início e fim de quadro
• Quadro é delimitado por caracteres
especiais: DLE STX e DLE ETX
• Um DLE no meio de um quadro é prefixado
por outro DLE (character stuffing) para
distinguir do fim de quadro
• Método usado em protocolos orientados a
caracteres
Redes de Computadores 21
Caracteres de
início e fim de quadro
Redes de Computadores 22
Approaches (cont)
• Clock-based
– each frame is 125us long
– e.g., SONET: Synchronous Optical Network – STS-n (STS-1 = 51.84 Mbps) Overhead Payload 90 columns 9 rows STS-1 Hd r STS-1 Hd r STS-1 Hd r STS-3c Hdr
Detecção de Erros de Transmissão
• A natureza dos erros
• Eficiência dos canais de transmissão
• Códigos detectores de erros
– Paridade horizontal e vertical – Soma de verificação – checksum – Verificação de redundância cíclica - CRC
• Códigos corretores de erros
Cyclic Redundancy Check
• Add k bits of redundant data to an n-bit
message
– want k << n
– e.g., k = 32 and n = 12,000 (1500 bytes)
• Represent n-bit message as n-1 degree
polynomial
– e.g., MSG=10011010 as M(x) = x7 + x4 + x3 + x1
• Let k be the degree of some divisor polynomial
Redes de Computadores 25
CRC (cont)
• Transmit polynomial P(x) that is evenly divisible by C(x)
– shift left k bits, i.e., M(x)xk
– subtract remainder of M(x)xk / C(x) from M(x)xk
• Receiver polynomial P(x) + E(x)
– E(x) = 0 implies no errors
• Divide (P(x) + E(x)) by C(x); remainder zero if:
– E(x) was zero (no error), or – E(x) is exactly divisible by C(x)
Redes de Computadores 26
Selecting C(x)
• All single-bit errors, as long as the xk and x0 terms have
non-zero coefficients.
• All double-bit errors, as long as C(x) contains a factor with at least three terms
• Any odd number of errors, as long as C(x) contains the factor (x + 1)
• Any ‘burst’ error (i.e., sequence of consecutive error bits) for which the length of the burst is less than k bits.
• Most burst errors of larger than k bits can also be detected • See Table 2.6 on page 102 for common C(x)
Redes de Computadores 27
Internet Checksum Algorithm
• View message as a sequence of 16-bit integers; sum using 16-bit complement arithmetic; take ones-complement of the result.
u_short
cksum(u_short *buf, int count) {
register u_long sum = 0; while (count--) {
sum += *buf++; if (sum & 0xFFFF0000) {
/* carry occurred, so wrap around */ sum &= 0xFFFF;
sum++; } }
return ~(sum & 0xFFFF); }
Redes de Computadores 28
Violações de código da camada
física
• Método é baseado numa característica da
camada inferior
• Existem códigos de transmissão que
possuem uma transição no meio do período
de transmissão de um bit
• O início e fim de quadro são determinados
por um código de transmissão inválido
Violações de código da camada
física
• O início e fim de quadro são determinados
por um código de transmissão inválido
• Ex.: Codificação Manchester
1: alto à baixo 0: baixo à alto alto – alto:não usado baixo – baixo: não usado alto-alto-baixo-baixo à delimitador – Usado no padrão IEEE 802
Transmissão confiável
• O objetivo
de um serviço de transmissão confiável é:
Entregar
em ordem
e sem repetições
Os dados recebidos da camada física
Redes de Computadores 31
Transmissão confiável: controle de
erros
• Mecanismos para oferecer serviço confiável
quanto a erros (regras de procedimento):
– Confirmação positiva e negativa de quadros pelo destinatário
– Temporização de quadros enviados pela origem – Número de seqüência de quadros
– Retransmissão de quadros um número finito de vezes
Redes de Computadores 32
Transmissão confiável: controle de
fluxo
• Objetivo:
– Evitar que TX envie mais quadros que a capacidade de processamento de RX
• Idéia geral:
– Usar algum mecanismo de realimentação para que o TX saiba sobre o estado do RX – Normalmente existem regras que usam um
mecanismo explícito ou implícito para fazer o controle de fluxo
Redes de Computadores 33
Comentários sobre as questões
de projeto
• Várias dessas questões se repetem em
outras camadas
• A solução a ser adotada para cada questão
depende da camada, protocolo e aplicação
• Essas questões são consideradas
fundamentais no projeto de qualquer
protocolo
Redes de Computadores 34
Confirmação na carona:
Piggybacking
• Seja o seguinte protocolo ponto-a-ponto
entre entidades A e B:
– Usa confirmação
– A transmissão de dados é full-duplex
– É possível embutir numa PDU de dados enviada de B para A a confirmação de uma PDU de dados enviada de A para B já recebida (o mesmo para o caso contrário)
– Isto é conhecido como confirmação na carona ou Piggybacking
Confirmação na carona:
Piggybacking
• Melhor utilização do canal
• Utiliza apenas alguns bits ao contrário de
uma PDU de controle
• Menos PDUs a processar
• Possivelmente menos buffers no RX
• Se não há uma PDU para ser enviada de B
Ù A, quanto tempo deve-se esperar para
confirmar uma PDU já enviada e recebida de
A Ù B?
Transmissão confiável:
ARQ – automatic repeat request
• Estratégias que usam confirmações e
temporizações para implementar transmissão
confiável
– Algoritmo pára-e-espera – Algoritmos de janela deslizante – Canais lógicos concorrentes
Redes de Computadores 37
Acknowledgements & Timeouts
Sender Receiver Frame ACK T im eout Tim e Sender Receiver Frame ACK Ti m eout Frame ACK Ti m eout Sender Receiver Frame ACK T im eout Frame ACK Ti m eout Sender Receiver Frame Ti m eout Frame ACK Ti m eout (a) (c) (b) (d) Redes de Computadores 38
Stop-and-Wait
Sender Receiver Frame 1 Frame 0 Frame 0 ACK 0 ACK 1 ACK 0 Redes de Computadores 39Stop-and-Wait
• Problem: keeping the pipe full
• Example
1.5Mbps link x 45ms RTT = 67.5Kb (8KB) BitsPerFrame / TimePerFrame
= 1024 x 8 / 0,045 = 182 Kbps
1KB frames implies 1/8th link utilization
Redes de Computadores 40
Protocolos de janela deslizante
• Princípio:
– Cada quadro tem um campo de número de seqüência de n bits
– O transmissor mantém um conjunto de números de seqüência que pode enviar
• Janela de transmissão (sending window)
– O receptor mantém um conjunto de números de seqüência que pode receber
• Janela de recepção (receiving window)
Sliding Window
• Allow multiple outstanding (un-ACKed)
frames
• Upper bound on un-ACKed frames, called
window
Sender ReceiverT
im
e
…
…
Protocolos de janela deslizante
• Os tamanhos das janelas de transmissão e
recepção não precisam ser os mesmos
• Números dentro da janela de transmissão
representam quadros
– Enviadas mas não confirmadas, ou – Não transmitidas ainda
Redes de Computadores 43
Protocolos de janela deslizante
• PDUs transmitidas e não confirmadas devem
ser mantidas em buffers
• Deve haver um temporizador associado a
PDU transmitida a mais tempo
• Números dentro da janela de recepção
representam PDUs que podem ser aceitas
Redes de Computadores 44
Protocolos de janela deslizante
• Confirmação:
– Quadros aceitos são confirmados na carona de um quadro de dados (piggybacking) ou por um quadro de controle
Redes de Computadores 45
Janela deslizante de tamanho 1
Redes de Computadores 46
Comentários sobre o
serviço oferecido
• A camada n+1 na máquina destino deve
receber os dados na mesma ordem em que
foram passados para a camada n na
máquina origem
– Isso pode ser obtido através do número de seqüência
– Neste caso, a camada n é a camada de enlace
Comentários sobre o
serviço oferecido
• A camada física implementa um canal de
comunicação FIFO (first-in-first-out), ou seja,
preserva a ordem dos quadros transmitidos
– Isto poderia ser outra forma de oferecer o serviço acima
Colisão em protocolos
• Duas entidades enviam dados
“simultaneamente”, cada uma para a outra
• Não é um erro do protocolo mas afeta o seu
Redes de Computadores 49
Colisão em protocolos
Redes de Computadores 50
O ambiente no
projeto de protocolos
• O ambiente onde o protocolo é executado
tem um papel importante no projeto de
protocolos
• Seja o seguinte cenário:
se Tempo para transmissão de uma PDU + Tempo de retorno da confirmação é grande
então pode haver uma baixa eficiência do canal de comunicação Redes de Computadores 51
O ambiente no
projeto de protocolos
• Exemplo:
– Canal de satélite de 50 kbps– Tempo de propagação de ida e volta (round trip) = 500 ms
– Tamanho do quadro = 1000 bits
Redes de Computadores 52
O ambiente no
projeto de protocolos
• Cenário
– t=0: início da transmissão – t=20: fim da TX do quadro– t=270: receptor recebe todo o quadro – t=520: transmissor recebe confirmação
• Análise:
– Tempo de bloqueio do transmissor = 500 ms ou 500/520 = 96%
O ambiente no
projeto de protocolos
• Solução:
– Permitir que mais quadros sejam transmitidos antes de parar e esperar por confirmação – No exemplo acima, pelo menos 26 quadros Ù 520
ms
– Técnica conhecida como pipelining
Pipelining
• Questão a ser resolvida:
– Um quadro com erro no meio de uma seqüência deve ser ignorado ao chegar no RX
– O que o RX deve fazer com os quadros corretos restantes?
Redes de Computadores 55
Pipelining
• Duas soluções básicas:
– Retransmitir a partir do quadro errado
• Go back n
– Repetir seletivamente
• Selective repeat
• A eficiência de cada solução depende do
tamanho da janela, taxa de erros, etc
Redes de Computadores 56
Go back n: Recepção
• Ignora todos os quadros recebidos após o
quadro errado
• Confirma somente os quadros recebidos
corretamente na seqüência
Redes de Computadores 57
Go back n: Transmissão
• Temporiza o primeiro quadro não confirmado
• Retransmite esse quadro
• Repete o processo até que todos os quadros
sejam confirmados, ou
• Até que um quadro seja enviado um número
máximo de vezes e não haja confirmação
Redes de Computadores 58
Selective repeat
• Similar ao go back n, exceto que RX
armazena todos os quadros recebidos
corretamente
• Pode necessitar muitos buffers no caso do
tamanho da janela ser grande
Comentários sobre as soluções
• As duas soluções definem um compromisso
entre largura de banda (BW) e buffers
disponíveis
• A solução a ser adotada pode depender de
qual recurso é mais valioso
Redes de Computadores 61
Determinando o
tamanho da janela
• Suponha uma janela de TX e RX de tamanho
8, duas entidades A e B, e o seguinte
cenário:
– A envia para B os quadros de 0 a 7
– B confirma para A (por exemplo, na carona) o quadro 7
– A envia para B mais um conjunto de quadros numerados de 0 a 7
– B confirma novamente para A o quadro 7
Redes de Computadores 62
Determinando o
tamanho da janela
• B recebeu corretamente todos os dois
conjuntos de oito quadros?
– Não necessariamente!
• Um Ack 7 pode confirmar um dos seguintes
quadros:
... 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 …
• Com espaço de numeração de n bits podem
ser transmitidos no máximo 2
n- 1 quadros
Redes de Computadores 63
Determinando o tamanho da janela
Redes de Computadores 64
Determinando o
tamanho da janela
• Quando o tamanho da janela de transmissão
é igual ao espaço de numeração à
– Problemas de duplicação e ordenação
• Solução
à
– Sempre fazer a janela <= (MaxSeq + 1) /2
Simulação de temporizadores em
software
• Suponha que:
– Às 10:00:00.0 existam três timeouts pendentes:
• 10:00:00.5, • 10:00:01.3 e • 10:00:01.9
– O relógio real é incrementado a cada 100 ms
Simulação de temporizadores em
software
Redes de Computadores 67
Comentário sobre projeto de
protocolos
• Princípio da separação de funções
– É preciso ter cuidado para distinguir funções àsvezes desempenhadas juntas num mesmo mecanismo:
• Entrega confiável • Entrega ordenada • Controle de fluxo
– Às vezes combinadas num mesmo protocolo de janela deslizante
Redes de Computadores 68
Implementation aspects: sender
• Assign sequence number to each frame
– SeqNum
• Maintain three state variables:
– send window size (SWS) – last acknowledgment received (LAR) – last frame sent (LFS)
Redes de Computadores 69
Implementation: Sender
• Maintain invariant: LFS - LAR <= SWS
• Advance LAR when ACK arrives • Buffer up to SWS frames £ SWS LAR LFS
…
…
Redes de Computadores 70Implementation: Receiver
• Maintain three state variables
– receive window size - (RWS) – largest frame acceptable - (LFA) – next frame expexted - (NFE)• Maintain invariant:
LFA - NFE <= RWS£ RWS
NFE LFA
…
…
Implementation: Receiver
• Frame SeqNum arrives:
– if NFE <= SeqNum < = LFA à accept – if SeqNum < NFE or SeqNum > LFA à discard
• Send cumulative ACKs
Strategy: Concurrent Logical Channels
• Used in Arpanet
• Alternative to SWP
• Keeps the pipe full
• Multiplex 8 logical channels over a single link
• Run stop-and-wait on each logical channel
• Maintain three state bits per channel
– channel busy
– current sequence number out – next sequence number in
Redes de Computadores 73
Concurrent Logical Channels
• Header:
– 3 bits channel number – 1 bit sequence number – 4 bits total
– same as sliding window protocol