Когда прямое исправление ошибок является хорошей идеей для пакетов? - PullRequest
3 голосов
/ 12 февраля 2009

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

Ответы [ 5 ]

5 голосов
/ 12 февраля 2009

Я думаю, что это полезно для некоторых приложений, таких как Voice (VoIP), где вы хотите избежать ошибок и где вы никогда не захотите остановить (для повторной передачи пакета NAKed) и подождать (пока он не будет повторно передан).

Таким образом, он может быть реализован поверх транспортного протокола реального времени разновидности UDP.

Разве это не было бы ужасно для латентности?

Вы спрашиваете, увеличивает ли прямое исправление ошибок сквозную задержку? Если это так, я думаю, что ответ «нет», но это увеличивает необходимую пропускную способность.

Я полагаю, что вам всегда нужно некоторое время ожидания, чтобы избежать дрожания; так, например, вы можете сказать: «давайте задержим весь голосовой канал на 200 мсек, поэтому любой / каждый пакет может занять от 0 до 200 мсек, чтобы пересечь Интернет, и будет повторно собран и отправлен через преобразователь D-в-A в другой конец. "

Учитывая эти числа, отсутствие прямой коррекции ошибок может означать, что в каждом периоде 200 мсек вы отправляете 10 пакетов, каждый из которых содержит 20 мсек данных ... и если один из них потерян, то это пробел (сбой) на другом конце.

Принимая во внимание, что некоторое прямое исправление ошибок может означать, что в каждом периоде 200 мс вы все равно отправляете 10 пакетов ... каждый пакет содержит 20 мс данных, плюс 10 мс данных, которые уже были переданы в другом пакете (или , может быть, вы отправляете 30 пакетов вместо 20). Затем, если какой-либо один пакет потерян, данные, которые он переносил, доставлялись с избыточностью (половина в каждом из двух других пакетов), что позволяет избежать сбоев в декодированном выводе.

1 голос
/ 09 мая 2009

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

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

0 голосов
/ 30 мая 2013

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

0 голосов
/ 09 мая 2009

Простой ответ: если вы отправляете по высокоскоростному каналу с большой задержкой (что означает «большое расстояние»), прямое исправление ошибок имеет смысл. Иначе, вероятно, нет.

0 голосов
/ 12 февраля 2009

Зависит от приложения.

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

Однако, если приложению требуются конкретные данные в порядке, необходимо какое-то исправление ошибок.

Это не вопрос «накладных расходов», это больше о «приложении».

...