Подтвердить что ты не робот

Какой самый эффективный протокол для надежной многоадресной рассылки?

Когда отправителю требуется многоадресная передача относительно большого объема данных (скажем, нескольких мегабайт в секунду) надежным способом по Ethernet до небольшого числа приемников (скажем, менее дюжины) в той же подсети, что больше всего эффективный протокол? Под надежным я имею в виду, что если пакет потерян, протокол гарантирует, что он будет возмущен, так что нет потери данных в любом приемнике. Термин "эффективный" намного сложнее определить, но позвольте сказать, что мы хотим максимизировать пропускную способность и минимизировать пропускную способность сети с минимальным использованием ЦП на обоих концах. Это еще не четкое определение, но это лучшее, что я могу придумать. Либо ориентированный на поток, либо протокол, ориентированный на сообщения, будет приемлемым.

Буду признателен за реальные примеры, и я с радостью соглашусь с субъективными ответами, т.е. с вашим любимым протоколом многоадресной рассылки, если вы сможете объяснить его плюсы и минусы.

4b9b3361

Ответ 1

Пример реального мира: TIBCO Rendezvous.

Данные отправляются через многоадресную рассылку с порядковым номером. Клиент, который обнаруживает отсутствующий номер последовательности, отправляет сообщение в группе многоадресной рассылки "эй, я пропустил пакет 12345". Сервер перенастраивает эти данные. Сервер имеет настраиваемое количество данных для буферизации, если клиент запрашивает его.

Проблема:

Представьте, что у одного клиента есть половина его пакетов и 100 здоровых клиентов. Этот клиент отправляет запрос повторной передачи для каждого другого пакета. Сервер начинает вызывать достаточную нагрузку на одного из здоровых клиентов, так что он начинает отбрасывать пакеты и запрашивать повторные передачи. Дополнительная нагрузка от этого приводит к тому, что другой здоровый клиент начинает запрашивать повторные передачи. И так далее. Результаты сглаживания скопления.

Tibco обеспечивает обходное решение, обрезая абонента, который отправляет слишком много запросов повторной передачи. Это затрудняет для одиночного абонента возникновение коллапса перегрузки.

Другим обходным путем для ограничения риска коллапса перегрузки является ограничение объема данных, которые сервер желает повторно передать.

Tibco также должна предоставлять эвристику на клиенте и сервере для того, чтобы многоадресная или одноадресная передача запроса повторной передачи и сама ретрансляция. Они этого не делают. (Для сервера вы можете одноадресной повторной передачи, если только один клиент запросил его в определенное временное окно, для клиента вы могли бы одноадресным запросом повторной передачи, если сервер сказал вам - в повторно переданном пакете - что вы только один запрашиваете повторные передачи и одноразовые запросы в будущем)

В основном вам нужно будет решить, насколько сильно вы хотите гарантировать, что клиенты получат данные, и риск сгущения скоплений. Вам нужно будет догадаться о том, где был упаден пакет, и ретранслирование наиболее эффективно отправляется одноадресной или многоадресной рассылкой. Если сервер понимает данные и может решить не отправлять повторную передачу, если в любом случае обновлены данные, которые должны быть отправлены (что делает ненужную ретрансляцию), вы находитесь в гораздо лучшем положении, чем структура, такая как Tibco RV.

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

В какой-то момент вам нужно будет принимать на сервере произвольные решения о том, сколько данных нужно буферировать в случае повторных передач или медленных клиентов.

Ответ 2

Следуя TIBCO, протокол PGM представляет собой стандартную надежную многоадресную рассылку с множеством оптимизаций для эффективной работы в очень больших масштабах с ускорением сетевых элементов. PGM был разработан TIBCO и CISCO и является факультативным протоколом под TIBCO Rendezvous, протокол по умолчанию - TRDP, который очень похож по дизайну.

Вы можете рассчитать теоретическую эффективность, например, перечисленную здесь для PGM,

http://code.google.com/p/openpgm/wiki/PgmPerformance

К сожалению, сетевые элементы реального мира, сетевые карты и общие компьютерные архитектуры выполняют намного меньше теоретических максимумов.

Ответ 3

BitTorrent!

Нет, серьезно. Возможно, вы захотите прочитать об этом.

UDP полезен для многоадресной рассылки, но не предоставляет гарантий, которые вы ищете - BitTorrent потребует от вас передачи более чем одной полной копии из исходного источника, но она по-прежнему достаточно эффективна и предоставляет полезные гарантии, особенно учитывая сколько контрольных сумм выполняется на каждом "куске" переданных данных.

Ответ 5

Могу ли я предложить UFTP. Он использует механизм, основанный на NAK, для определения того, какие пакеты для повторной передачи, и имеет возможность для фиксированной скорости передачи или контроля перегрузки с помощью TFMCC.

Каждый файл отправляется в проходах, где первый проход передает весь файл, в то время как последующие передачи только отправляют повторные передачи. Каждый клиент отслеживает, какие пакеты он получил и какие они пропустили. На определенных контрольных точках (и в конце прохода), если получатель пропустил какие-либо пакеты со времени последней контрольной точки, он отправит NAK, в котором перечислены пропущенные пакеты. Это имеет то преимущество, что приемники с малыми потерями заканчиваются перед приемниками с высокими потерями. UFTP также может быть сконфигурирован для сброса приемников, чья доля NAK превышает определенный порог.

Ограничивая NAK только получателям, которые проявили потерю, это снижает риск коллапса перегрузки, который отправитель получает подавленным обратной связью приемника.

Раскрытие информации: автор UFTP.

Ответ 6

Это открытый исследовательский вопрос; есть коммерческие решения, но которые являются чрезмерно дорогими. Удачи.

Ответ 7

Думаю, вам стоит взглянуть на Протокол передачи управления потоком в качестве альтернативы UDP/многоадресной рассылке, если вы действительно хотите надежную одновременную передачу для нескольких клиентов.