Термин

FEC (Forward Error Correction)

Короткое определение

Стратегия восстановления потерь, при которой отправитель добавляет избыточные parity-пакеты, чтобы приёмник мог восстанавливать потерянные данные без повторной передачи. Это альтернатива ARQ: обеспечивает стабильную задержку, но требует больше полосы пропускания.

FEC добавляет к потоку рассчитанную избыточность. Простейшая схема – код Рида–Соломона над k пакетами данных, генерирующий n пакетов в сумме (n > k) – позволяет приёмнику восстановить исходные k пакетов по любым k из n. Стандарт SMPTE 2022-1 специфицирует column/row XOR FEC, широко применяемый в IP-трансляциях для вещания. ULPFEC (RFC 5109, декабрь 2007) – это код коррекции ошибок внутри WebRTC. RaptorQ (RFC 6330, август 2011) – более эффективный fountain-код, используемый в высокопроизводительных профессиональных системах передачи.

Выигрыш FEC – стабильность задержки. Никаких round-trip-танцев: приёмник декодирует полученные данные и сразу восстанавливает исходную информацию. Платой за это становится полоса пропускания: 25 % оверхеда FEC защищает от потерь до 20 %, и это значительный постоянный «налог», тогда как обычно потери близки к нулю. Adaptive FEC подстраивает уровень оверхеда под наблюдаемые потери, снижая нагрузку в благоприятных условиях.

В стриминге FEC наиболее эффективен на каналах, где задержка ARQ недопустима – например, в real-time медиа через WebRTC, при спутниковой дистрибуции или передаче по длинным bonded-каналам сотовой связи. Чистый FEC, как правило, уступает по эффективности; типовой подход в продакшене – использовать FEC для первичного восстановления пакетов и ARQ для доработки тех, что FEC не смог восстановить. SRT поддерживает FEC через packet-filter API, а в RIST Main Profile (SMPTE 2022) FEC реализован встроенным образом.

Считаете параметры для своего продукта?

Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.