t cnicas de detec o e corre o de erros - lee.eng.uerj.brgil/redesii/tecnicas de detecao e correcao...

51
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 1 Técnicas de Detecção e Correção de Erros Gil Pinheiro UERJ-FEN-DETEL Redes de Comunicação - Notas de Aula

Upload: vuphuc

Post on 05-Feb-2018

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 1

Técnicas de Detecção e Correção de Erros

Gil Pinheiro

UERJ-FEN-DETEL

Redes de Comunicação - Notas de Aula

Page 2: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 2

Situações que Requerem Detecção ou Correção de Erros

• Operação não assistida de sistemas com mínimo de equipamentos redundantes (em stand-by)

• Sistemas extremamente grandes e complexos, onde uma falha simples incapacita uma instalação inteira

• Sinalização (mensagem) com presença de ruído, onde éimpossível ou anti econômico reduzir o efeito do ruído no sinalAs duas primeiras ocorrem em computadores e a terceira em sistemas de comunicação (redes, rádios digitais, etc...)

• A correção de erros é aplicada quando o custo do enlace é mais caro ou quando possui elevado tempo de resposta (Ex. enlaces via satélite)

Page 3: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 3

Quadro com Campo de Verificação

• A quantidade total de bits será: n = m + r

Mensagem (m bits) Verificação (r bits)

Page 4: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 4

Redundância de um Código

• A redundância de um código, R, é a proporção de informação redundante, necessária para a detecção e/ou correção de erros

• A partir dos valores de m, n e r, define-se R [1] como: – R = n / m = (m + r) / m = 1 + (r/m)

• R mede a eficiência de um código, do ponto de vista de consumo de banda de um canal de transmissão.

• Desse modo, ocupando um canal com maior quantidade de bits de verificação (r), reduz-se a quantidade de bits de informação (m) que podem ser transmitidos.

• Como um canal possui sempre uma capacidade limitada de transmissão de informação (n), deve existir um balanço entre a quantidade de informação (m) e de bits de verificação (r)

Page 5: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 5

Redundância de um Código

• Então, como um canal possui sempre uma capacidade limitada de transmissão de informação, que limita a quantidade total (n) bits por segundo

• Deve existir um compromisso entre a quantidade de informação (m) e de bits de verificação (r), onde n=m+r

Page 6: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 6

Distância de Hamming

• Seja um código binário com m bits, então existem 2m mensagens válidas

• São agregados r bits para a verificação ou correção de erros

• Resultando uma mensagem com: n = m + r bits

• A Distância de Hamming é quantidade de bits 1, resultante do cálculo do XOR entre duas palavras de código binárias

Page 7: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 7

Distância de Hamming

• Pode-se provar que:

– Para detectar d erros é necessário um código com distância mínima igual a dmín = d+1

– Para corrigir d erros é necessário um código com distância mínima igual a dmín = 2d+1

• A Distância Mínima (dmín) de um código é a menor Distância de Hamming encontrada, considerando todas as combinações válidas de palavras do código

Page 8: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 8

Verificação de Erros Simples (Bit de Paridade)

• Paridade impar: – Para quantidade ímpar de bits de dados, a Paridade é 1

• Paridade par: – Para quantidade par de bits de dados, a Paridade é 1

• Exemplos:– Paridade Impar: se M=0100101, Paridade=1

– Paridade Par: se M=01001010010100, Paridade=0

Page 9: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 9

Verificação de Erros Simples (Bit de Paridade)

• Seja um código binário de 8 bits, que pode gerar 28

(=256) caracteres. Usando um bit de paridade impar, teremos:– Distância de Hamming = 000000000 XOR 000000011 =

00000011 => Distância Mínima = dmín = 2

– Sendo: m = 8, r = 1, n = 8 + 1 = 9

– É possível detectar 1 erro, ou 1 bit errado apenas

– Redundância: R = n / m = 9 / 8 = 1,125

– Um bit de paridade não permite recuperar erros (Mesmo com um erro, é impossível saber se erro é na paridade ou no bit errado)

Page 10: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 10

Verificação de Erros Simples (Bit de Paridade)

• Sendo R = n / m = n / (n -1) = 1 + 1 / (n-1)

