Надежная передача данных по каналу с потерями - PullRequest
1 голос
/ 11 ноября 2010

Предположим, у вас уже есть ненадежный канал с потерями между 2 пирами. Какие методы вы можете предложить для передачи данных надежно, а также без потери производительности? Также базовый протокол не является TCP (который уже надежен). (Я использовал канал с потерями для обобщения вопроса.)

(AFAIK, существуют некоторые методы, такие как RDT (rfc-908), Go Back-N.)

Ответы [ 3 ]

1 голос
/ 11 ноября 2010

http://en.wikipedia.org/wiki/Transmission_Control_Protocol#Reliable_transmission

Поскольку кто-то уже решил проблему, и существует библиотека (TCP / IP) или десять, которая делает это на каждом существующем языке.

Это вопрос философии?

0 голосов
/ 18 октября 2012

Как сказал Стиво, FEC и, как Кданский предложил ретрансляцию, являются хорошими отправными точками.Основным узким местом ретрансляции является время приема-передачи, что приводит к задержке при приеме потерянного пакета.Тем не менее, FEC является совершенно другим предметом и применим на уровне пакетов.Как снова сказал Стиво, узким местом становится накладная полоса пропускания, которую вы вызываете, генерируя избыточный поток.Хотя это кажется таким простым, различные схемы FEC, такие как FEC четности, код Рида-Соломона, турбокоды, Raptor Q и т. Д., По-разному влияют на задержку, издержки полосы пропускания и т. Д. В зависимости от их параметров.(В основном на скорости кодирования, которую вы используете для создания избыточного потока)

0 голосов
/ 20 февраля 2011

Без потери производительности обычно означает уменьшение зависимости от обратного канала от получателя, отправляющего ACK отправителю.Обычно это означает собственный протокол, использующий дейтаграммы и использующий некую форму прямого исправления ошибок (FEC).Обратите внимание, что FEC - это скользящая шкала, которая часто может привести к значительному снижению производительности, поскольку по определению вы предварительно отправляете дополнительные избыточные данные, чтобы получателю не приходилось их запрашивать.* http://udt.sourceforge.net/

...