Методы обнаружения ошибок в связи

Канальный уровень
должен обнаруживать ошибки передачи
данных, связанные с искажением бит в
принятом кадре данных или с потерей
кадра, и по возможности их корректировать.

Большая часть протоколов
канального уровня выполняет только
первую задачу — обнаружение ошибок,
считая, что корректировать ошибки, то
есть повторно передавать данные,
содержавшие искаженную информацию,
должны протоколы верхних уровней. Так
работают такие популярные протоколы
локальных сетей, как Ethernet, Token Ring, FDDI и
другие. Однако существуют протоколы
канального уровня, например LLC2 или
LAP-B, которые самостоятельно решают
задачу восстановления искаженных или
потерянных кадров.

Очевидно, что протоколы
должны работать наиболее эффективно в
типичных условиях работы сети. Поэтому
для сетей, в которых искажения и потери
кадров являются очень редкими событиями,
разрабатываются протоколы типа Ethernet,
в которых не предусматриваются процедуры
устранения ошибок. Действительно,
наличие процедур восстановления данных
потребовало бы от конечных узлов
дополнительных вычислительных затрат,
которые в условиях надежной работы сети
являлись бы избыточными.

Напротив, если в сети
искажения и потери случаются часто, то
желательно уже на канальном уровне
использовать протокол с коррекцией
ошибок, а не оставлять эту работу
протоколам верхних уровней. Протоколы
верхних уровней, например транспортного
или прикладного, работая с большими
тайм-аутами, восстановят потерянные
данные с большой задержкой. В глобальных
сетях первых поколений, например сетях
Х.25, которые работали через ненадежные
каналы связи, протоколы канального
уровня всегда выполняли процедуры
восстановления потерянных и искаженных
кадров.

Поэтому нельзя считать,
что один протокол лучше другого потому,
что он восстанавливает ошибочные кадры,
а другой протокол — нет. Каждый протокол
должен работать в тех условиях, для
которых он разработан.

Методы обнаружения ошибок

Все методы обнаружения
ошибок основаны на передаче в составе
кадра данных служебной избыточной
информации, по которой можно судить с
некоторой степенью вероятности о
достоверности принятых данных. Эту
служебную информацию принято называть
контрольной суммойили
(последовательностью контроля кадра
— Frame Check Sequence, FCS
). Контрольная сумма
вычисляется как функция от основной
информации, причем необязательно только
путем суммирования. Принимающая сторона
повторно вычисляет контрольную сумму
кадра по известному алгоритму и в случае
ее совпадения с контрольной суммой,
вычисленной передающей стороной, делает
вывод о том, что данные были переданы
через сеть корректно.

Существует несколько
распространенных алгоритмов вычисления
контрольной суммы, отличающихся
вычислительной сложностью и способностью
обнаруживать ошибки в данных.

Контроль по паритетупредставляет собой наиболее простой
метод контроля данных. В то же время это
наименее мощный алгоритм контроля, так
как с его помощью можно обнаружить
только одиночные ошибки в проверяемых
данных. Метод заключается в суммировании
по модулю 2 всех бит контролируемой
информации. Например, для данных 100101011
результатом контрольного суммирования
будет значение 1. Результат суммирования
также представляет собой один бит
данных, который пересылается вместе с
контролируемой информацией. При искажении
при пересылке любого одного бита исходных
данных (или контрольного разряда)
результат суммирования будет отличаться
от принятого контрольного разряда, что
говорит об ошибке. Однако двойная ошибка,
например 110101010, будет неверно принята
за корректные данные. Поэтому контроль
по паритету применяется к небольшим
порциям данных, как правило, к каждому
байту, что дает коэффициент избыточности
для этого метода 1/8. Метод редко применяется
в вычислительных сетях из-за его большой
избыточности и невысоких диагностических
способностей.

Вертикальный и
горизонтальный контроль по паритету
представляет собой модификацию описанного
выше метода. Его отличие состоит в том,
что исходные данные рассматриваются в
виде матрицы, строки которой составляют
байты данных. Контрольный разряд
подсчитывается отдельно для каждой
строки и для каждого столбца матрицы.
Этот метод обнаруживает большую часть
двойных ошибок, однако обладает еще
большей избыточностью. На практике
сейчас также почти не применяется.

Циклический избыточный
контроль (Cyclic Redundancy Check, CRC)
является
в настоящее время наиболее популярным
методом контроля в вычислительных сетях
(и не только в сетях, например, этот метод
широко применяется при записи данных
на диски и дискеты). Метод основан на
рассмотрении исходных данных в виде
одного многоразрядного двоичного числа.
Например, кадр стандарта Ethernet, состоящий
из 1024 байт, будет рассматриваться как
одно число, состоящее из 8192 бит. В качестве
контрольной информации рассматривается
остаток от деления этого числа на
известный делитель R. Обычно в качестве
делителя выбирается семнадцати- или
тридцати трехразрядное число, чтобы
остаток от деления имел длину 16 разрядов
(2 байт) или 32 разряда (4 байт). При получении
кадра данных снова вычисляется остаток
от деления на тот же делитель R, но при
этом к данным кадра добавляется и
содержащаяся в нем контрольная сумма.
Если остаток от деления на R равен нулю1(1Существуетнесколько модифицированная
процедура вычисления остатка, приводящая
к получению в случае отсутствия ошибок
известного ненулевого остатка, что
является более надежным показателем
корректности.), то делается вывод об
отсутствии ошибок в полученном кадре,
в противном случае кадр считается
искаженным.

Этот метод обладает
более высокой вычислительной сложностью,
но его диагностические возможности
гораздо выше, чем у методов контроля по
паритету. Метод CRC обнаруживает все
одиночные ошибки, двойные ошибки и
ошибки в нечетном числе бит. Метод
обладает также невысокой степенью
избыточности. Например, для кадра
Ethernet размером в 1024 байт контрольная
информация длиной в 4 байт составляет
только 0,4 %.

Лекция 5

Проверка правильности передачи данных

  • Причины возникновения ошибок
  • Классификация методов защиты от ошибок
    • Групповые методы
      • мажоритарный
      • блок с количественной характеристикой
    • Помехоустойчивое кодирование
    • Системы передачи с обратной связью
      • решающая
      • информационная

Проблема обеспечения безошибочности (достоверности) передачи информации в
сетях имеет очень большое значение. Если при передаче обычной телеграммы в
тексте возникает ошибка или при разговоре по телефону слышен треск, то в
большинстве случаев ошибки и искажения легко обнаруживаются по смыслу. Но при
передаче данных одна ошибка (искажение одного бита) на тысячу переданных
сигналов может серьезно отразиться на качестве информации.

Существует множество методов обеспечения достоверности передачи информации
(методов защиты от ошибок), отличающихся по используемым для их реализации
средствам, по затратам времени на их применение на передающем и приемном
пунктах, по затратам дополнительного времени на передачу фиксированного объема
данных (оно обусловлено изменением объема трафика пользователя при реализации
данного метода), по степени обеспечения достоверности передачи информации.
Практическое воплощение методов состоит из двух частей — программной и
аппаратной. Соотношение между ними может быть самым различным, вплоть до почти
полного отсутствия одной из частей. Чем больше удельный вес аппаратных средств
по сравнению с программными, тем при прочих равных условиях сложнее
оборудование, реализующее метод, и меньше затрат времени на его реализацию, и
наоборот.

Причины возникновения ошибок

Выделяют две основные причины возникновения ошибок при передаче информации в
сетях:

  • сбои в какой-то части оборудования сети или возникновение
    неблагоприятных объективных событий в сети (например, коллизий при
    использовании метода случайного доступа в сеть). Как правило, система
    передачи данных готова к такого рода проявлениям и устраняет их с помощью
    предусмотренных планом средств;
  • помехи, вызванные внешними источниками и атмосферными явлениями. Помехи
    — это электрические возмущения, возникающие в самой аппаратуре или
    попадающие в нее извне. Наиболее распространенными являются флуктуационные
    (случайные) помехи. Они представляют собой последовательность импульсов,
    имеющих случайную амплитуду и следующих друг за другом через различные
    промежутки времени. Примерами таких помех могут быть атмосферные и
    индустриальные помехи, которые обычно проявляются в виде одиночных импульсов
    малой длительности и большой амплитуды. Возможны и сосредоточенные помехи в
    виде синусоидальных колебаний. К ним относятся сигналы от посторонних
    радиостанций, излучения генераторов высокой частоты. Встречаются и смешанные
    помехи. В приемнике помехи могут настолько ослабить информационный сигнал,
    что он либо вообще не будет обнаружен, либо будет искажен так, что «единица»
    может перейти в «нуль», и наоборот.

