Prof. Ricardo Luís Lachi Redes de Computadores Prof. Ricardo Luís Lachi ricardo@comp.uems.br www.comp.uems.br/~Ricardo
Camada de Enlace – objetivos da aula de hoje Detecção e Correção de Erros Tipos de erros Detecção de erros Correção de erros
Camada de Enlace Importância do tratamento de erros: Se ocorre um erro de 0,1s em uma transmissão de 10 Mbps, isso implica que 1 Megabit de dados são afetados. Como evitar erros? Impossível! Nosso objetivo é detectá-los e tratá-los.
Camada de Enlace – Tipos de erros Erros simples Corresponde a um erro isolado Rajada de erros Quando uma sequência de bits é corrompida. Se em uma transmissão de uma seqüência de 8bits e um deles chega corrompido, como descobrir?
Camada de Enlace – Detecção de erros Para um quadro com F bits, a probabilidade de que não sofra erros é: PF = (1 – Pb)F Pb = probabilidade de um erro de bit simples (ou taxa de erro de bit Métodos de detecção: Teste de paridade Teste de redundância cíclica (CRC) Checksum Ex: para um quadro de 1500 bytes, e um meio de transmissão com taxa de erro de bit de 10-6, qual a probabilidade de um quadro não sofrer erros ? P12000= (1 – 10-6)12000= 0,9881
Camada de Enlace – Detecção de erros Teste de paridade unidimensional Suponha que se deseja enviar a a seguinte sequência de bits: 001011 O emissor da sequência de bits, irá contar quantos “1s” têm na sequência de bits a ser enviada, no caso, são três “1s”: 001011 Se essa quantidade for ímpar, então é adicionado um bit “1” a mais na sequência de bits a ser enviada. Se essa quantidade for par, então é adicionado um bit “0” a mais na sequência de bits a ser enviada. .
Camada de Enlace – Detecção de erros No caso do exemplo seria enviada a sequência 0010111: Bit em vermelho é o bit de paridade (conta-se a quantidade de “1s”, calcula-se o resto da divisão dessa quantidade por 2 e obtém-se o bit de paridade) Daí o nome: bit de paridade, pois o bit é incluso para garantir uma quantidade par de “1s”. Teste da paridade: ao receber a sequência de bits, o receptor conta o número de “1s” e testa essa quantidade com o valor do bit de paridade passado na sequência de bits
Camada de Enlace – Detecção de erros Problemas do teste de paridade unidimensional: Detecta erros nos casos em que uma quantidade ímpar de bits é alterada. Mas se for alterada uma quantidade par de bits, ele não é capaz de detectar o erro. Explique! Não permite identificar/corrigir o(s) bit(s) que foram alterados. Memórias que suportam ECC (Error Correction Code) têm bits extras para paridade e correção de erros
Camada de Enlace – Detecção de erros Teste de paridade bidimensional: VRC – Vertical Redundancy Check LRC – Longitudinal Redundancy Check
Camada de Enlace – Detecção de erros Teste de paridade bidimensional: Permite não só a detecção de um erro mas a correção de até 1 bit errado
Camada de Enlace – Detecção de erros Teste de paridade bidimensional: Detecta erros duplos, mas não é possível identificar quais os bits com problemas. 1 1
Camada de Enlace – Detecção de erros Teste de paridade bidimensional: Detecta erros de rajada de até n bits, onde n é o número de bits de uma linha. 1 1 1 1
Camada de Enlace – Detecção de erros De acordo com Tenenbaum (2003, p. 205-206): Em canais altamente confiáveis, como os de fibra, é mais econômico utilizar um código de detecção de erros e simplesmente retransmitir o bloco defeituoso ocasional. Porém em canais com enlaces sem fio que geram muitos erros, é melhor adicionar a cada bloco redundância suficiente para que o receptor seja capaz de descobrir qual era o bloco original, em vez de confiar em uma retransmissão, que pode ela própria conter erros.
Camada de Enlace – Detecção e correção de erros Método do Checksum: “soma de verificação”. O conceito é simples: Quando estivermos transmitindo uma informação de um lado para o outro, vamos mantendo uma "soma" de todos os bytes que estamos enviando, e no final enviamos a "soma de verificação" para que o sistema de destino possa verificar se esse valor bate certo com o que ele próprio calculou.
Camada de Enlace – Detecção e correção de erros Exemplo aplicação método checksum: Transmitir os bytes: 00101001 e 01100010 Soma desses bytes: 00101001 01100010+ 01001011 (checksum) 10110100 (checksum invertido) Bytes transmitidos: 10110100 01100010 00101001
Camada de Enlace – Detecção e correção de erros Exemplo aplicação método checksum: Receptor soma novamente os bytes recebidos: 00101001 01100010+ 01001011 (novo checksum calculado pelo receptor) O receptor soma (XOR) o novo checksum que ele próprio gerou com o checksum recebido: 10110100 (checksum recebido pelo transmissor) 01001011+ (novo checksum gerado pelo receptor) 11111111 se valor recebido for igual a 1, então bytes foram transmitidos sem erro
Camada de Enlace – Detecção e correção de erros Não garante que não houve erros na transmissão, pois se os bits a serem somados de uma mesma coluna tiverem sido transmitidos errados, o checksum não detectará esse fato! Tentar gerar um checksum que minimize a possibilidade de alterações de bits não serem detectadas. Algoritmo MD5
Camada de Enlace – Detecção e correção de erros Algoritmo MD5 (RFC 1321) Muito utilizado para garantir integridade de arquivos baixados da Internet. Função md5sum: computa e checa checksum gerado via algoritmo MD5. A probabilidade de 2 mensagens distintar gerarem o mesmo checksum por meio do MD5 é da ordem de 264.
Camada de Enlace – Detecção e correção de erros Método CRC (Cyclic Redundancy Check): Verificação de redundância cíclica Código de detecção de erros mais poderoso Enxerga os bits de dados, D, como um número binário Escolhe padrão de r+1 bits (denominado de gerador), G Objetivo: escolher r bits de CRC, R, tal que: <D,R> exatamente divisível por G (módulo 2) Receptor sabe G, divide <D,R> por G. Se resto diferente de zero: erro detectado!
Camada de Enlace – Detecção e correção de erros Vamos detalhar a definição formal do método CRC: Emissor/receptor concordam em usar um polinômio gerador G(x), em que quanto maior for o seu grau maior será a capacidade de detecção de erros. Neste polinômio tanto o bit de maior ordem quanto o de menor ordem devem ser iguais a 1. O padrão inicial de n bits é representado por G(x) de ordem n - 1 padrão = 10110001 G(x) = x7 + x5 + x4 + 1
Camada de Enlace – Detecção e correção de erros Exemplo: Mensagem a transmitir: 10111011 Polinômio gerador G(X) = x4 + x + 1 = 10011 Acrescenta-se à mensagem inicial, a quantidade de zeros equivalentes ao grau de G(x), ficando: 10111011 0000 Seguidamente divide-se a mensagem pelo polinômio gerador A divisão de dois polinômios (na sua forma binária) é feita recorrendo à operação XOR
Camada de Enlace – Detecção e correção de erros 1 0 1 1 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 → Resto da Divisão (R) O resto que da divisão é finalmente adicionado à mensagem original, pelo que a mensagem transmitida será: 10111011 1111
Camada de Enlace – Detecção e correção de erros Para descodificar a mensagem, o procedimento deve ser repetido. 1 0 1 1 1 0 0 1 1 1 1 1 → 1 bit transmitido errado 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 → ≠ 0, logo a mensagem foi recebida com erro
Camada de Enlace – Detecção e correção de erros Para descodificar a mensagem, o procedimento deve ser repetido. 1 0 1 1 1 0 0 1 1 1 1 1 → 1 bit transmitido errado 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 → ≠ 0, logo a mensagem foi recebida com erro
Camada de Enlace – Detecção e correção de erros Alguns valores padrão de CRC: CRC-8: x8 + x7 + x6 + x4+ x2 + 1 CRC-16: x16 + x12 + x5 + 1 CRC-32: x32+ x26 +x23+ x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4+ x2 + 1 CRC é a técnica de detecção de erro usada pela maioria dos protocolos Ethernet e WiFi: CRC-32
Camada de Enlace – Detecção e correção de erros Calcule o valor R de CRC-8 para a mensagem M: 110010101000101011
Camada de Enlace – Detecção e correção de erros Próxima aula: Apresentação de trabalho individual; Códigos de Hamming; Valor: acréscimo de até 1,0 ponto na nota da prova P1. Diretrizes: Apresentação no Powerpoint; Critérios de avaliação: Organização dos slides, Conteúdo e conhecimento do assunto. Entre 30 e 40 minutos.
Fazer as listas de exercícios: mãos à obra!