• Buscando maior economia de canal de transmissão, para termos uma redundância R pequena, n deve ser muito grande

• Porém, a probabilidade de termos pelo menos um bit errado não detectado aumenta

• Se a probabilidade de um bit errado for p << 1:– Para n tão grande quanto 1/p, a probabilidade de termos

um bit correto é de 1/e = 0,3679

– A probabilidade de dois bits corretos é de 1/2e = 0,1839 ...

Page 11: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 11

Distância de Hamming

– Exemplo 2• Desenvolva um código para transmitir um bit (0 ou 1) com

correção de erro simples

• Solução:

– Temos que determinar um código m+r

– Parte-se de um código simples (m) de 1 bit (0 ou 1), onde d=1

– Para correção de um erro simples são necessários (2d+1) bits = 3 bits. E a distância de Hamming mínima: dmin = 3

– Então: n = m + r, sendo n = 3 bits

– Num conjunto de 3 bits, entre todas as combinações possíveis, podemos associar as mensagens mais distantes tal como: 000 com onível 0 e 111 como o nível 1

– Desenhando um diagrama de símbolos do código

Page 12: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 12

Distância de Hamming

– Exemplo 2000

100010001

Todas as conexões:

d = 1

011 110 101

111

Nível 0

Nível 1

Page 13: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 13

Distância de Hamming

– Exemplo 2• Podemos perceber que os símbolos adjacentes a 000 e 111,

possuem distância de Hamming 1, respectivamente 001 / 010 / 100 e 011 / 110 / 101

• Assim, na correção de um bit errado apenas, podemos associar esses estados adjacentes aos mesmos níveis lógicos dos estados 000 (0) ou 111 (1)

• Por outro lado, com 2 bits errados, o código apresenta ambigüidades, não sendo válido nesse caso

• Para a correção de 1 bit, podemos desenhar o gráfico a seguir:

Page 14: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 14

Distância de Hamming

– Exemplo 2000

100010001

Todas as conexões:

d = 1

011 110 101

111

Nível 0

Nível 1

Page 15: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 15

Distância de Hamming

– Exemplo 2

000

Todas as conexões:

distância d = 1

011

110

101 111

Diagrama de estados (Cubo)

001

010

100

b0

b1

b3

Page 16: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 16

Distância de Hamming

– Exemplo 2• Resumindo:

– Tamanho do quadro: n = m + r = 1 + 2 = 3 bits

– Havendo 2n = 8 mensagens possíveis, onde:• Mensagens válidas: 2m = 2

• Mensagens inválidas: 2n - 2m = 8 – 2 = 6

• Temos 3 mensagens inválidas com distância 1 de cada mensagem válida

• As mensagens inválidas podem ser aproximadas para a mensagem válida de menor distância de Hamming (dmín=1)

Page 17: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 17

Algoritmo de Hamming

• Hamming [1] criou um código com m bits de mensagem e r bits de verificação, de modo que:– Possibilite a correção de todos os erros simples. Cada uma

das 2m mensagens válidas tem n palavras de código inválidas a uma distância igual a 1 da mensagem válida.

– Essas palavras inválidas são formadas pela inversão sistemática de cada um dos n bits da palavra de código de n bits formada a partir dela.

– Portanto, cada uma das 2m mensagens válidas exige n + 1 padrões de bits dedicados a ela.

– Como o número total de padrões de bits é 2n e utilizando n = m + r, devemos ter um código que atenda a: (n + 1)2m ≤2n

Page 18: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 18

Código de Correção de 1 Erro

• Considerando um quadro com n bits, onde há m bits de informação e r bits de verificação, tal que: n = m + r ... (1)

• O objetivo é determinar uma combinação de valores para os r bits de verificação, formando um código de verificação

• Iremos impor a condição de que cada um dos códigos de verificação (os r bits) indique a posição errada em qualquer um dos n bits, com o valor zero indicando que não há erro

• Desse modo, o código de verificação (de r bits) deverádescrever n + 1 = m + r + 1 condições, de modo que: 2r ≥ m + r + 1 ... (2)

• De (1) e (2), temos: 2m ≤ 2r / (n+1) .... (3)