Трудности борьбы с помехами заключаются в беспорядочности, нерегулярности и в
структурном сходстве помех с информационными сигналами. Поэтому защита
информации от ошибок и вредного влияния помех имеет большое практическое
значение и является одной из серьезных проблем современной теории и техники
связи.

Классификация методов защиты от ошибок

Среди многочисленных методов защиты от ошибок выделяются три группы методов:
групповые методы, помехоустойчивое кодирование и методы защиты от ошибок в
системах передачи с обратной связью.

Групповые методы

Из групповых методов получили широкое применение мажоритарный метод,
реализующий принцип Вердана, и метод передач информационными блоками с
количественной характеристикой блока.

Мажоритарный метод
Суть этого метода, давно и широко используемого в телеграфии,
состоит в следующем. Каждое сообщение ограниченной длины передается
несколько раз, чаще всего три раза. Принимаемые сообщения запоминаются,
а потом производится их поразрядное сравнение. Суждение о правильности
передачи выносится по совпадению большинства из принятой информации
методом «два из трех». Например, кодовая комбинация 01101 при
трехразовой передаче была частично искажена помехами, поэтому приемник
принял такие комбинации: 10101, 01110, 01001. В результате проверки по
отдельности каждой позиции правильной считается комбинация 01101.
Передача блоками с количественной характеристикой
Этот метод также не требует перекодирования информации. Он
предполагает передачу данных блоками с количественной характеристикой
блока. Такими характеристиками могут быть: число единиц или нулей в
блоке, контрольная сумма передаваемых символов в блоке, остаток от
деления контрольной суммы на постоянную величину и др. На приемном
пункте эта характеристика вновь подсчитывается и сравнивается с
переданной по каналу связи. Если характеристики совпадают, считается,
что блок не содержит ошибок. В противном случае на передающую сторону
поступает сигнал с требованием повторной передачи блока. В современных
телекоммуникационных вычислительных сетях такой метод получил самое
широкое распространение.

Помехоустойчивое (избыточное) кодирование

Этот метод предполагает разработку и использование корректирующих
(помехоустойчивых) кодов. Он применяется не только в телекоммуникационных сетях,
но и в ЭВМ для защиты от ошибок при передаче информации между устройствами
машины. Помехоустойчивое кодирование позволяет получить более высокие
качественные показатели работы систем связи. Его основное назначение заключается
в обеспечении малой вероятности искажений передаваемой информации, несмотря на
присутствие помех или сбоев в работе сети.

Существует довольно большое количество различных помехоустойчивых кодов,
отличающихся друг от друга по ряду показателей и прежде всего по своим
корректирующим возможностям.

К числу наиболее важных показателей корректирующих кодов относятся:

  • значность кода n, или длина
    кодовой комбинации, включающей информационные символы (m)
    и проверочные, или контрольные, символы (К): 
    n
    =  m
    + K
    (Значения
    контрольных символов при кодировании определяются путем контроля на четность
    количества единиц в информационных разрядах кодовой комбинации. Значение
    контрольного символа равно 0, если количество единиц будет четным, и равно 1
    при нечетном количестве единиц);
  • избыточность кода Кизб,
    выражаемая отношением числа контрольных символов в кодовой комбинации к
    значности кода: Кизб = К/
    n
    ;
  • корректирующая способность кода Ккс, представляющая
    собой отношение числа кодовых комбинаций L,
    в которых ошибки были обнаружены и исправлены, к общему числу переданных
    кодовых комбинаций M в фиксированном объеме
    информации:    Ккс =
    L
    / M

Выбор корректирующего кода для его использования в данной компьютерной сети
зависит от требований по достоверности передачи информации. Для правильного
выбора кода необходимы статистические данные о закономерностях появления ошибок,
их характере, численности и распределении во времени. Например, корректирующий
код, обнаруживающий и исправляющий одиночные ошибки, эффективен лишь при
условии, что ошибки статистически независимы, а вероятность их появления не
превышает некоторой величины. Он оказывается непригодным, если ошибки появляются
группами. При выборе кода надо стремиться, чтобы он имел меньшую избыточность.
Чем больше коэффициент Кизб, тем менее эффективно используется
пропускная способность канала связи и больше затрачивается времени на передачу
информации, но зато выше помехоустойчивость системы.

В телекоммуникационных вычислительных сетях корректирующие коды в основном
применяются для обнаружения ошибок, исправление которых осуществляется путем
повторной передачи искаженной информации. С этой целью в сетях используются
системы передачи с обратной связью (наличие между абонентами дуплексной связи
облегчает применение таких систем).

Системы передачи с обратной связью

Системы передачи с обратной связью делятся на системы с решающей обратной
связью и системы с информационной обратной связью.

Системы с решающей обратной связью
Особенностью систем с решающей обратной связью (систем с
перезапросом) является то, что решение о необходимости повторной передачи
информации (сообщения, пакета) принимает приемник. Здесь обязательно применяется
помехоустойчивое кодирование, с помощью которого на приемной станции
осуществляется проверка принимаемой информации. При обнаружении ошибки на
передающую сторону по каналу обратной связи посылается сигнал перезапроса, по
которому информация передается повторно. Канал обратной связи используется также
для посылки сигнала подтверждения правильности приема, автоматически
определяющего начало следующей передачи.
Системы с информационной обратной связью
В системах с информационной обратной связью передача информации
осуществляется без помехоустойчивого кодирования. Приемник, приняв информацию по
прямому каналу и зафиксировав ее в своей памяти, передает ее в полном объеме по
каналу обратной связи передатчику, где переданная и возвра0щенная информация
сравниваются. При совпадении передатчик посылает приемнику сигнал подтверждения,
в противном случае происходит повторная передача всей информации. Таким образом,
здесь решение о необходимости повторной передачи принимает передатчик.

Обе рассмотренные системы обеспечивают практически одинаковую достоверность,
однако в системах с решающей обратной связью пропускная способность каналов
используется эффективнее, поэтому они получили большее распространение.

Сайт управляется системой uCoz

Обнаружение ошибок в технике связи — действие, направленное на контроль целостности данных при записи/воспроизведении информации или при её передаче по линиям связи. Исправление ошибок (коррекция ошибок) — процедура восстановления информации после чтения её из устройства хранения или канала связи.

Для обнаружения ошибок используют коды обнаружения ошибок, для исправления — корректирующие коды (коды, исправляющие ошибки, коды с коррекцией ошибок, помехоустойчивые коды).

Способы борьбы с ошибками[]

В процессе хранения данных и передачи информации по сетям связи неизбежно возникают ошибки. Контроль целостности данных и исправление ошибок — важные задачи на многих уровнях работы с информацией (в частности, физическом, канальном, транспортном уровнях модели OSI).

В системах связи возможны несколько стратегий борьбы с ошибками:

  • обнаружение ошибок в блоках данных и автоматический запрос повторной передачи повреждённых блоков — этот подход применяется в основном на канальном и транспортном уровнях;
  • обнаружение ошибок в блоках данных и отбрасывание повреждённых блоков — такой подход иногда применяется в системах потокового мультимедиа, где важна задержка передачи и нет времени на повторную передачу;
  • исправление ошибок (forward error correction) применяется на физическом уровне.

Коды обнаружения и исправления ошибок[]

Корректирующие коды — коды, служащие для обнаружения или исправления ошибок, возникающих при передаче информации под влиянием помех, а также при её хранении.

