Pragmatic General Multicast
Pragmatic General Multicast (PGM) — сетевой протокол надёжной многоадресной передачи данных, относящийся к транспортному уровню модели OSI. PGM обеспечивает одновременную доставку множеству получателей сетевых пакетов с гарантией сохранения их исходной последовательности.
Обзор
Многоадресная передача данных — это метод параллельной доставки информации по сети группе адресатов. При этом используется наиболее эффективная стратегия однократной передачи сообщений по каждому сетевому пути, а копии сообщений создаются только в местах разветвлений (обычно на сетевых коммутаторах и маршрутизаторах). Тем не менее, как и UDP, многоадресная передача не гарантирует целостную доставку потока сообщений. Сообщения могут теряться, доставляться по нескольку раз или приходить в порядке отличном от исходного. Надёжный протокол многоадресной передачи, такой как PGM, даёт возможность получателям обнаруживать потери и/или нарушение порядка и принимать меры по восстановлению информации (эти же функции реализованы в протоколе TCP), получая целостный поток сообщений в нужном порядке.
В то время как TCP посылает ACK-подтверждения доставки групп пакетов, что расточительно, PGM использует концепцию посылки ответов отрицательного квитирования (Negative Acknowledgements, NAK). NAK-ответ отсылается хосту индивидуальной посылкой посредством определённой процедуры последовательной доставки, реализованной в протоколе сетевого уровня, применяемой каждый раз, когда будет обнаружена потеря данных в некоторой последовательности сообщений. Поскольку работа PGM по обеспечению целостности данных во многом зависит от NAK-ответов, на каждый такой ответ обратно отсылается подтверждение о получении NAK (NAK Confirmation, NCF). Затем в обратную сторону посылаются данные для восстановления (RDATA) хостом-источником или локальным узлом, выделенным для процедур восстановления (Designated Local Repairer, DLR) и расположенным ближе к хосту-назначению.
PGM — экспериментальный протокол IETF и ещё не утверждён в качестве стандарта, но был реализован в некоторых сетевых устройствах и операционных системах, включая Windows XP и выше, а также в библиотеках сторонних разработчиков для Linux, Windows и Solaris.
Ссылки
- RFC 3208
- http://openpgm.googlecode.com/ (недоступная+ссылка)
- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/randz/protocol/pgm_protocol.asp
- https://web.archive.org/web/20110111200232/http://www.cisco.com/en/US/docs/ios/12_0t/12_0t5/feature/guide/pgmscale.html
- http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_1-2/reliable_multicast.html
- http://www.juniper.net/techpubs/software/junos/junos85/swconfig85-multicast/id-11463816.html#id-11463816