[an error occurred while processing this directive]
|
Такая проблема:
Требуется передать файлы разного размера по UDP с возможной потерей пакетов и в симплексном режиме. Т.е. надо применить некий FEC.
До этого занимался примерно аналогичными вещами - в симплексном канале с длинной пакета 40 байт. Там я собирал 255 пакетов (блок около 9 кБайт) поворачивал полученный блок на бок (интерливинг) и прогонял через Рида-Соломона. Такая система "не замечала" пропадания нескольких пакетов по 40 байт. Важный момент, что канал был синхронным - т.е. прием шел постоянно и с одной скоростью.
Новую задачу хотел решить аналогично - но возникли несколько противоречий. (отталкиваемся от того, что пропасть может только целый UDP блок)
1. Чем короче UDP - тем больше накладные расходы - IP&UDP заголовок тоже надо передавать. Если делать UDP большим - получается слишком большой буфер для интерливинга (если применять опять РидаСоломона). Можно конечно применить выкалывание - но при этом возрастают расходы на вычисления полиномов. Т.е. UDP меньше 1 кБайт (как минимум) делать глупо.
2. Если файл маленький (< 1024 байт) то, получается, что он весь умещается в UDP пакет и пропасть может весь. Тут что делать? Передавать несколько раз? А сколько? А если все пропадут? Объединять несколько маленьких? А если их нет или надо передать один?
Короче вопросов - больше чем ответов...
Может кто-что подскажет? Може УРЛ какой есть? Может книжка?
Заранее спасибо!
E-mail: info@telesys.ru