Для этого при записи (передаче) в полезные данные добавляют специальным образом структурированную избыточную информацию (контрольное число), а при чтении (приёме) её используют для того, чтобы обнаружить или исправить ошибки. Естественно, что число ошибок, которое можно исправить, ограничено и зависит от конкретного применяемого кода.

С кодами, исправляющими ошибки, тесно связаны коды обнаружения ошибок. В отличие от первых, последние могут только установить факт наличия ошибки в переданных данных, но не исправить её.

В действительности, используемые коды обнаружения ошибок принадлежат к тем же классам кодов, что и коды, исправляющие ошибки. Фактически, любой код, исправляющий ошибки, может быть также использован для обнаружения ошибок (при этом он будет способен обнаружить большее число ошибок, чем был способен исправить).

По способу работы с данными коды, исправляющие ошибки делятся на блоковые, делящие информацию на фрагменты постоянной длины и обрабатывающие каждый из них в отдельности, и свёрточные, работающие с данными как с непрерывным потоком.

Блоковые коды[]

Пусть кодируемая информация делится на фрагменты длиной {displaystyle k} бит, которые преобразуются в кодовые слова длиной {displaystyle n} бит. Тогда соответствующий блоковый код обычно обозначают {displaystyle (n,;k)}. При этом число {displaystyle R={frac {k}{n}}} называется скоростью кода.

Если исходные {displaystyle k} бит код оставляет неизменными, и добавляет {displaystyle n-k} проверочных, такой код называется систематическим, иначе несистематическим.

Задать блоковый код можно по-разному, в том числе таблицей, где каждой совокупности из {displaystyle k} информационных бит сопоставляется {displaystyle n} бит кодового слова. Однако, хороший код должен удовлетворять, как минимум, следующим критериям:

  • способность исправлять как можно большее число ошибок,
  • как можно меньшая избыточность,
  • простота кодирования и декодирования.

Нетрудно видеть, что приведённые требования противоречат друг другу. Именно поэтому существует большое количество кодов, каждый из которых пригоден для своего круга задач.

Практически все используемые коды являются линейными. Это связано с тем, что нелинейные коды значительно сложнее исследовать, и для них трудно обеспечить приемлемую лёгкость кодирования и декодирования.

Линейные коды общего вида[]

Линейный блоковый код — такой код, что множество его кодовых слов образует {displaystyle k}-мерное линейное подпространство (назовём его {displaystyle C}) в {displaystyle n}-мерном линейном пространстве, изоморфное пространству {displaystyle k}-битных векторов.

Это значит, что операция кодирования соответствует умножению исходного {displaystyle k}-битного вектора на невырожденную матрицу {displaystyle G}, называемую порождающей матрицей.

Пусть {displaystyle C^{perp }} — ортогональное подпространство по отношению к {displaystyle C}, а {displaystyle H} — матрица, задающая базис этого подпространства. Тогда для любого вектора {displaystyle {overrightarrow {v}}in C} справедливо:

{displaystyle {overrightarrow {v}}H^{T}={overrightarrow {0}}.}
Минимальное расстояние и корректирующая способность[]

Основная статья: Расстояние Хемминга

Расстоянием Хемминга (метрикой Хемминга) между двумя кодовыми словами {displaystyle {overrightarrow {u}}} и {displaystyle {overrightarrow {v}}} называется количество отличных бит на соответствующих позициях, {displaystyle d_{H}({overrightarrow {u}},;{overrightarrow {v}})=sum _{s}{|u^{(s)}-v^{(s)}|}}, что равно числу «единиц» в векторе {displaystyle {overrightarrow {u}}oplus {overrightarrow {v}}}.

Минимальное расстояние Хемминга {displaystyle d_{min }=min _{uneq v}d_{H}({overrightarrow {u}},;{overrightarrow {v}})} является важной характеристикой линейного блокового кода. Она показывает насколько «далеко» расположены коды друг от друга. Она определяет другую, не менее важную характеристику — корректирующую способность:

{displaystyle t=leftlfloor {frac {d_{min }-1}{2}}rightrfloor }, округляем «вниз», так чтобы {displaystyle 2t<d_{min }}.

Корректирующая способность определяет, сколько ошибок передачи кода (типа {displaystyle 1leftrightarrow 0}) можно гарантированно исправить. То есть вокруг каждого кода {displaystyle A} имеем {displaystyle t}-окрестность {displaystyle A_{t}}, которая состоит из всех возможных вариантов передачи кода {displaystyle A} с числом ошибок ({displaystyle 1leftrightarrow 0}) не более {displaystyle t}. Никакие две окрестности двух любых кодов не пересекаются друг с другом, так как расстояние между кодами (то есть центрами этих окрестностей) всегда больше двух их радиусов {displaystyle d_{H}(A,;B)geqslant d_{min }>2t}.

Таким образом получив искажённый код из {displaystyle A_{t}} декодер принимает решение, что был исходный код {displaystyle A}, исправляя тем самым не более {displaystyle t} ошибок.

Поясним на примере. Предположим, что есть два кодовых слова {displaystyle A} и {displaystyle B}, расстояние Хемминга между ними равно 3. Если было передано слово {displaystyle A}, и канал внёс ошибку в одном бите, она может быть исправлена, так как даже в этом случае принятое слово ближе к кодовому слову {displaystyle A}, чем к любому другому, и в частности к {displaystyle B}. Но если каналом были внесены ошибки в двух битах (в которых {displaystyle A} отличалось от {displaystyle B}) то результат ошибочной передачи {displaystyle A} окажется ближе к {displaystyle B}, чем {displaystyle A}, и декодер примет решение что передавалось слово {displaystyle B}.

Коды Хемминга[]

Коды Хемминга — простейшие линейные коды с минимальным расстоянием 3, то есть способные исправить одну ошибку. Код Хемминга может быть представлен в таком виде, что синдром

{displaystyle {overrightarrow {s}}={overrightarrow {r}}H^{T}}, где {displaystyle {overrightarrow {r}}} — принятый вектор, будет равен номеру позиции, в которой произошла ошибка. Это свойство позволяет сделать декодирование очень простым.
Общий метод декодирования линейных кодов[]

Любой код (в том числе нелинейный) можно декодировать с помощью обычной таблицы, где каждому значению принятого слова {displaystyle {overrightarrow {r}}_{i}} соответствует наиболее вероятное переданное слово {displaystyle {overrightarrow {u}}_{i}}. Однако, данный метод требует применения огромных таблиц уже для кодовых слов сравнительно небольшой длины.

Для линейных кодов этот метод можно существенно упростить. При этом для каждого принятого вектора {displaystyle {overrightarrow {r}}_{i}} вычисляется синдром {displaystyle {overrightarrow {s}}_{i}={overrightarrow {r}}_{i}H^{T}}. Поскольку {displaystyle {overrightarrow {r}}_{i}={overrightarrow {v}}_{i}+{overrightarrow {e}}_{i}}, где {displaystyle {overrightarrow {v}}_{i}} — кодовое слово, а {displaystyle {overrightarrow {e}}_{i}} — вектор ошибки, то {displaystyle {overrightarrow {s}}_{i}={overrightarrow {e}}_{i}H^{T}}. Затем с помощью таблицы по синдрому определяется вектор ошибки, с помощью которого определяется переданное кодовое слово. При этом таблица получается гораздо меньше, чем при использовании предыдущего метода.

Линейные циклические коды[]

Несмотря на то, что декодирование линейных кодов уже значительно проще декодирования большинства нелинейных, для большинства кодов этот процесс всё ещё достаточно сложен. Циклические коды, кроме более простого декодирования, обладают и другими важными свойствами.

Циклическим кодом является линейный код, обладающий следующим свойством: если {displaystyle {overrightarrow {v}}} является кодовым словом, то его циклическая перестановка также является кодовым словом.

Слова циклического кода удобно представлять в виде многочленов. Например, кодовое слово {displaystyle {overrightarrow {v}}=(v_{0},;v_{1},;ldots ,;v_{n-1})} представляется в виде полинома {displaystyle v(x)=v_{0}+v_{1}x+ldots +v_{n-1}x^{n-1}}. При этом циклический сдвиг кодового слова эквивалентен умножению многочлена на {displaystyle x} по модулю {displaystyle x^{n}-1}.