Page 19: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 19

Código de Correção de 1 Erro

2m ≤ 2r / (n+1)

• Da equação (3) podemos calcular a Tabela I, que fornece os valor máximo de m para um dado n. Ou então o valor mínimo de n para um dado m

• A Tabela I também fornece a quantidade de bits em r (=n-m)

n m r1 0 12 0 23 1 24 1 35 2 36 3 37 4 38 4 49 5 4

10 6 411 7 412 8 413 9 414 10 415 11 416 11 517 12 518 13 5... ... ...

TABELA - I

Page 20: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 20

Código de Correção de 1 Erro

• Geração dos Bits de Verificação e posições verificadas, entre parênteses:– Bit de verificação de ordem 1:

• 1 (1), 11(3), 101(5), 111(7), 10011(9), ...

– Bit de verificação de ordem 2: • 10 (2), 11(3), 110(6), 111(7), 1010(10), ...

– Bit de verificação de ordem 4: • 100 (4), 101(5), 110(6), 111(7), 1100(12), ...

– Bit de verificação de ordem 8: • 1000 (8), 1001(9), 1010(10), 1011(11), 1100(12), ...

Page 21: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 21

Código de Correção de 1 Erro

• Tabulando-se os valores de bit de verificação (Check Bit), a partir dos bits de m, geramos a Tabela II

• Na Tabela II também estão as posições verificadas

• O Check Bit é um para uma quantidade ímpar de posições verificadas

Bit de Dados (m)

Posição do Check Bit

Posições Verificadas

1 1 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, ...2 2 2, 3, 6, 7, 10, 11, 14, 15, 18, ...3 4 4, 5, 6, 7, 12, 13, 14, 15, 20, ...4 8 8, 9, 10, 11, 12, 11, 12, 13, 14, 15, 24, ...5 16 16, 17, 18, 19, 20, 21, 22, 23, 24, ...6 32 32, 33, 34, 35, 36, 37, 38, 39, 40, ...7 64 64, 65, 66, 67, 68, 69, 70, 71, ...... ... ...

TABELA - II

Page 22: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 22

Código de Correção de 1 Erro

• Na montagem do código:– Cria-se uma tabela com n (=m+r) colunas, para conter os códigos, As

colunas são numeradas da esquerda para a direita

– Os bits de verificação (r), determinados pela Tabela-II, são colocados nas colunas correspondentes (1,2,4,8,16,...)

– Os bits de dados (m) são colocados da direita para a esquerda, nas posições restantes da tabela

Page 23: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 23

Código de Correção de 1 Erro

• Tabela de código do exemplo 3:

Page 24: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 24

• Seja um código com 16 mensagens (M), com codificação binária (m = 4 bits), conforme a seguir, gerar uma seqüência de código conforme algoritmo de Hamming:

M m M m M m M m

0 0000 4 0100 8 1000 12 1100

1 0001 5 0101 9 1001 13 1101

2 0010 6 0110 10 1010 14 1110

3 0011 7 0111 11 1011 15 1111

Exemplo 3 - Enunciado

Page 25: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 25

• Gerando um novo código, com 3 bits de verificação, conforme o algoritmo de Hamming, teremos:

M m+r M m+r M m+r M m+r

0 0000000 4 1001100 8 111000 12 0111100

1 1101001 5 0100101 9 0011001 13 1010101

2 0101010 6 1100110 10 1011010 14 0010110

3 1000011 7 0001111 11 0110011 15 1111111

Exemplo 3 - Resposta

Bits 1 2 3 4 5 6 7

Valor 1 0 0 0 0 1 1

Check bits: 1, 2, 4

Data bits: 3, 5, 6, 7

Page 26: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 26

Exemplo – 3

Código de Correção de Erros (Hamming)

• Vamos supor que o quadro enviado tenha 1 erro na recepção, conforme a seguir:– Quadro enviado: 0111100 (= código 12)

– Quadro recebido: 0111000 (1 bit com erro)

– Onde:• Bits de Verificação Recebidos: 011

• Bits de Dados Recebidos: 1000

• Bits de Verificação Determinados pela Tab. II: 110

