Skip to content

Latest commit

 

History

History
81 lines (45 loc) · 9.16 KB

lecture.adoc

File metadata and controls

81 lines (45 loc) · 9.16 KB

Групповые адреса (Multicast)

Что такое групповой IP адрес?

Групповой адрес - это идентификатор не одного, а сразу нескольких хостов. Используется в случае, когда данные необходимо доставить не одному, а сразу группе хостов. Под групповые адреса в IP выделена сеть 224.0.0.0/4 (от 224.0.0.0 до 239.255.255.255). Рассылка на эти адреса обычно называется мультикастом.

Какую проблему решает групповой IP адрес?

Например, вы хотите в своей сети запустить интернет телевидение (IPTV) и у вас есть 3 клиента, которые хотят смотреть один и тот же канал. Если вы будете использовать обычные IP адреса (Unicast), то для каждого получателя вам придется отправлять отдельный пакет, как показано на рисунке ниже. При этом данные в пакетах будут одинаковые.

Сервер IPTV использует юникаст.
Figure 1. Сервер IPTV использует юникаст.

Такой способ доставки данных неэффективный. Так как с ростом числа клиентов будет расти и нагрузка на канал передачи данных между сервером и свитчем.

Или другая ситуация, у вас в компании открывается новый офис или компьютерный класс. Вам доставили 50 одинаковых компьютеров, на которые нужно установить ПО. Скачивать с сервера 50 раз один и тот же образ будет на много дольше, чем если его скачать всего 1 раз.

Для решения подобных задач лучше всего подойдет использование групповых адресов, как на рисунке ниже.

Сервер IPTV использует групповую рассылку.
Figure 2. Сервер IPTV использует групповую рассылку.

Основной критерий для использования групповой рассылки:

  • отправитель посылает только одну копию трафика, независимо от количества получателей.

  • сервер отправителя не планирует получать данные от клиентов, т.е. трафик односторонний.

Для отправки данных на групповой адрес вам достаточно указать его в качестве адреса назначения.

Отправка ICMP-запроса на групповой адрес 224.12.0.2. (https://miminet.ru/web_network?guid=730102eb-672c-47a1-a24b-14438056bec6).
Figure 3. Отправка ICMP-запроса на групповой адрес 224.12.0.2. (https://miminet.ru/web_network?guid=730102eb-672c-47a1-a24b-14438056bec6)

Такой пакет будет доставлен на все хосты в сегменте сети, но обработан только теми, кто подписался на этот адрес.

Когда хост назначает себе групповой адрес, он не указывает маску. В этом нет смысла, так как групповой адрес всегда один.

Отображение группового IP адреса в MAC адрес

Обратите внимание на пример с рисунка выше. Если вы запустите его, то увидите, что перед отправкой ICMP пакета нет привычных нам ARP пакетов. Почему так?

Дело в том, что пакет на групповой IP адрес доставляется сразу нескольким хостам. Записать несколько MAC адресов в Ethernet заголовок мы не можем, там место только для одного адреса. А писать туда широковещательный адрес (FF:FF:FF:FF:FF:FF) тоже неправильно, ведь пакет групповой, а не широковещательный. Поэтому, у групповых пакетов MAC адрес формируется автоматически на основании IP адреса назначения.

Формат группового MAC адрес.
Figure 4. Формат группового MAC адрес.

Давайте разберем, как MAC адрес формируется на основании группового IP адреса. Для примера возьмем групповой IP адрес 224.12.0.2. Напомню, общая длина MAC адреса 48 бит, а длина IP адреса 32 бита.

  • Первые 3 байта (24 бита) группового MAC адреса всегда 01:00:5E

  • Затем идет бит 0

  • Оставшиеся 23 бита MAC адреса устанавливаются в младшие 23 бита IP адреса.

Отображение группового IP адреса в MAC адрес.
Figure 5. Отображение группового IP адреса в MAC адрес.

На рисунке показано, как младшие 23 бита IP адреса отображаются в младшие 23 бита MAC адреса.

В сети класса D (224.0.0.0 - 239.255.255.255) у всех IP адресов старшие 4 бита всегда одинаковые, а меняются только младшие 28 бит. Т.е. 4 бита для адреса сети и 28 бит для адреса хоста.

И вот вопрос, почему у группового IP адреса изменяющиеся 28 бит, а в MAC адрес отображается всего 23 бита? Что делать с оставшимися 5 битами?

Ответ простой - 5 бит просто не влезли. Поэтому есть 32 (2 ^ 5) групповых IP адреса, которые дадут одинаковый MAC адрес. Например:

  • 224.1.1.1

  • 224.129.1.1

  • 225.1.1.1

  • и так далее.

Когда хост назначает себе один из групповых адресов, то он также конфигурирует сетевой интерфейс на прием пакетов на MAC адрес, который соответствует этому групповому адресу. Т.е., если хост ставит себе IP адрес 224.12.0.2, то он также конфигурирует свой сетевой интерфейс на прием пакетов на MAC адрес 01:00:5E:0C:00:02.

Итого, есть 32 групповых IP адреса, которые дадют одинаковый MAC адрес. Получается, что если один хост поставит себе групповой IP адрес 224.1.1.1, то его сетевой интерфейс также будет принимать пакеты, которые предназначаются для, например, 225.1.1.1.

В этом случае, пакет действительно будет принят и обработан сетевым интерфейсом. Но когда пакет поднимется выше по стеку, то выяснится несовпадение по IP адресу. И пакет будет отброшен. Так что в целом, все нормально, ненужный пакет не будет по ошибке обработан.

История про отображение 23 бит в MAC адрес

В 90-х годах Стив Диринг (Steve Deering) как раз занимался разработкой группового вещания (мультикаста) в IP протоколе. И он хотел купить у IEEE 16 OUI (Organizational Unique Identifiers) для отображения IP адреса в MAC. Каждый OUI размером 24 бита, т.е. 16 OUI как раз хватило бы, чтобы сделать отображение 1 в 1.

Правда, каждый OUI стоил 1000$ и менеджер Стива не хотел платить 16 * 1000 = 16 000$ за какое-то там адресное пространство. Поэтому менеджер купил только 1 OUI (24 бита) и отдал Стиву половину от этого (23 бита) для его исследований.