В дальнейшем, если не указано иное, мы будем считать, что циклический код является двоичным, то есть {displaystyle v_{0},;v_{1},;ldots } могут принимать значения 0 или 1.

Порождающий (генераторный) полином[]

Можно показать, что все кодовые слова конкретного циклического кода кратны определённому порождающему полиному {displaystyle g(x)}. Порождающий полином является делителем {displaystyle x^{n}-1}.

С помощью порождающего полинома осуществляется кодирование циклическим кодом. В частности:

Коды CRC[]

Коды CRC (cyclic redundancy check — циклическая избыточная проверка) являются систематическими кодами, предназначенными не для исправления ошибок, а для их обнаружения. Они используют способ систематического кодирования, изложенный выше: «контрольная сумма» вычисляется путем деления {displaystyle x^{n-k}u(x)} на {displaystyle g(x)}. Ввиду того, что исправление ошибок не требуется, проверка правильности передачи может производиться точно так же.

Таким образом, вид полинома {displaystyle g(x)} задаёт конкретный код CRC. Примеры наиболее популярных полиномов:

название кода степень полином
CRC-12 12 {displaystyle x^{12}+x^{11}+x^{3}+x^{2}+x+1}
CRC-16 16 {displaystyle x^{16}+x^{15}+x^{2}+1}
CRC-CCITT 16 {displaystyle x^{16}+x^{12}+x^{5}+1}
CRC-32 32 {displaystyle x^{32}+x^{26}+x^{23}+x^{22}+x^{16}+x^{12}+x^{11}+x^{10}+x^{8}+x^{7}+x^{5}+x^{4}+x^{2}+x+1}
Коды БЧХ[]

Коды Боуза — Чоудхури — Хоквингема (БЧХ) являются подклассом циклических кодов. Их отличительное свойство — возможность построения кода БЧХ с минимальным расстоянием не меньше заданного. Это важно, потому что, вообще говоря, определение минимального расстояния кода есть очень сложная задача.

Математически полинома {displaystyle g(x)} на множители в поле Галуа.

Коды коррекции ошибок Рида — Соломона[]

Коды Рида — Соломона — недвоичные циклические коды, позволяющие исправлять ошибки в блоках данных. Элементами кодового вектора являются не биты, а группы битов (блоки). Очень распространены коды Рида-Соломона, работающие с байтами (октетами).

Математически коды Рида — Соломона являются кодами БЧХ.

Преимущества и недостатки блоковых кодов[]

Хотя блоковые коды, как правило, хорошо справляются с редкими, но большими пачками ошибок, их эффективность при частых, но небольших ошибках (например, в канале с АБГШ), менее высока.

Свёрточные коды[]

Файл:ECC NASA standard coder.png

Свёрточный кодер ({displaystyle k=7,;R=1/2})

Свёрточные коды, в отличие от блоковых, не делят информацию на фрагменты и работают с ней как со сплошным потоком данных.

Свёрточные коды, как правило, порождаются дискретной линейной инвариантной во времени системой. Поэтому, в отличие от большинства блоковых кодов, свёрточное кодирование — очень простая операция, чего нельзя сказать о декодировании.

Кодирование свёрточным кодом производится с помощью регистра сдвига, отводы от которого суммируются по модулю два. Таких сумм может быть две (чаще всего) или больше.

Декодирование свёрточных кодов, как правило, производится по алгоритму Витерби, который пытается восстановить переданную последовательность согласно критерию максимального правдоподобия.

Преимущества и недостатки свёрточных кодов[]

Свёрточные коды эффективно работают в канале с белым шумом, но плохо справляются с пакетами ошибок. Более того, если декодер ошибается, на его выходе всегда возникает пакет ошибок.

Каскадное кодирование. Итеративное декодирование[]

Преимущества разных способов кодирования можно объединить, применив каскадное кодирование. При этом информация сначала кодируется одним кодом, а затем другим, в результате получается код-произведение.

Например, популярной является следующая конструкция: данные кодируются кодом Рида-Соломона, затем перемежаются (при этом символы, расположенные близко, помещаются далеко друг от друга) и кодируются свёрточным кодом. На приёмнике сначала декодируется свёрточный код, затем осуществляется обратное перемежение (при этом пачки ошибок на выходе свёрточного декодера попадают в разные кодовые слова кода Рида — Соломона), и затем осуществляется декодирование кода Рида — Соломона.

Некоторые коды-произведения специально сконструированы для итеративного декодирования, при котором декодирование осуществляется в несколько проходов, каждый из которых использует информацию от предыдущего. Это позволяет добиться большой эффективности, однако, декодирование требует больших ресурсов. К таким кодам относят турбо-коды и LDPC-коды (коды Галлагера).

Оценка эффективности кодов[]

Эффективность кодов определяется количеством ошибок, которые тот может исправить, количеством избыточной информации, добавление которой требуется, а также сложностью реализации кодирования и декодирования (как аппаратной, так и в виде программы для ЭВМ).

Граница Хемминга и совершенные коды[]

Основная статья: Граница Хэмминга

Пусть имеется двоичный блоковый {displaystyle (n,k)} код с корректирующей способностью {displaystyle t}. Тогда справедливо неравенство (называемое границей Хемминга):

{displaystyle sum _{i=0}^{t}{n choose i}leqslant 2^{n-k}.}

Коды, удовлетворяющие этой границе с равенством, называются совершенными. К совершенным кодам относятся, например, коды Хемминга. Часто применяемые на практике коды с большой корректирующей способностью (такие, как коды Рида — Соломона) не являются совершенными.

Энергетический выигрыш[]

При передаче информации по каналу связи вероятность ошибки зависит от отношения сигнал/шум на входе демодулятора, таким образом при постоянном уровне шума решающее значение имеет мощность передатчика. В системах спутниковой и мобильной, а также других типов связи остро стоит вопрос экономии энергии. Кроме того, в определённых системах связи (например, телефонной) неограниченно повышать мощность сигнала не дают технические ограничения.

Поскольку помехоустойчивое кодирование позволяет исправлять ошибки, при его применении мощность передатчика можно снизить, оставляя скорость передачи информации неизменной. Энергетический выигрыш определяется как разница отношений с/ш при наличии и отсутствии кодирования.

Применение кодов, исправляющих ошибки[]

Коды, исправляющие ошибки, применяются:

  • в системах цифровой связи, в том числе: спутниковой, радиорелейной, сотовой, передаче данных по телефонным каналам.
  • в системах хранения информации, в том числе магнитных и оптических.

Коды, обнаруживающие ошибки, применяются в сетевых протоколах различных уровней.

Автоматический запрос повторной передачи[]

Системы с автоматическим запросом повторной передачи (ARQ — Automatic Repeat reQuest) основаны на технологии обнаружения ошибок. Распространены следующие методы автоматического запроса:

Запрос ARQ с остановками (stop-and-wait ARQ)[]

Идея этого метода заключается в том, что передатчик ожидает от приемника подтверждения успешного приема предыдущего блока данных перед тем как начать передачу следующего. В случае, если блок данных был принят с ошибкой, приемник передает отрицательное подтверждение (negative acknowledgement, NAK), и передатчик повторяет передачу блока. Данный метод подходит для полудуплексного канала связи. Его недостатком является низкая скорость из-за высоких накладных расходов на ожидание.

Непрерывный запрос ARQ с возвратом (continuous ARQ with pullback)[]

Для этого метода необходим полнодуплексный канал. Передача данных от передатчика к приемнику производится одновременно. В случае ошибки передача возобновляется, начиная с ошибочного блока (то есть, передается ошибочный блок и все последующие).

Непрерывный запрос ARQ с выборочным повторением (continuous ARQ with selective repeat)[]

При этом подходе осуществляется передача только ошибочно принятых блоков данных.

См. также[]

  • Цифровая связь
  • Линейный код
  • Циклический код
  • Код Боуза — Чоудхури — Хоквингема
  • Код Рида — Соломона
  • LDPC
  • Свёрточный код
  • Турбо-код