– Calculando o bit errado:• XOR dos Bits de Verificação: 011 XOR 110 = 101 = 5

• Então: O bit 5 do quadro está trocado

Page 27: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 27

Código de Hamming em Grupos

• Quando os erros ocorrem em bits isolados, o Código de Hamming, mostrado anteriormente, é suficiente para detectar ou corrigir erros

• Porém, a situação mais freqüente é a ocorrência de rajadas de erros, onde vários bits são afetados.

• A solução é o envio de grupos de k quadros arrumados matricialmente, enviando bits em colunas

• Se ocorrer um erro de rajada de largura (ou duração) k

bits, apenas 1 bit de cada quadro será danificado, e o código de Hamming poderá ajudar a recuperar os bits perdidos

Page 28: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 28

Código de Hamming em Grupos

• Quadros são subdivididos em k linhas

• Bits são enviados em colunas, para compensar erros de rajada

• Rajadas com menos de k bits afetam apenas 1 bit

Bits 1 2 3 4 5 6 7 8 9 10 11

Valor 1 0 1 1 1 0 0 1 0 0 1

Check bits: 1, 2, 4, 8

Data bits: 3, 5, 6, 7, 9, 10, 11

Page 29: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 29

Problemas com o uso da Paridade (de 1 Bit)

• Paridade de 1 Bit:

– Consegue detectar apenar 1 erro

– Aplicável apenas em seqüências pequena de bits, pouco eficiente

– Erros duplos, ou em pares, não são detectados

– A maioria dos erros ocorrem em rajadas, afetando mais de um bit de um quadro

– Sob a condição de rajadas, a probabilidade de detecção se aproxima de 50% [3]

Page 30: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 30

Paridade Bidimensional [3]

• Foi desenvolvida para melhorar a detecção de erros de rajadas

• Também possibilita a correção de erros

• Procedimento:

– Arruma-se os bits de um quadro em linhas e colunas

– Calcula-se a paridade em linhas e em colunas

Page 31: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 31

Paridade Uni e Bidimensional

Paridade com bit único:

Detecta erro de um único bit

Page 32: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 32

Códigos CRC

• Na verificação de erros, também são largamente empregados os códigos CRC (Cyclic Redundancy

Check), conhecidos também como códigos polinomiais

• São utilizados polinômios geradores – G(x)

• Os polinômios são representados por seqüências de 0´s e 1´s (binárias), exemplo:

– G(x) = x5 + x3 + x0 = 1 0 1 0 0 1 = 41 decimal

• Os polinômios primitivos são “candidatos” a polinômios geradores G(x), geralmente G(x) é um número primo

Page 33: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 33

• Consiste num polinômio de grau n, da forma: p(x)=1 + c1.x + c2.x2 + c3.x3 +... + xn

• Onde:

– Os termos 1 e xn estão sempre presentes

– Os coeficientes c1, c2 , c3 , ... , cn-1 podem ser 0 ou 1

– Os polinômios devem ser irredutíveis (não divisíveis por outro de menor ordem)

Polinômio Primitivo

Page 34: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 34

Polinômios Primitivos

5

4

3

2

1

n

1+x2+x3, 1+x+x3

1+x+x4, 1+x3+x4

1+x2+x5, 1+x+x2+x3+x5, 1+x3+x5, 1+x+x3+x4+x5, 1+x2+x3+x4+x5, 1+x+x2+x4+x5

1+x+x2

1+x

Exemplos de Polinômios Primitivos

Page 35: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 35

Códigos CRC

• Algoritmo para calcular os bits de verificação (CRC)1. Seja r o grau de G(x). Acrescentar r bits zero à extremidade de

baixa ordem do quadro, de modo que ele passe a conter m + r bits e corresponda ao polinômio xrM(x)

2. Divida o string de bits correspondente a xrM(x) pelo string de bits G(x), utilizando a divisão de módulo 2

3. Subtraia o resto do string de bits correspondente a xrM(x) utilizando a subtração de módulo 2

• O resultado é o quadro completo (com CRC) que deverá ser transmitido. Chamando-o de polinômio de T(x), temos:– T(x) = xrM(x) - R(x)– Sendo: xrM(x) = M(x) * 2r

