7.2. Расширение модуля IP
Для приема групповых дейтаграмм IP модуль IP должен поддерживать списки групп хостов, связанные с каждым сетевым интерфейсом. Входящие дейтаграммы, адресованные в одну из таких групп, обрабатываются точно так же, как дейтаграммы, предназначенные конкретному хосту.
Входящие дейтаграммы, адресованные группам, в которые хост не входит, отбрасываются без генерации сообщений об ошибках и записей в системный журнал. Если на хост, имеющий несколько сетевых интерфейсов, дейтаграмма поступила через один интерфейс, а группа, в которую входит хост, связана с другим интерфейсом, такая дейтаграмма отбрасывается без генерации сообщений (это может происходить только в результате неадекватной фильтрации групповых адресов в модуле локальной сети).
Входящие дейтаграммы IP со временем жизни 1 не отбрасываются (т. е., такие дейтаграммы не могут быть пересланы, но могут использоваться локально). Входящие дейтаграммы с IP-адресом группы в поле отправителя отбрасываются без генерации сообщений. Сообщения об ошибках ICMP (Destination Unreachable, Time Exceeded, Parameter Problem, Source Quench, Redirect) в ответ на сообщения, адресованные группе хостов IP, никогда не генерируются.
Список групп хостов обновляется в результате запросов JoinHostGroup и LeaveHostGroup от протоколов вышележащего уровня. С каждой группой должен быть связан счетчик или иной механизм для обработки запросов на присоединение к группе и выход из нее. При первом запросе на подключение к группе и последнем запросе на выход из нее передается уведомление модулю локальной сети, связанному с обслуживающим группу интерфейсом для того, чтобы этот модуль мог обновить фильтр приема групповых пакетов (см. 7.3. Расширение интерфейса с локальной сетью).
Кроме того, в модуль IP должна быть добавлена поддержка протокола IGMP (см. Приложение I. Протокол управления группами IGMP). Протокол IGMP служит для уведомления соседних multicast-маршрутизаторов об участии в группах хостов конкретной локальной сети. Для поддержки IGMP каждый хост уровня 2 должен присоединяться к группе allhosts (все хосты) с адресом 224.0.0.1 на каждом сетевом интерфейсе при инициализации и сохранять принадлежность к этой группе в течение всего периода активности хоста.