Литература[]

  • Мак-Вильямс Ф. Дж., Слоэн Н. Дж. А. Теория кодов, исправляющих ошибки. М.: Радио и связь, 1979.
  • Блейхут Р. Теория и практика кодов, контролирующих ошибки. М.: Мир, 1986.
  • Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение. М.: Техносфера, 2005. — ISBN 5-94836-035-0

Ссылки[]

Имеется викиучебник по теме:
Обнаружение и исправление ошибок

  • Помехоустойчивое кодирование (11 ноября 2001). — реферат по проблеме кодирования сообщений с исправлением ошибок. Проверено 25 декабря 2006.

Эта страница использует содержимое раздела Википедии на русском языке. Оригинальная статья находится по адресу: Обнаружение и исправление ошибок. Список первоначальных авторов статьи можно посмотреть в истории правок. Эта статья так же, как и статья, размещённая в Википедии, доступна на условиях CC-BY-SA .


Обязательными элементами современных сетей связи являются системы сетевого управления, с помощью которых решаются такие задачи, как реконфигурация сети, непрерывный мониторинг параметров системы связи, фиксация аварийных состояний, защитные переключения, хранение и обработка результатов мониторинга и т. д. Все указанные операции выполняются, как правило, автоматически, с помощью встроенных аппаратных и программных средств.

В то же время зачастую при обслуживании сетей связи не удается обойтись без ручных операций с применением портативных измерительных приборов. Классический пример — устранение сложных повреждений металлических кабелей связи, случившихся по причине намокания.

АНАЛИЗ ОШИБОК В ЦИФРОВЫХ СИСТЕМАХ ПЕРЕДАЧИ

Основное преимущество цифровой передачи по сравнению с аналоговой заключается в отсутствии накопления помех вдоль линии. Это достигается за счет восстановления формы передаваемого сигнала на каждом регенерационном участке.

Все факторы, от которых зависит длина участка, можно разделить на внутренние и внешние.

Наиболее важными внутренними считают затухание линии, межсимвольные помехи, нестабильность тактовой частоты системы, вариацию задержки, возрастание уровня шумов вследствие старения системы.

К существенным внешним факторам обычно относят переходные и импульсные помехи, внешние электромагнитные влияния, механические повреждения контактов при вибрации или ударах, ухудшение свойств передающей среды вследствие перепадов температуры.

Все они обычно предопределяют ухудшение самого чувствительного к ошибкам параметра цифровой передачи — соотношения сигнал/шум. Действительно, снижение величины данного соотношения всего на 1 дБ приводит к увеличению обобщенного параметра качества цифровых систем передачи, которым является коэффициент битовых ошибок (Bit Error Rate, BER), по крайней мере на порядок.

Согласно определению, BER представляет собой отношение числа ошибочно принятых битов к общему числу принятых битов. Его величина статистически колеблется около значения среднего коэффициента ошибок за длительный промежуток времени. Разница между непосредственно измеренным коэффициентом ошибок и долговременным средним значением зависит от числа контролируемых бит и тем самым от длительности измерения.

База времени формируется при помощи двух основных методов.

В соответствии с первым из них, на принимающем конце задается фиксированное число наблюдаемых бит и регистрируется соответствующее число бит с ошибками.

Например, если число ошибочно принятых бит оказалось равным 20, а заданное общее число принимаемых бит — 106, то коэффициент ошибок составит 20/106 = 20 x 10-6 = 2 x 10-5 .

Достоинством такого подхода является точно известное время измерения, а недостатком — невысокая надежность измерения при малом числе ошибок.

Согласно второму методу, время измерений определяется заданным числом ошибок. Измерение длится до тех пор, пока, например, не будет зафиксировано 100 ошибок. Затем на основании соответствующего числа битов данных вычисляется коэффициент ошибок.

Его недостаток заключается в том, что неизвестно время измерений, которое при малых коэффициентах ошибок может оказаться очень большим. Кроме того, вполне возможно, что счетчик бит данных заполнится полностью, и измерения прекратятся. Поэтому такой способ используется редко.

На начальном этапе развития цифровых систем передачи они применялись главным образом для передачи аналогового телефонного сигнала, и потому требования к качеству цифровых систем передачи определялись характеристиками этого сигнала.

Ошибка в цифровом сигнале приводит к быстрому изменению величины сигнала АИМ на входе канального демодулятора, и абонент слышит неприятный щелчок на выходе канала ИКМ. Экспериментально установлено, что заметные щелчки возникают только при ошибках в одном из первых двух наибольших по весу символов кодовой группы, что соответствует максимальному (положительному или отрицательному) изменению сигнала АИМ. Качество связи считается удовлетворительным, если в каждом канале наблюдается не более одного щелчка в минуту. При частоте дискретизации, равной 8 кГц, по каналу передается 8000 x 60 = 480 тыс. кодовых групп в минуту, причем опасными в отношении щелчков являются 960 тыс. старших разрядов. Если считать, что вероятность ошибки для любого разряда кодовой группы одинакова, то при допущении одного щелчка в минуту вероятность ошибки в линейном тракте не должна быть более 1/960 000 = 10-6.

С учетом передачи данных, которая более чувствительна к ошибкам передачи, для эталонного международного соединения протяженностью 27 500 км величина BER не должна превышать 10-7.

Ошибки можно обнаружить двумя основными методами.

Во-первых, во время приемки и настройки линий связи, поиске неисправностей и ремонте выполняются измерения с перерывом связи, которые реализуются по трем схемам подключения: точка-точка, шлейф и транзит.

Во-вторых, для мониторинга сети и качественной оценки ее состояния, обнаружения и устранения повреждений используются измерения без перерыва связи.

Измерение BER без перерыва связи требует точного знания структуры цифрового сигнала. Таким сигналом в составе цикла, например первичного цифрового сигнала Е-1, является цикловой синхросигнал, занимающий 7 бит нулевого канального интервала (КИ) сигнала E-1.

Цикловой сигнал передается в каждом втором цикле сигнала E-1, причем каждый цикл E-1 содержит 32 КИ и, следовательно, 32 х 8 = 256 бит. Таким образом, относительная доля циклового синхросигнала в сигнале E-1 составляет 7/(256 x 2) < 1,4%. Поэтому достоверность оценки BER с помощью циклового синхросигнала очень низка.

Еще один известный метод оценки качества цифровой передачи основан на обнаружении ошибок кода. Он используется, например, в цифровых трактах T-1/E-1, где применяются коды с чередованием полярности единиц AMI и HDB-3. Однако с помощью измерителя ошибок кода нельзя выявить истинное значение коэффициента битовых ошибок. Отклонения между результатами измерения ошибок кода и обычного измерения ошибок методом побитового сравнения становятся особенно заметными при коэффициентах ошибок более 10-3. Кроме того, нарушение правил кодирования часто распространяется и на нескольких бит, находящихся после бита с ошибкой. Вследствие этого зависящее от содержания сигнала смещение и погрешность при больших коэффициентах ошибок делают невозможным точный анализ распределения ошибок.

Итак, практическая оценка BER возможна только в режиме измерений с перерывом связи и посылкой эталонных испытательных сигналов. При измерении BER испытательный сигнал должен как можно лучше имитировать реальный, т. е. иметь случайный характер. В качестве такого испытательного сигнала обычно используют псевдослучайную последовательность битов (ПСП) с заданной структурой, близкой к настоящему информационному сигналу. Такие последовательности формируются тактируемыми регистрами сдвига с обратной связью.

Цифровой испытательный сигнал заменяет обычно передаваемый информационный сигнал и оценивается на приемном конце измерителем ошибок.

Таким образом, необходимый в условиях нормальной эксплуатации непрерывный мониторинг ошибок цифровой передачи методом BER без перерыва связи практически невозможен.

В настоящее время для оценки качества цифровых систем передачи в эксплуатационных условиях применяется метод измерения блочных ошибок. Как нетрудно догадаться, главное его достоинство состоит в том, что он основан на использовании самого информационного сигнала и выполняется без прерывания связи.