– E também: R(x) = resto da divisão de xrM(x) / G(x)

Page 36: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 36

Códigos CRC

• Tarefas do Transmissor:– A partir de M(x) e G(x), calcular T(x)

– Enviar T(x)

• Tarefas do Receptor:– Dividir Tr(x) por G(x), se o resto for:

• Nulo: quadro recebido sem erros, ou com erro não detectado

• Não nulo: quadro com erro

Nota: G(x) deve ser conhecido por todas as estações da rede

Page 37: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 37

Códigos CRC - Exemplo

• Quadro M(x) = 1010001101

• G(x) = x5+x4+x2+1 = 110101, polinômio grau 5

• Calculando :

– xrM(x) = M(x) * 25 = 101000110100000

– R(x) = resto(xrM(x)/G(x)) = 01110

– T(x) = xrM(x) - R(x) = 101000110010010

• O transmissor enviará T(x)

• Conferindo: Resto[ T(x) / G(x) ] = 0, Ok!!!

Page 38: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 38

Desempenho dos Códigos CRC

• Ao receber um quadro T´(x), o nó receptor o divide por G(x)

– O pacote recebido, T´(x), eventualmente será diferente do transmitido, T(x), de modo que: T´(x)=T(x) + E(x)

– Onde E(x) é o vetor erro, resultado de erros no percurso do pacote entre o nó transmissor e receptor

– O nó receptor então calcula T´(x)/G(x) = [T(x) + E(x)] /G(x) = 0 + E(x)/G(x), sabendo que T(x)/G(x) = 0

– Portanto, o resultado do cálculo é simplesmente E(x)/G(x)

Page 39: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 39

Desempenho dos Códigos CRC• Como G(x) é um polinômio irredutível, E(x)/G(x) somente será

zero se E(x) for divisível por G(x), o que deverá ser pouco provável, conforme mostrado a seguir:– Se houver apenas um bit errado:

• E(x) = xi

• xi não é divisível por G(x), para qualquer i

• Todos os erros de um bit são detectados

– Se houverem dois bits isolados errados:• E(x) = xi + xj , onde i > j

• E(x) pode ser representado como: E(x) = xj ( xi-j + 1)

• Uma condição suficiente para todos os erros duplos serem detectados éG(x) não dividir xk + 1, para qualquer k, até o valor máximo de i – j. Isto ocorre para k < Tamanho do Quadro

• Todos os erros de dois bits são detectados

Page 40: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 40

Desempenho dos Códigos CRC– Se houver um numero ímpar de bits com erros:

• E(x) conterá um numero ímpar de termos, por exemplo x5 + x2 + 1, mas não x2 + 1

• É interessante observar que nenhum polinômio com um número ímpar de termos terá x + 1 como fator

• Ao tornar x + 1 um fator de G(x), podemos detectar todos os erros que consistem num número impar de bits invertidos

• Para confirmar que nenhum polinômio com um número ímpar de termos será divisível por x + 1, suponha que E(x) tenha um número ímpar de termos e seja divisível por x + 1. Fatore E(x) em (x + 1) Q(x). Agora, avalie E(1) = (1 + 1) Q(1). Como 1 + 1 = 0 (em módulo 2), E(1) deve ser igual a zero. Se E(x) tiver um número ímpar de termos, a utilização de 1 no lugar de x sempre produzirá 1 como resultado

• Portanto, nenhum polinômio com um número ímpar de termos será divisível por x + 1

Page 41: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 41

Desempenho dos Códigos CRC– Por último, e mais importante, um código polinomial com r bits de

verificação detectará todos os erros em rajada que tiverem um tamanho ≤ r

• Um erro em rajada de tamanho k pode ser representado por E(x) = xi(xk – 1

+ ... + 1), onde i determina a distância entre a rajada e a extremidade direita do quadro recebido

• Se E(x) contiver um termo x0, E(x) não terá xi como fator; portanto, se o grau da expressão entre parênteses for menor que o grau de G(x), o resto nunca poderá ser igual a zero

