LINUX.ORG.RU
ФорумAdmin

Повторяющиеся пакеты UDP

 


0

2

Требуется построить сеть на основе VPN-туннеля, в которой данные (преимущественно потоковое видео) передаются через несколько независимых каналов мобильной связи по UDP. Потеря пакетов не страшна, но как отсеять повторяющиеся? Вероятно, необходимо считать контрольную сумму каждого пришедшего пакета и записывать ее в таблицу, ну и по таблице сразу уничтожать дубликаты. Вот как это реализовать в коде слабо представляю, прошу помочь советом.

lmgify: http://www.enchantedage.com/node/53

Вообще считать контрольную сумму достаточно крутой метод поиска дубликатов))

Гораздо проще иметь переменную, в которую заносить номер пакета и не принимать пакеты с порядковым номером ниже этого номера.

На случай перезапуска передающего софта и обнуления счётчика сделать проверку типа если номера слишком отличаются, то обнулять счётчик.

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

blind_oracle ★★★★★ ()
Ответ на: комментарий от blind_oracle

Получается, переменную нужно отправлять с пакетом? Хотелось бы конечно минимизировать служебную информацию...

Если с хеш-таблицей, то как реализовать сам механизм подсчета суммы? Я извиняюсь за такие детские вопросы, это мое задание на учебной практике)

shmegor ()
Ответ на: комментарий от shmegor

Иметь порядковый номер пакета в UDP это классика. Писал транспортный уровень протокола обмена данными с разными торговыми биржами. Везде есть номер пакета. В общем случае обработка может происходить так: UDP канал обычно дублируется. В сетевом потоке приложения получаешь пакеты из обоих каналов и складываешь пакеты в очередь, отсортированную по номеру пакета. Дубликаты естественно игнорируешь. При обнаружении разрыва в нумерации пакетов, запрашиваешь потерянный пакет из канала восстановления.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.