Все методы измерения блочных ошибок предполагают введение избыточности в информационный сигнал, обработку этого вспомогательного сигнала по определенному алгоритму и передачу результата обработки на принимающую сторону, где принятый сигнал обрабатывается по тому же алгоритму, что и при передаче, а итог сравнивается с результатом обработки, полученным от передающей стороны. При их разнице переданный блок считается ошибочным.

Известно несколько способов обнаружения блочных ошибок. Способы поблочного контроля четности и контрольной суммы не позволяют распознать все типы ошибок, тем самым ограничивая их практическую применимость. Пожалуй, единственным универсальным способом измерения ошибок без перерыва связи является контроль при помощи циклического избыточного кода (Cyclical Redundancy Check, CRC).

Игорь Иванцов — менеджер отдела «Инструменты и приборы для монтажа и обслуживания телекоммуникационных систем» компании «СвязьКомплект». С ним можно связаться по тел. (095) 362-7787 и по адресам: info@skomplekt.com, http://www.skomplekt.com.


Таблица 1. Измерения в цифровых системах связи и соответствующие им процедуры могут применяться для решения целого ряда задач.
Область применения измерений Измерительные процедуры
Разработка оборудования Испытания с применением высокоточного контрольно-измерительного оборудования, отработка и проверка программного обеспечения, анализ результатов
Производство оборудования Оперативные измерения параметров оборудования и сравнение их с эталонными, проверка дистанционного управления, контроль комплектующих изделий
Инсталляция и линейные испытания оборудования Измерения с перерывом связи, долговременный анализ, сохранение результатов, использование высокоточных и стандартных приборов
Нормальная эксплуатация и техническое обслуживание при поиске и устранении неисправностей Измерения с перерывом и без перерыва связи, включая непрерывный мониторинг с помощью встроенных систем тестирования и измерения с помощью стандартных приборов, имитация ошибок и аварийных сигналов, контроль качества каналов
Ремонт и калибровка — локализация дефектов монтажа и печатных плат, имитация условий эксплуатации Лабораторное оборудование для проверки на соответствие нормативной документации, испытательные стенды

Методы, обеспечивающие надежную доставку цифровых данных по ненадежным каналам связи Устранение ошибок передачи, вызванных атмосферой Земли ( слева), ученые Годдарда применили исправление ошибок Рида – Соломона (справа), которое обычно используется в компакт-дисках и DVD. Типичные ошибки включают отсутствие пикселей (белые) и ложные сигналы (черные). Белая полоса указывает на короткий период, когда передача была приостановлена.

В теории информации и теории кодирования с приложениями в информатике и телекоммуникациях, обнаружение и исправление ошибок или контроль ошибок — это методы, которые обеспечивают надежную доставку цифровых данных по ненадежным каналам связи. Многие каналы связи подвержены канальному шуму, и поэтому во время передачи от источника к приемнику могут возникать ошибки. Методы обнаружения ошибок позволяют обнаруживать такие ошибки, а исправление ошибок во многих случаях позволяет восстановить исходные данные.

Содержание

  • 1 Определения
  • 2 История
  • 3 Введение
  • 4 Типы исправления ошибок
    • 4.1 Автоматический повторный запрос (ARQ)
    • 4.2 Прямое исправление ошибок
    • 4.3 Гибридные схемы
  • 5 Схемы обнаружения ошибок
    • 5.1 Кодирование на минимальном расстоянии
    • 5.2 Коды повторения
    • 5.3 Бит четности
    • 5.4 Контрольная сумма
    • 5.5 Циклическая проверка избыточности
    • 5.6 Криптографическая хеш-функция
    • 5.7 Ошибка код исправления
  • 6 Приложения
    • 6.1 Интернет
    • 6.2 Связь в дальнем космосе
    • 6.3 Спутниковое вещание
    • 6.4 Хранение данных
    • 6.5 Память с исправлением ошибок
  • 7 См. также
  • 8 Ссылки
  • 9 Дополнительная литература
  • 10 Внешние ссылки

Определения

Обнаружение ошибок — это обнаружение ошибок, вызванных шумом или другими помехами во время передачи от передатчика к приемнику. Исправление ошибок — это обнаружение ошибок и восстановление исходных безошибочных данных.

История

Современная разработка кодов исправления ошибок приписывается Ричарду Хэммингу в 1947 году. Описание кода Хэмминга появилось в Математической теории коммуникации Клода Шеннона и было быстро обобщено Марселем Дж. Э. Голэем.

Введение

Все схемы обнаружения и исправления ошибок добавляют некоторые избыточность (т. е. некоторые дополнительные данные) сообщения, которые получатели могут использовать для проверки согласованности доставленного сообщения и для восстановления данных, которые были определены как поврежденные. Схемы обнаружения и исправления ошибок могут быть систематическими или несистематическими. В систематической схеме передатчик отправляет исходные данные и присоединяет фиксированное количество контрольных битов (или данных четности), которые выводятся из битов данных некоторым детерминированным алгоритмом. Если требуется только обнаружение ошибок, приемник может просто применить тот же алгоритм к полученным битам данных и сравнить свой вывод с полученными контрольными битами; если значения не совпадают, в какой-то момент во время передачи произошла ошибка. В системе, которая использует несистематический код, исходное сообщение преобразуется в закодированное сообщение, несущее ту же информацию и имеющее по крайней мере такое же количество битов, как и исходное сообщение.

Хорошие характеристики контроля ошибок требуют, чтобы схема была выбрана на основе характеристик канала связи. Распространенные модели каналов включают в себя модели без памяти, в которых ошибки возникают случайно и с определенной вероятностью, и динамические модели, в которых ошибки возникают в основном в пакетах . Следовательно, коды обнаружения и исправления ошибок можно в целом различать между обнаружением / исправлением случайных ошибок и обнаружением / исправлением пакетов ошибок. Некоторые коды также могут подходить для сочетания случайных ошибок и пакетных ошибок.

Если характеристики канала не могут быть определены или сильно изменяются, схема обнаружения ошибок может быть объединена с системой для повторных передач ошибочных данных. Это известно как автоматический запрос на повторение (ARQ) и наиболее широко используется в Интернете. Альтернативный подход для контроля ошибок — это гибридный автоматический запрос на повторение (HARQ), который представляет собой комбинацию ARQ и кодирования с исправлением ошибок.

Типы исправления ошибок

Существует три основных типа исправления ошибок.

Автоматический повторный запрос (ARQ)

Автоматический повторный запрос (ARQ) — это метод контроля ошибок для передачи данных, который использует коды обнаружения ошибок, сообщения подтверждения и / или отрицательного подтверждения и тайм-ауты для обеспечения надежной передачи данных. Подтверждение — это сообщение, отправленное получателем, чтобы указать, что он правильно получил кадр данных.

Обычно, когда передатчик не получает подтверждения до истечения тайм-аута (т. Е. В течение разумного периода времени после отправки фрейм данных), он повторно передает фрейм до тех пор, пока он либо не будет правильно принят, либо пока ошибка не останется сверх заранее определенного количества повторных передач.

Три типа протоколов ARQ: Stop-and-wait ARQ, Go-Back-N ARQ и Selective Repeat ARQ.

ARQ is подходит, если канал связи имеет переменную или неизвестную пропускную способность, например, в случае с Интернетом. Однако ARQ требует наличия обратного канала, что приводит к возможному увеличению задержки из-за повторных передач и требует обслуживания буферов и таймеров для повторных передач, что в случае перегрузка сети может вызвать нагрузку на сервер и общую пропускную способность сети.

Например, ARQ используется на коротковолновых радиоканалах в форме ARQ-E, или в сочетании с мультиплексированием как ARQ-M.

Прямое исправление ошибок

Прямое исправление ошибок (FEC) — это процесс добавления избыточных данных, таких как исправление ошибок code (ECC) в сообщение, чтобы оно могло быть восстановлено получателем, даже если в процессе передачи или при хранении был внесен ряд ошибок (в зависимости от возможностей используемого кода). Так как получатель не должен запрашивать у отправителя повторную передачу данных, обратный канал не требуется при прямом исправлении ошибок, и поэтому он подходит для симплексной связи, например вещание. Коды с исправлением ошибок часто используются в нижнем уровне связи, а также для надежного хранения на таких носителях, как CD, DVD, жесткие диски и RAM.