• Se o tamanho da rajada for r + 1, o restante da divisão por G(x) será zero se e somente se a rajada for idêntica a G(x). Por definição de rajada, o primeiro e o ultimo bits de uma rajada devem ser iguais a 1; assim, a correspondência entre os valores dependera dos r - 1 bits intermediários. Se todas as combinações forem consideradas igualmente prováveis, a probabilidade desse quadro incorreto ser aceito como válido será de 1/[2(r – 1)]

• Também podemos mostrar que, ao ocorrer um erro em rajada com mais de r + 1 bits ou com várias rajadas mais curtas, a probabilidade de um quadro defeituoso passar sem ser percebido será igual a 1/(2r), supondo-se que todos os padrões de bits sejam igualmente prováveis.

Page 42: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 42

Desempenho dos Códigos CRC

• Certos polinômios se tornaram padrões internacionais. Por exemplo, o polinômio utilizado em redes no padrão IEEE 802.3 (Ethernet) é:

G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + 1

• Entre outras características interessantes, ele tem a propriedade de detectar todas as rajadas de comprimento 32 bits ou menor e todos os erros de rajada que afetam um número ímpar de bits.

Page 43: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 43

Cálculo de CRC por Software

Programa em C para cálculo do CRC-32

Page 44: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 44

Cálculo de CRC por Hardware

• Apesar do cálculo necessário para determinar o CRC parecer complicado, Peterson e Brown (1961) mostraram que é possível criar circuitos divisores simples usando shift registers (registradores de deslocamento) para calcular e conferir os CRC

• Na prática, esse hardware quase sempre é utilizado. Virtualmente todas as LANs o empregam, como também os enlaces ponto a ponto o utilizam em alguns casos

• O cálculo por hardware é bem mais veloz que o equivalente em software

Page 45: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 45

Cálculo de CRC por Hardware –Exemplo 1

• Polinômio gerador: G(x) = x5+x4+x2+1

• Simbologia:

Registrador de deslocamento (1 bit) – FF D

Porta OU Exclusivo

A

A B C D E

x5 x4 x2 1

Bits a serem transmitidos

M(x) = 1010001101

Page 46: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 46

Cálculo de CRC por Hardware –Exemplo 1

• Outra maneira de implementar o cálculo do CRC

Bits a serem transmitidos

1x5

A B C D E

x4 x2

M(x) = 1010001101

Page 47: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 47

Cálculo de CRC por Hardware –Exemplo 1

Mensagem a ser enviada

0´s adicionados

Resto da divisão M/G, a ser acrescentado à mensagem

Nota: Comparar com exemplo do Slide 37

Page 48: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 48

Cálculo de CRC por Hardware –Exemplo 2

Page 49: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 49

Exemplos de Polinômios CRC

• CRC-32 é usado em redes Ethernet, ATM, FDDI

• CRC-CCITT é usado nos protocolos XMODEM, X.25, SDLC e HDLC

Page 50: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 50

Algoritmo de Checksum

• Objetivo: detectar “erros” (ex.: bits trocados) num segmento transmitido (nota: usado apenas na camada de transporte)

• Transmissor:– Trata o conteúdo da mensagem como seqüências de números

inteiros de 16 bits– Checksum: adição (soma em complemento de um) do conteúdo

da mensagem– Transmissor coloca o valor do checksum no campo checksum do

datagrama (UDP)

• Receptor:– Calcula o checksum da mensagem recebida– Verifica se o checksum calculado é igual ao valor do campo

checksum:• NÃO - erro detectado• SIM - não detectou erro. Mas podem haver erros não detectados

Page 51: T cnicas de Detec o e Corre o de Erros - lee.eng.uerj.brgil/redesII/Tecnicas de Detecao e Correcao de... · Rev. 18/04/2010 GIL PINHEIRO -Redes de Comunicação 2 Situações que

Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 51

Referências

[1] Hamming, R. W. Error Detecting and Error

Correcting Codes, The Bell Systems Technical Journal, Vol. XXIX, no. 2, April 1950

[2] Kurose, James F.; Ross, Keith W. Redes de

Computadores e a Internet, Editora Pearson

[3] Stallings, W. Data and Computer Communications, Third Edition, Maxwell MacMillan

[4] Tanenbaum, A. S. Redes de Computadores, 4ª. Edição, 2003, Editora Campus