Когда упреждающее исправление ошибок является хорошей идеей для пакетов?

StackOverflow https://stackoverflow.com/questions/543145

Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

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

Другие советы

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

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

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

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

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

Это не вопрос «накладных расходов», а скорее «применения».

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top