
7.4. Надежная групповая рассылка 425
сти сети. Однако, если число процессов мало, надежная групповая рассылка через
несколько надежных сквозных каналов представляет собой самое простое реше-
ние,
которое часто используется на практике.
Чтобы двигаться дальше, нам следует точно определить, что такое паделшая
групповая рассылка (reliable
multicasting).
Интуитивно мы понимаем, что имеется
в виду. Сообщение, отправленное группе процессов, должно быть гарантирован-
но доставлено всем членам этой группы. Однако что произойдет, если процесс
станет членом группы непосредственно в момент рассылки? Должен ли этот
процесс также получить сообщение? Точно так же мы должны определить, что
произойдет, если отправляющий сообщение процесс в процессе взаимодействия
откажет.
Чтобы разрешить и эти ситуации, следует провести границу между надежной
связью в присутствии ошибочно функционирующих процессов и надежной связью
с корректно работающими процессами. В первом случае групповая рассылка счи-
тается надежной, если можно гарантировать получение сообщения всеми пра-
вильно работающими членами группы. Сложность в том, что вдобавок ко всем
ограничениям, связанным с организацией процессов в группе, необходимо выяс-
нить,
какие процессы входили в группу до получения сообщения. Мы еще вер-
немся к этому вопросу, когда будем обсуждать атомарную групповую рассылку.
Ситуация немного прояснится, если допустить, что существует соглашение о
том, кто является членом группы. Так, в частности, если предположить, что про-
цессы в ходе сеанса связи не отказывают, не входят в группу и не покидают ее, то
надежная групповая рассылка будет просто означать, что любое сообщение дос-
тавляется всем текущим членам группы. В простейшем случае между членами
группы нет договоренности о доставке сообщений всем членам группы в опреде-
ленном порядке, но иногда подобное условие необходимо.
Подобная наиболее слабая форма надежной групповой рассылки, относитель-
но просто реализуемая, применяется в том случае, если число приемников мало.
Рассмотрим случай, когда один передатчик должен сделать групповую рассылку
для нескольких приемников. Предположим, что базовая система связи обеспечи-
вает только ненадежную групповую рассылку, то есть групповые сообщения мо-
гут быть частично потеряны, а частично доставлены, но не всем потенциальным
потребителям.
Простой способ реализации надежной групповой рассылки в таких условиях
иллюстрирует рис. 7.7. Передающий процесс приписывает каждому рассылаемо-
му сообщению последовательный номер. Предположим, что сообщения прини-
маются в том же порядке, в котором рассылаются. В этом случае получатель с
легкостью обнаружит пропажу сообщения. Каждое посылаемое сообщение со-
храняется отправителем в локальном буфере истории. Полагая, что получатели
знают, кто отправлял сообщение, отправитель просто сохраняет сообщение в
буфере до получения подтвержденир! его приема ото всех получателей. Если по-
лучатель обнаружит пропажу сообщения, он возвращает отправителю отрица-
тельное подтверждение, запрашивая повторную передачу. С другой стороны, от-
правитель, не получивший подтверждения в течение заданного срока, может
произвести повторную передачу автоматически.