Введение

Pragmatic General Multicast (PGM) - это надежный протокол передачи данных в мультикастной компьютерной сети. PGM обеспечивает надежную последовательность пакетов для нескольких получателей одновременно, что делает его подходящим для таких приложений, как передача файлов нескольким получателям. Мультикаст - это метод адресования сети для доставки информации группе пунктов назначения одновременно с использованием наиболее эффективной стратегии доставки сообщений по каждому звену сети только один раз, создавая копии только тогда, когда ссылки на несколько пунктов назначения разделяются (обычно сетевые коммутаторы и маршрутизаторы). Однако, как и протокол пользовательской датграммы, мультикаст не гарантирует доставку потока сообщений. Сообщения могут быть пропущены, доставлены несколько раз или доставлены не в порядке. Надежный протокол мультикаста, такой как PGM, добавляет возможность для приемников обнаруживать потерянные и/или не в порядке сообщения и принимать корректирующие меры (по принципу аналогичные TCP), в результате чего поток сообщений в порядке остается свободным от пробелов. В то время как TCP использует ACK для подтверждения групп отправленных пакетов (что-то, что было бы неэкономично в мультикасте), PGM использует концепцию отрицательных подтверждений (NAK). NAK отправляется в однокастный способ обратно на хост через определенную сетевую систему по хоп-по хоп процедуре, когда обнаруживается потеря данных определенной последовательности. Поскольку PGM в значительной степени зависит от NAK для обеспечения целостности, когда NAK отправляется, подтверждение NAK (NCF) отправляется через мультикаст для каждого возвращения. Затем данные о ремонте (RDATA) отправляются обратно либо из источника, либо из назначенного местного ремонтника (DLR) в какой-то точке, ближе к месту назначения. PGM - это экспериментальный протокол IETF. Он еще не является стандартом, но был реализован в некоторых сетевых устройствах и операционных системах, включая Windows XP и более поздние версии Microsoft Windows, а также в сторонних библиотеках для Linux, Windows и Solaris.