Arquitetura de Redes
Aula 2
1
Enquadramento (Framing)
• Por que?
–Meio físico não é livre de erros;
–Detecção e correção de erros;
–Dividir o bit-stream em quadros (unidade de dados) de forma a gerenciar a transmissão facilitando o controle de erros.
Enquadramento (Framing)
• Métodos:
–Contagem de caracter
–Enquadramento por caracter (utiliza character stuffing)
–Enquadramento por bit (utiliza bit stuffing)
Contagem de Caracter
• Adicionar um campo no header indicando o número de caracteres presentes no
quadro;
• Ao receber o quadro, o RX lê o campo de contagem e sabe a partir dali determinar onde está o final do quadro;
• Problema: erro de TX no campo de
contagem. Perde a sincronização, não pode nem haver retransmissão;
Contagem de Caracter (cont)
• Só é usado em conjunto com outras técnicas
Enquadramento por Caracter
• Idéia básica: inserir um caracter especial no início (STX) e fim (ETX) do quadro;
▪ problema: ETX (End of TeXt) ou STX (Start of TeXt) pode estar presente nos DADOS, o que gera um erro de interpretação.
SYN SYN STX HEADER DADOS ETX CRC SYN SYN
Quadro
Enquadramento por Caracter
• tentativa de solução: antes dos caracteres de
controle inserir um outro caracter (DLE - Data Link Escape).
• novo problema: os DADOS podem conter o caracter DLE.
Enquadramento por Caracter
• solução definitiva: percorrer todo o campo dos DADOS antes de transmitir, ao encontrar um
DLE inserir um outro DLE antes deste (character stuffing). Assim, quando o Receptor encontrar dois DLEs ele descarta um e sabe que o resto é texto e não controle.
• Este método fica amarrado ao código ASCII
Enquadramento por bit
• Delimitador de quadro: flag, sequência padrão de bits.
• Cada quadro começa e termina com o flag.
–Exemplo: 01111110 ou 0160
• Regra: a cada sequência de 5 bits ‘1’ inserir um bit ‘0’ (bit stuffing).
–O bit (charater) stuffing é completamente
transparente à camada de rede (transparência de caracters e transparência de bits).
Enquadramento por bit (cont)
Caso o RX perca o controle, tudo que ele tem a fazer é procurar a próxima sequência de 6 bits ‘1’ visto que
ela só poderá ocorrer nas extremidades de cada quadro.
Exemplo: HDLC (High-level Data Link Control)
Códigos de Detecção/Correção de Erros
• Existem duas estratégias básicas:
1. Incluir informação redundante suficiente
para permitir que o receptor detecte e corrija erros (“open loop”).
2. Incluir informação redundante apenas para permitir que o receptor detecte erros na
mensagem (“feedback”).
Códigos de Detecção/Correção de Erros
• Open loop: não há necessidade de
retransmissão, receptor é capaz de recuperar a informação (Forward Error Correction –
FEC).
• Feedback: receptor detecta erro e solicita
retransmissão ao transmissor (implementação através dos protocolos ARQ).
Detecção x Correção
• Correção: única solução para canais simplex
• Detecção: são geralmente mais eficientes
quando a taxa de erros do canal é baixa (poucas ReTX)
• Exemplo:
–Quadros de 1000 bits (m = 1000) necessitam 10 check bits (r = 10) para a correção de erros simples.
–Detecção de erros simples apenas 1 bit (r = 1)
–Overheads: 1 megabit de dados com error rate de 10-6 por bit
• Correção 10.000 bits extra
• Detecção 1.000 bits + ReTX (1 megabit . 10-6 = 1 ReTX) = 1000 check bits + 1001 (ReTX) = 2001 bits
Métodos de Detecção
• Paridade
• Paridade Combinada
• Checksum
• CRC (Cyclic Redundancy Code).
EDC= Bits de detecção e correção de erros (redundância)
D = Dados protegidos pela verificação de erros;
podem incluir os campos de cabeçalho
• A detecção de erros não é 100% confiável!
• Protocolos podem deixar passar alguns erros, mas é raro
• Quanto maior o campo EDC, melhor é a
capacidade de detecção e correção de erros
Detecção de erros
Detecção de erros
• Paridade
–acrescentar um bit de paridade ao caracter.
–paridade par e ímpar (nr de 1’s).
–0100 111 0 : eficiência de 7/8 ou 87,5%.
–É calculada pelo hardware de conversão para serial
Detecção de Erros
• Paridade Combinada
–Combinação da paridade longitudinal (LRC -
Longitudinal Redundancy Checking) e paridade
vertical (VRC - Vertical Redundancy Checking) –Consiste em acrescentar
um bloco (BCC - Block Character Check) que
represente uma operação lógica nos bits da
mensagem.
Detecção de Erros
• Paridade Combinada
– Exemplo: paridade par
– Transmite REDE + BCC ou REDE + BCC + VRC R E D E BCC
b6 1 1 1 1 0 b5 0 0 0 0 0 b4 1 0 1 0 0
b3 0 0 0 1 1 <= LRC b2 1 1 0 0 0
b1 0 1 1 1 1 b0 1 0 0 0 1 VRC 0 1 1 1 1
Detecção de Erros
• Paridade Combinada
– Recepção com um erro simples, detecta e corrige R E D E BCC
b6 1 0 1 1 1 b5 0 0 0 0 0 b4 1 0 1 0 0
b3 0 0 0 1 1 <= LRC b2 1 1 0 0 0
b1 0 1 1 1 1 b0 1 0 0 0 1 VRC 0 0 1 1 1
Detecção de Erros
• Paridade Combinada
– Recepção com um erro duplo, detecta mas não corrige
R E D E BCC b6 0 0 1 1 0 b5 0 0 0 0 0 b4 0 0 1 0 1
b3 0 0 0 1 1 <= LRC b2 1 1 0 0 0
b1 0 1 1 1 1 b0 1 0 0 0 1 VRC 0 1 1 1 1
Detecção de Erros
• Paridade Combinada
– Recepção com um erro quadrado, mas não detectado.
R E D E BCC b6 1 1 1 1 1 b5 0 0 0 0 0 b4 1 0 1 0 0
b3 0 0 0 1 1 <= LRC b2 1 1 0 0 0
b1 1 0 1 1 1 b0 0 1 0 0 1 VRC 0 1 1 1 1
Detecção de Erros
Objetivo: detectar “erros” (ex.: bits trocados)
num segmento transmitido (nota: usado apenas na camada de transporte)
Checksum da Internet Detecção de Erros
Transmissor:
• Trata o conteúdo de segmentos como seqüências de números inteiros de 16 bits
• Checksum: adição (soma em complemento de um) do conteúdo do segmento
• Transmissor coloca o valor do checksum no campo checksum do UDP
Checksum da Internet Detecção de Erros
Receptor:
• Computa o checksum do segmento recebido
• Verifica se o checksum calculado é igual ao valor do campo checksum:
• NÃO — erro detectado
• SIM — não detectou erro.
Checksum da Internet Detecção de Erros
Checksum da Internet Detecção de Erros
dados
Checksum da Internet
Códigos de Detecção de Erros
• Cyclic Redundancy Check (CRC):
–Cadeias de bits representadas por polinômios de coeficientes 0 e 1 apenas
–Ex: 110001 (6 bits) → x5 + x4 + x0 (polinômio de grau 5)
–Aritmética módulo 2: soma e subtração = XOR
Códigos de detecção - CRC
• Origem e destino usam um polinômio gerador:
–10011 equivale a um polinômio do grau 4: x4 + x + 1.
Códigos de detecção - CRC
• Cálculo no transmissor:
–Seja a mensagem 1101011011.
–Concatenar o número de zeros do grau do gerador:
• 11010110110000. (deslocamento de 4 bits) –Dividir 11010110110000 pelo gerador 10011:
• O resto será 1110.
–Subtrair (módulo 2) o resto da mensagem (com zeros a esquerda):
• Transmitir 11010110111110.
Códigos de detecção - CRC
• Cálculo no receptor:
–Dividir o que foi recebido pelo gerador.
–Se o resto não for zero, há erros.
Códigos de detecção - CRC
Emissor Receptor
111100101 CRC?
• O emissor deseja enviar os bits de dados 111100101.
O gerador são os bits 101101.
• Como calcular o CRC antes de enviar os dados???
CRC (Cyclic Redundancy Check)
Códigos de detecção - CRC
Emissor Receptor
11110010101010
• Após calcular o CRC cujos bits são 01010, o emissor envia os bits de dados mais os bits de CRC.
• O receptor utiliza os bits enviados e divide pelo gerador para verifica se os bits estão corretos.
• Exemplos de polinômios padronizadosCRC
– CRC-12: x12 + x11 + x3 + x2+ x + 1 – CRC-16: x16 + x15 + x2 + 1
– CRC-CCITT: x16 + x12 + x5 + 1 – HDLC: X16 + x12 + x5 + 1
• Poder do método (CRC-16 ou CRC-CCITT):
– Todos os erros simples – Todos os erros duplos
– Todos os erros com um número ímpar de bits – Bursts de até 16 bits
– Bursts de 17 bits (99.997%)
– Bursts de 18 ou mais bits (99.998%)
Arquitetura de Redes
• Aula 2 - Atividade
36
ATIVIDADE
• Explique porque em canais half ou full duplex é melhor utilizar detecção de erros a correção?
37