Error Detection and Correction

이태곤·2022년 11월 28일
0

Data Communication

목록 보기
10/15

1. Types of Errors

  • Single bit errors : 하나의 비트에 대해서만 발생하는 오류
    -> can occur white noise
  • Burst errors : 하나의 데이터 무리에 집단적으로 발생하는 오류
    -> can occur impulse noise
    -> has greater effect at higher data rates

2. Error Detection

  • Error Control : Error Detection + Error Correction

  • 프레임 단위의 Error Detection 경우, 고려할 사항들

    1. 수신측에서의 에러 발생확률(BER)
    2. 에러가 없이 도착할 확률
    3. Error-Detecting 알고리즘 사용시에 하나 이상의 undetected error가 있을 확률
    4. Error-Detecting 알고리즘 사용시에 하나 이상의 detected error가 있고 undetected error가 없을 확률
  • Error Detection Process : 보내고자하는 데이터에 error-detecting-code를 덧붙여 전송한다


3. Parity Check

  • 보내고자하는 데이터에 Parity bit를 덧붙여 전송한다.
  • Even parity : Even # of 1s
  • Odd parity : Odd # of 1s
  • 문제점 : 짝수개의 error가 발생할 경우!

4. Two-Dimensional Even Parity Scheme

  • 2차원 행렬을 이용해 Row, Column 을 모두 활용해 Error Dectecting을 수행한다.
  • 문제점 : 여전히 짝수개의 error가 행, 열에 모두 영향을 미치는 경우!

5. Internet Checksum

  • IP, TCP, UDP에서 사용되는 방법
  • 보내고자하는 데이터를 일정 partial division -> 각 부분을 더한 checksum 계산 결과에 1의 보수를 취한 형태를 데이터에 추가 -> 수신측에서 checksum verification
  • 소프트웨어 관점에서 구현 되었어야하므로 오버헤드가 비교적 적은 방법

6. CRC (Cyclic Redundancy Check)

  • 가장 보편화되어있는 Error-Detecting codes

  • 전송측에서 FCS (Frame Check Sequence)를 생성하여 데이터 끝에 추가하여 전송한다.

  • 수신측은 수신한 Frame을 약속된 Divisor로 나누기 -> 나머지가 없다면 error가 없는 것으로 확인

    -> 보내고자 하는 data를 약속된 Divisor로 나눔 (XOR연산)
    -> Divisor의 bit 수 - 1만큼 0을 붙여준 상태에서 XOR 연산 수행
    -> Remainder를 보내고자 하는 data 뒤에 붙여줌

    -> 수신측에서 data를 약속된 Divisor로 나누었을 때, 나머지가 0이 되면 에러가 없는 것으로 간주!

  • Polaynomial to represent a binary word : 이진수 표현을 다항식으로 표현

  • Standard polynomials : 네트워크 종류, 상태에따라 선택해서 사용

  • Circuit with Shift Registers for Dividing by the Polynomial
    -> Input을 먼저 Output으로 내보낸 후에 Switch 상태를 변경하고 FCS를 생성해서 Output으로 전송한다.
    -> H/W 에서 구현된다.


7. Forward Error Correction

  • 가장 간단한 방법으로는 재전송 기법이 있지만 재전송시에 error가 또다시 발생할 확률이 있고 재전송으로 인해 시간도 증가한다.
    -> 수신한 bits 기반 error detection 방법이 필요!
  • Codeword : k bit data block은 FEC(Forward Error Correction) encoder를 사용하여 추가적인 bit가 더해진 n bit data block으로 매핑되서 전송된다.
    • n > k
    • Hamming distance가 가장 작은 것으로 매핑

      1. 보내고자하는 data
      2. 2^x 자릿 수를 제외한 곳에 mapping
      3. 값이 1인곳의 index에 대해서 xor 연산 후 끼워넣기
      4. 3번째에 오류를 섞어서 전송
      5. 값이 1인곳의 index에 대해서 xor 연산 결과 : 오류 index

8. Using XOR

  • XOR의 특성을 사용해서 Error Control
  1. Data block 형태로 전송할 때 데이터들의 xor연산 결과(R)를 더해서 전송
  2. 중간 Data(Pi)에 error가 발생한다면 R과 나머지 데이터들과의 xor연산을 통해 Error Detection & Correction 가능하다.

9. Interleaving

  • Packet을 Column단위로 전송해서 Packet Loss가 일어났을 때 데이터 손실을 최소화하는 방법이다.

10. Compounding high-and-low resolution packets

  • Error 또는 packet loss가 발생하더라도 데이터 손실을 최소화하기 위해 High resolution, Low resolution 2개의 data를 packet에 나누어 전송하는 방법이다.
    -> 각각의 packet은 이전 packet에 전송되었던 정보의 Low-resolution 정보를 함께 전송한다.
    -> packet loss 경우 저화질 정보라도 전송이 가능하다.

11. Convolutional codes

  • 과거 bit와 입력 bit를 연산하여 새로운 bit가 생성되는 형태의 코드
  • 표현 방법 : State diagram, Tree diagram, Trellis

  • 여러 곳에서 오는 경우에는 Hamming distance가 적은 경로를 선택해서 누적

0개의 댓글