Коды с исправлением ошибок обычно различают между сверточными кодами и блочными кодами. :

  • Сверточные коды обрабатываются побитно. Они особенно подходят для аппаратной реализации, а декодер Витерби обеспечивает оптимальное декодирование.
  • Блочные коды обрабатываются на поблочной основе. Ранними примерами блочных кодов являются коды повторения, коды Хэмминга и многомерные коды контроля четности. За ними последовал ряд эффективных кодов, из которых коды Рида – Соломона являются наиболее известными из-за их широкого распространения в настоящее время. Турбокоды и коды с низкой плотностью проверки четности (LDPC) — это относительно новые конструкции, которые могут обеспечить почти оптимальную эффективность.

Теорема Шеннона — важная теорема при прямом исправлении ошибок и описывает максимальную информационную скорость, на которой возможна надежная связь по каналу, имеющему определенную вероятность ошибки или отношение сигнал / шум (SNR). Этот строгий верхний предел выражается в единицах пропускной способности канала . Более конкретно, в теореме говорится, что существуют такие коды, что с увеличением длины кодирования вероятность ошибки на дискретном канале без памяти может быть сделана сколь угодно малой при условии, что кодовая скорость меньше чем емкость канала. Кодовая скорость определяется как доля k / n из k исходных символов и n кодированных символов.

Фактическая максимальная разрешенная кодовая скорость зависит от используемого кода исправления ошибок и может быть ниже. Это связано с тем, что доказательство Шеннона носило только экзистенциальный характер и не показало, как создавать коды, которые одновременно являются оптимальными и имеют эффективные алгоритмы кодирования и декодирования.

Гибридные схемы

Гибридный ARQ — это комбинация ARQ и прямого исправления ошибок. Существует два основных подхода:

  • Сообщения всегда передаются с данными четности FEC (и избыточностью для обнаружения ошибок). Получатель декодирует сообщение, используя информацию о четности, и запрашивает повторную передачу с использованием ARQ только в том случае, если данных четности было недостаточно для успешного декодирования (идентифицировано посредством неудачной проверки целостности).
  • Сообщения передаются без данных четности (только с информация об обнаружении ошибок). Если приемник обнаруживает ошибку, он запрашивает информацию FEC от передатчика с помощью ARQ и использует ее для восстановления исходного сообщения.

Последний подход особенно привлекателен для канала стирания при использовании код бесскоростного стирания.

.

Схемы обнаружения ошибок

Обнаружение ошибок чаще всего реализуется с использованием подходящей хэш-функции (или, в частности, контрольной суммы, циклической проверка избыточности или другой алгоритм). Хеш-функция добавляет к сообщению тег фиксированной длины, который позволяет получателям проверять доставленное сообщение, повторно вычисляя тег и сравнивая его с предоставленным.

Существует огромное количество различных конструкций хеш-функций. Однако некоторые из них имеют особенно широкое распространение из-за их простоты или их пригодности для обнаружения определенных видов ошибок (например, производительности циклического контроля избыточности при обнаружении пакетных ошибок ).

Кодирование с минимальным расстоянием

Код с исправлением случайных ошибок на основе кодирования с минимальным расстоянием может обеспечить строгую гарантию количества обнаруживаемых ошибок, но может не защитить против атаки прообразом.

Коды повторения

A код повторения — это схема кодирования, которая повторяет биты по каналу для достижения безошибочной связи. Учитывая поток данных, которые необходимо передать, данные делятся на блоки битов. Каждый блок передается определенное количество раз. Например, чтобы отправить битовую комбинацию «1011», четырехбитовый блок можно повторить три раза, таким образом получая «1011 1011 1011». Если этот двенадцатибитовый шаблон был получен как «1010 1011 1011» — где первый блок не похож на два других, — произошла ошибка.

Код повторения очень неэффективен и может быть подвержен проблемам, если ошибка возникает в одном и том же месте для каждой группы (например, «1010 1010 1010» в предыдущем примере будет определено как правильное). Преимущество кодов повторения состоит в том, что они чрезвычайно просты и фактически используются в некоторых передачах номеров станций.

Бит четности

Бит четности — это бит, который добавляется к группе исходные биты, чтобы гарантировать, что количество установленных битов (т. е. битов со значением 1) в результате будет четным или нечетным. Это очень простая схема, которую можно использовать для обнаружения одного или любого другого нечетного числа (т. Е. Трех, пяти и т. Д.) Ошибок в выводе. Четное количество перевернутых битов сделает бит четности правильным, даже если данные ошибочны.

Расширениями и вариантами механизма битов четности являются проверки с продольным избыточным кодом, проверки с поперечным избыточным кодом и аналогичные методы группирования битов.

Контрольная сумма

Контрольная сумма сообщения — это модульная арифметическая сумма кодовых слов сообщения фиксированной длины слова (например, байтовых значений). Сумма может быть инвертирована посредством операции дополнения до единиц перед передачей для обнаружения непреднамеренных сообщений с нулевым значением.

Схемы контрольных сумм включают биты четности, контрольные цифры и проверки продольным избыточным кодом. Некоторые схемы контрольных сумм, такие как алгоритм Дамма, алгоритм Луна и алгоритм Верхоффа, специально разработаны для обнаружения ошибок, обычно вносимых людьми при записи или запоминание идентификационных номеров.

Проверка циклическим избыточным кодом

Проверка циклическим избыточным кодом (CRC) — это незащищенная хэш-функция, предназначенная для обнаружения случайных изменений цифровых данных в компьютерных сетях. Он не подходит для обнаружения злонамеренно внесенных ошибок. Он характеризуется указанием порождающего полинома, который используется в качестве делителя в полиномиальном делении над конечным полем, принимая входные данные в качестве дивиденд. остаток становится результатом.

CRC имеет свойства, которые делают его хорошо подходящим для обнаружения пакетных ошибок. CRC особенно легко реализовать на оборудовании и поэтому обычно используются в компьютерных сетях и устройствах хранения, таких как жесткие диски.

. Бит четности может рассматриваться как 1-битный частный случай. CRC.

Криптографическая хеш-функция

Выходные данные криптографической хеш-функции, также известные как дайджест сообщения, могут обеспечить надежную гарантию целостности данных, независимо от того, происходят ли изменения данных случайно (например, из-за ошибок передачи) или злонамеренно. Любая модификация данных, скорее всего, будет обнаружена по несоответствию хеш-значения. Кроме того, с учетом некоторого хэш-значения, как правило, невозможно найти некоторые входные данные (кроме заданных), которые дадут такое же хеш-значение. Если злоумышленник может изменить не только сообщение, но и значение хеш-функции, то для дополнительной безопасности можно использовать хэш-код с ключом или код аутентификации сообщения (MAC). Не зная ключа, злоумышленник не может легко или удобно вычислить правильное ключевое значение хеш-функции для измененного сообщения.

Код исправления ошибок

Для обнаружения ошибок можно использовать любой код исправления ошибок. Код с минимальным расстоянием Хэмминга, d, может обнаруживать до d — 1 ошибок в кодовом слове. Использование кодов с коррекцией ошибок на основе минимального расстояния для обнаружения ошибок может быть подходящим, если требуется строгое ограничение на минимальное количество обнаруживаемых ошибок.

Коды с минимальным расстоянием Хэмминга d = 2 являются вырожденными случаями кодов с исправлением ошибок и могут использоваться для обнаружения одиночных ошибок. Бит четности является примером кода обнаружения одиночной ошибки.

Приложения

Приложения, которым требуется низкая задержка (например, телефонные разговоры), не могут использовать автоматический запрос на повторение (ARQ); они должны использовать прямое исправление ошибок (FEC). К тому времени, когда система ARQ обнаружит ошибку и повторно передаст ее, повторно отправленные данные прибудут слишком поздно, чтобы их можно было использовать.

Приложения, в которых передатчик сразу же забывает информацию, как только она отправляется (например, большинство телекамер), не могут использовать ARQ; они должны использовать FEC, потому что при возникновении ошибки исходные данные больше не доступны.

