Групповая рассылка в Интернете и группы рассылки
С точки зрения сети групповая рассылка представляет собой одну операцию передачи, в результате которой копии переданных данных доставляются группе получателей. Групповая рассылка может быть реализована несколькими способами.
□ Выборочная рассылка от одного отправителя всем получателям группы. Отправитель устанавливает обычные одноадресные транспортные соединения с каждым из получателей. Передаваемая транспортному уровню отправителя единица обмена прикладного уровня дублируется самим отправителем и передается через каждое соединение. При таком подходе для групповой рассылки нижележащий сетевой уровень используется обычным путем (так же, как для выборочной рассылки) , и явная поддержка на нем групповой рассылки не требуется. Данный подход иллюстрирует рис. 4.42, а, на котором сетевые маршрутизаторы, не принимающие участия в рассылке, показаны светлыми. Чтобы доставить данные трем получателям, отправитель использует три отдельных одноадресных соединения.
□ Групповая рассылка на прикладном уровне. Во втором методе также используется выборочная рассылка, но в дублирование и продвижение данных вовлекаются получатели. В отличие от предыдущего случая, когда отправитель сам пересылал копии данных всем получателям, в данном случае отправитель рассылает копии только нескольким (или одному) из них, а те затем сами создают копии и переправляют их другим получателям. Последние также могут создать копии и разослать их дополнительным получателям и т. д. Для реализации данной схемы необходимо создать и поддерживать инфраструктуру распределения на прикладном уровне [75,374]. Как показано на рис. 4.42, б, единственная дейтаграмма методом выборочной рассылки посылается отправителем получателю, который делает две копии и посылает их остальным двум получателям тем же методом.
□ Явная групповая рассылка. Третья возможность заключается в предоставлении явной поддержки групповой рассылки на сетевом уровне. При таком подходе передающий хост отправляет всего одну дейтаграмму. Эта дейтаграмма (или ее копия) дублируется сетевым маршрутизатором, и копии отправляются по нужным исходящим линиям. Данный подход иллюстрирует рис. 4.42, в, на котором маршрутизаторы, поддерживающие групповую рассылку, показаны темными. Здесь отправитель передает всего одну дейтаграмму, которая затем дублируется маршрутизатором. Одну из копий маршрутизатор посылает самому верхнему получателю, а вторая направляется правому маршрутизатору, который посылает ее по локальной сети Ethernet с широковещательным адресом, в результате эту копию получают оба получателя.
Очевидно, что в случае явной групповой рассылки пропускная способность сети используется наиболее эффективно, так как по каждой линии пересылается всего одна копия дейтаграммы. С другой стороны, для реализации данного метода требуется существенная поддержка со стороны сетевого уровня. Аналогично, реализация групповой рассылки на прикладном уровне может быть более эффективной, чем первый вариант, при котором отправитель сам пересылал копии данных всем получателем путем выборочной рассылки. Но и для этого метода также необходима установка и поддержка специальной инфраструктуры на прикладном уровне. В оставшейся части этого раздела мы рассмотрим механизмы поддержки групповой рассылки на сетевом уровне, так как такая поддержка требует решения ряда интересных проблем, некоторые из которых характерны и для групповой рассылки на прикладном уровне.
При групповой рассылке мы сразу же сталкиваемся с двумя проблемами: как идентифицировать получателей многоадресной дейтаграммы и как адресовать эту дейтаграмму.
В случае выборочной рассылки IP-адрес получателя содержится в каждой одноадресной IP-дейтаграмме и означает единственного получателя. Но в случае групповой рассылки имеется несколько получателей. Есть ли смысл помещать в каждую групповую дейтаграмму IP-адреса всех получателей, входящих в группу? Хотя такой подход может работать для небольшого количества получателей, он плохо подходит для случая сотен и тысяч получателей. Объем адресной информации просто займет все место в дейтаграмме, вытеснив из нее всю полезную информацию. Кроме того, чтобы явно указать всех получателей, отправитель должен знать идентификаторы и адреса всех получателей. Далее будет показано, что в некоторых ситуациях такое требование может быть нежелательным.
По вышеуказанным причинам в архитектуре Интернета (а также в архитектуре ATM-сети) групповая дейтаграмма адресуется косвенно. То есть для группы получателей используется один идентификатор, а копия дейтаграммы, адресованной группе получателей при помощи этого единственного идентификатора, доставляется всем членам этой группы. В Интернете единый идентификатор, соответствующий группе получателей, представляет собой групповой адрес класса D (см. раздел «Интернет-протокол»). Группа получателей, ассоциированная с адресом класса D, называется группой рассылки. На рис. 4.43 четыре хоста (показаны темными) ассоциированы с группой рассылки с IP-адресом 226.17.30.197. Эти хосты будут получать все дейтаграммы, направляемые по данному адресу. Сложность заключается в том, что у каждого хоста имеется уникальный IP-адрес, полностью независимый от адреса группы рассылки, членом которой он является.
Хотя идея группы рассылки проста, она поднимает ряд вопросов. Как создается группа и как она прекращает свое существование? Каким образом выбирается групповой адрес? Как к группе добавляются новые хосты (в качестве отправителей или получателей)? Может ли кто угодно присоединиться к группе (и передавать или принимать данные, посылаемые этой группе) или членство в группе ограничивается и, если да, то кем? Известны ли членам группы идентификаторы других членов группы? Как сетевые маршрутизаторы взаимодействуют друг с другом, чтобы доставить групповую дейтаграмму всем членам группы? В Интернете на все эти вопросы отвечает протокол IGMP (RFC 2236). Мы рассмотрим протокол IGMP, а затем вернемся к вопросам.