> В случае с царапинами, теряется предсказуемое, Что за царапины с предсказуемым объемом выбитого?! Не, оно немного не так - ридсоломону просто пофиг сколько корректировать пока это ниже его максимума. Сколько будет столько и откорректирует. А с interleave - uncorrectable на первом уровне до балды, ведет только к маркировке результатов как erasure. Что на руку второму уровню (рид соломон может чинить вдвое больше ошибок если такое знание есть). И вот выпадение пачки битов за присест трансформируется в выпадение одного символа в каждой группе второго уровня FEC. Ради этого interleave/deinterleave и два слоя и затеваются.
И это, с пакетами тоже можно очень похожий interleaving делать. Так что выпавший пакет с 20 байтами данных на самом деле после deinterleave допустим ведет к "потерян 5-й байт в 20 пакетах". И вот это вот второй уровень рида соломона влет починит. Что ему 1 байт из 20 восстановить, если избыточности для этого хватало?
Минус этой идеи только в том что та формулировка подразумевает что для интерливинга пакеты забуферили и это некий лаг относительно реального времени. Однако при желании можно нащупать некий компромисс. Да, это уже некоторые продвинутости, но так можно было.
> не очень высокое число бит и если они потеряны, то рядом есть данные,
> по которым можно восстановить утраченное.
Это "базовый" вариант идеи. В случае CIRC уровней два и фэйл первого уровня не смертелен и лишь немного портит данные в ЭН блоках второго уровня после деинтерливинга. Это легко чинит второй уровень. Вон я на примере пакетов описал как это делается.
Грубо говря, берете 20 пакетов по 20 байтов. Теперь переупорядочиваем: в первом пакете все первые байты 20 пакетов. В втором - все вторые. В третьем все третьи. И если вынесло первый пакет, ок, мы потеряли первый байт в 20 пакетах, FEC легко с этим справится. А если бы вы FEC делали на уровне пакета, полный вылет 1го пакета -> пакета нет, данных нет, FEC нет, фиксить нечего, упс. Некая разница, да? :) Но это подразумевает что вы морально готовы буферить пакеты получив некую добавочную латенси.
> Можно буферизировать несколько секунд, только если половина потеряна, то без
> умножения трафика восстанавливать там нечего.
Разумеется FEC всегда добавляет оверхед. Сколько именно - зависит от того какой объем разрушений хочется уметь парировать.
> А умножение трафика это ведь вещь щекотливая и приведёт к ещё большим потерям.
Может да, а может нет. С другой стороны на lossy линке (беспроводные, там же помехи, затухание сигнала, нестабильный уровень, отраженка и все такое) если данных нет, квакать будет, а если немного теряется, FEC может и выдюжить.