Мультикаст в IPv6

В IPv6 существует три вида рассылки:

  1. Unicast – один источник, один получатель
  2. Multicast – один источник, несколько получателей
  3. Anycast – один источник, несколько потенциальных получателей, но отсылается только одному из них (в курсе CCNA не рассматривается).

Как мы видим, здесь нет широковещательной (Broadcast) рассылки. Там, где раньше использовалось широковещание, в IPv6 используются мультикастовые адреса. Действительно, зачем ограничивать себя рамками broadcast, когда multicast гораздо гибче – иногда можно отослать сообщение группе хостов, а иногда – всем.

В IPv6 для мультикастовых адресов выделен специальный диапазон FF00::/8. То есть, все адреса, начинающиеся с FF – мультикастовые.

Адреса мультикаст бывают двух типов:

  1. Назначенные (Assigned multicast) – специальные адреса, назначение которых предопределено.
  2. Запрошенные (Solicited multicast) – остальные адреса, которые устройства могут использовать для прикладных задач.

Назначенные адреса

Назначенные адреса – это зарезервированные для определённых групп устройств мультикастовые адреса. Отправляемый на такой адрес пакет будет получен всеми устройствами, входящими в группу. Существуют специальные назначенные мультикастовые адреса, например:

  1. FF02::1 – в эту группу входят все устройства в локальной сети. Таким образом, данный специальный мультикастовый адрес ведёт себя как широковещательный адрес в IPv4. Все устройства обязаны принимать пакеты, отправленные на FF02::1.
  2. FF02::2 – в эту группу входят все маршрутизаторы. С помощью данного адреса возможно сделать рассылку по маршрутизаторам, присутствующим в локальной сети. Как только на маршрутизаторе Cisco включается режим маршрутизации для IPv6, он автоматически становится участником этой группы и начинает принимать весь трафик, адресованный на FF02::2.
  3. FF02::1:2 – в эту группу входят все DHCPv6 сервера, используется этот адрес, как не трудно догадаться, в процессе получения адреса по DHCP.

Запрошенные адреса

Адрес этого типа автоматически появляется, когда на некотором интерфейсе появляется юникастовый адрес. Адрес формируется из сети FF02:0:0:0:0:1:FF00::/104, оствашиеся 24 бита – такие же как у настроенного юникастового адреса. Обратите внимание, что /104 означает, что из данной сети только первые 104 бита берутся для формирования адреса (последние два нуля не участвуют).

Когда некоторое устройство получает пакет, у которого адреса получателя находится в сети FF02:0:0:0:0:1:FF00/104, оно обязано принять этот пакет в том случае, если оставшиеся 24 бита в этом адреса равны последним 24-м битам в юникастовом адресе самого устойства.

Допустим, есть устройство с адресом 2001:0DB8:ABCD:0001:0000:0000:0123:A050. Последние 24 бита (6 шестнадцатеричных цифр) в данном случае – это «23:A050». Значит это устройство обязано принимать так же и трафик, приходящий на муьтикастовый адрес FF02:0:0:0:0:1:FF23:A050.

Такие мультикастовые адреса активно используются в ситуации, когда некоторое устройство хочет узнать MAC адрес своего соседа (аналог ARP в IPv4).

Например, некоторое устройство хочет отправить пакет на локальный адрес FE80::1234:5678. Это локальный адрес (так как начинается с FE80, подробнее о типах адресов – здесь), значит он находится в нашей локальной сети. Соответственно, чтобы на него что-то отправить, надо узнать MAC-адрес целевого устройства (для формирования Ethernet-фрейма). Хост отправляет на запрошенный (solicited) мультикастовый адрес, FF02:0:0:0:0:1:FF34:5678 пакет. Последние 24 бита «34:5678» были взяты из IPv6-адреса искомого устройства. В случае связки IPv4 и ARP, этот пакет отправлялся бы на адрес 255.255.255.255.

Далее искомое устройство отвечает на этот мультикастовый пакет юникастом, сообщая в ответе свой MAC-адрес.

Возможны ситуации, когда несколько устройств обработают такой пакет (если у них совпадают последние 24 бита адреса), но в этом нет ничего страшного, так как это в любом случае лучше широковещания, когда все устройства обрабатывали запрос.

Относится к теме: 

Добавить комментарий