Приложения, использующие ARQ, должны иметь канал возврата ; приложения, не имеющие обратного канала, не могут использовать ARQ.

Приложения, требующие чрезвычайно низкого уровня ошибок (например, цифровые денежные переводы), должны использовать ARQ из-за возможности неисправимых ошибок с помощью FEC.

Надежность и инженерная проверка также используют теорию кодов исправления ошибок.

Интернет

В типичном стеке TCP / IP ошибка управление осуществляется на нескольких уровнях:

  • Каждый кадр Ethernet использует CRC-32 обнаружение ошибок. Фреймы с обнаруженными ошибками отбрасываются оборудованием приемника.
  • Заголовок IPv4 содержит контрольную сумму , защищающую содержимое заголовка. Пакеты с неверными контрольными суммами отбрасываются в сети или на приемнике.
  • Контрольная сумма не указана в заголовке IPv6, чтобы минимизировать затраты на обработку в сетевой маршрутизации и поскольку предполагается, что текущая технология канального уровня обеспечивает достаточное обнаружение ошибок (см. также RFC 3819 ).
  • UDP, имеет дополнительную контрольную сумму, покрывающую полезную нагрузку и информацию об адресации в заголовки UDP и IP. Пакеты с неверными контрольными суммами отбрасываются сетевым стеком . Контрольная сумма не является обязательной для IPv4 и требуется для IPv6. Если не указано, предполагается, что уровень канала передачи данных обеспечивает желаемый уровень защиты от ошибок.
  • TCP обеспечивает контрольную сумму для защиты полезной нагрузки и адресной информации в заголовках TCP и IP. Пакеты с неверными контрольными суммами отбрасываются сетевым стеком и в конечном итоге повторно передаются с использованием ARQ либо явно (например, как через тройное подтверждение ) или неявно из-за тайм-аута .

Телекоммуникации в дальнем космосе

Разработка кодов исправления ошибок была тесно связана с историей полетов в дальний космос из-за сильного ослабления мощности сигнала на межпланетных расстояниях и ограниченной мощности на борту космических зондов. В то время как ранние миссии отправляли свои данные в незашифрованном виде, начиная с 1968 года, цифровая коррекция ошибок была реализована в форме (субоптимально декодированных) сверточных кодов и кодов Рида – Маллера. Код Рида-Мюллера хорошо подходил к шуму, которому подвергался космический корабль (примерно соответствуя кривой ), и был реализован для космического корабля Mariner и использовался в миссиях между 1969 и 1977 годами.

Миссии «Вояджер-1 » и «Вояджер-2 «, начатые в 1977 году, были разработаны для доставки цветных изображений и научной информации с Юпитера и Сатурна. Это привело к повышенным требованиям к кодированию, и, таким образом, космический аппарат поддерживался (оптимально Витерби-декодированный ) сверточными кодами, которые могли быть сцеплены с внешним Голеем (24,12, 8) код. Корабль «Вояджер-2» дополнительно поддерживал реализацию кода Рида-Соломона. Конкатенированный код Рида – Соломона – Витерби (RSV) позволил произвести очень мощную коррекцию ошибок и позволил космическому кораблю совершить длительное путешествие к Урану и Нептуну. После модернизации системы ECC в 1989 году оба корабля использовали кодирование V2 RSV.

Консультативный комитет по космическим информационным системам в настоящее время рекомендует использовать коды исправления ошибок, как минимум, аналогичные RSV-коду Voyager 2. Составные коды все больше теряют популярность в космических миссиях и заменяются более мощными кодами, такими как Турбо-коды или LDPC-коды.

Различные виды выполняемых космических и орбитальных миссий. предполагают, что попытки найти универсальную систему исправления ошибок будут постоянной проблемой. Для полетов вблизи Земли характер шума в канале связи отличается от того, который испытывает космический корабль в межпланетной миссии. Кроме того, по мере того как космический корабль удаляется от Земли, проблема коррекции шума становится все более сложной.

Спутниковое вещание

Спрос на пропускную способность спутникового транспондера продолжает расти, чему способствует желание предоставлять телевидение (включая новые каналы и телевидение высокой четкости ) и данные IP. Доступность транспондеров и ограничения полосы пропускания ограничили этот рост. Емкость транспондера определяется выбранной схемой модуляции и долей мощности, потребляемой FEC.

Хранение данных

Коды обнаружения и исправления ошибок часто используются для повышения надежности носителей данных. «Дорожка четности» присутствовала на первом устройстве хранения данных на магнитной ленте в 1951 году. «Оптимальный прямоугольный код», используемый в записи с групповым кодированием, не только обнаруживает, но и корректирует однобитовые записи. ошибки. Некоторые форматы файлов, особенно архивные форматы, включают контрольную сумму (чаще всего CRC32 ) для обнаружения повреждений и усечения и могут использовать избыточность и / или четность files для восстановления поврежденных данных. Коды Рида-Соломона используются в компакт-дисках для исправления ошибок, вызванных царапинами.

Современные жесткие диски используют коды CRC для обнаружения и коды Рида – Соломона для исправления незначительных ошибок при чтении секторов, а также для восстановления данных из секторов, которые «испортились», и сохранения этих данных в резервных секторах. Системы RAID используют различные методы исправления ошибок для исправления ошибок, когда жесткий диск полностью выходит из строя. Файловые системы, такие как ZFS или Btrfs, а также некоторые реализации RAID, поддерживают очистку данных и восстановление обновлений, что позволяет удалять поврежденные блоки. обнаружены и (надеюсь) восстановлены, прежде чем они будут использованы. Восстановленные данные могут быть перезаписаны точно в том же физическом месте, чтобы освободить блоки в другом месте на том же оборудовании, или данные могут быть перезаписаны на заменяющее оборудование.

Память с исправлением ошибок

Память DRAM может обеспечить более надежную защиту от программных ошибок, полагаясь на коды исправления ошибок. Такая память с исправлением ошибок, известная как память с защитой ECC или EDAC, особенно желательна для критически важных приложений, таких как научные вычисления, финансы, медицина и т. Д., А также для приложений дальнего космоса из-за повышенное излучение в космосе.

Контроллеры памяти с исправлением ошибок традиционно используют коды Хэмминга, хотя некоторые используют тройную модульную избыточность.

Чередование позволяет распределить эффект одного космического луча, потенциально нарушающего множество физически соседние биты в нескольких словах путем связывания соседних битов с разными словами. До тех пор, пока нарушение единичного события (SEU) не превышает пороговое значение ошибки (например, одиночная ошибка) в любом конкретном слове между доступами, оно может быть исправлено (например, путем исправления однобитовой ошибки code), и может сохраняться иллюзия безошибочной системы памяти.

Помимо оборудования, обеспечивающего функции, необходимые для работы памяти ECC, операционные системы обычно содержат соответствующие средства отчетности, которые используются для предоставления уведомлений при прозрачном восстановлении программных ошибок. Увеличение количества программных ошибок может указывать на то, что модуль DIMM нуждается в замене, и такая обратная связь не была бы легко доступна без соответствующих возможностей отчетности. Одним из примеров является подсистема EDAC ядра Linux (ранее известная как Bluesmoke), которая собирает данные из компонентов компьютерной системы, поддерживающих проверку ошибок; Помимо сбора и отправки отчетов о событиях, связанных с памятью ECC, он также поддерживает другие ошибки контрольного суммирования, в том числе обнаруженные на шине PCI.

Некоторые системы также поддерживают очистку памяти.

См. также

Ссылки

Дополнительная литература

  • Шу Линь; Дэниел Дж. Костелло младший (1983). Кодирование с контролем ошибок: основы и приложения. Прентис Холл. ISBN 0-13-283796-X.

Внешние ссылки

Возможно, вам также будет интересно:

  • Методы обнаружения и исправления ошибок
  • Методы корректировок ошибок финансовой отчетности
  • Методы контроля и коррекции ошибок
  • Методы исправления ошибок при обучении
  • Методы исправления ошибок в волейболе

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии