Эта вторая статья, продолжающая цикл, посвященный IPv6. В
первой
вводной статье речь шла о структуре IPv6 пакета, записи адресов,
префиксе. Сегодня мы поговорим о том, какие виды пакетов бывают в IPv6, о
важности мультикастов, а также, о видах автоматической конфигурации
хоста в IPv6.
Примечание: в этой и других статьях под словом «маршрутизатор» я подразумеваю «маршрутизатор cisco».
Типы вещания в IPv6
В IPv6 существует три вида рассылки:
- Unicast – один источник, один получатель
- Multicast – один источник, несколько получателей
- Anycast – один источник, несколько потенциальных получателей, но отсылается только одному из них.
Как мы видим, здесь нет широковещательной (
Broadcast) рассылки.
Там, где раньше использовалось широковещание, в IPv6 используются
мультикастовые адреса. Действительно, зачем ограничивать себя рамками
broadcast, когда multicast гораздо гибче – иногда можно отослать
сообщение группе хостов, а иногда – всем.
Подробнее о мультикастах
В IPv6 для мультикастовых адресов выделен специальный диапазон FF00::/8. То есть,
все адреса, начинающиеся с FF – мультикастовые.
Адреса мультикаст бывают двух типов:
- Назначенные (Assigned multicast) – специальные адреса, назначение которых предопределено.
- Запрошенные (Solicited multicast) – остальные адреса, которые устройства могут использовать для прикладных задач.
Назначенные адреса
Назначенные адреса – это зарезервированные для определённых групп
устройств мультикастовые адреса. Отправляемый на такой адрес пакет будет
получен всеми устройствами, входящими в группу. Существует два
специальных назначенных мультикастовых адреса:
- FF02::1 – в эту группу входят все устройства в локальной сети. Таким
образом, данный специальный мультикастовый адрес ведёт себя как
широковещательный адрес в IPv4. Все устройства обязаны принимать пакеты,
отправленные на FF02::1.
- FF02::2 – в эту группу входят все маршрутизаторы. С помощью данного
адреса возможно сделать рассылку по маршрутизаторам, присутствующим в
локальной сети. Как только на маршрутизаторе Cisco включается режим
маршрутизации для IPv6, он автоматически становится участником этой
группы и начинает принимать весь трафик, адресованный на FF02::2.
Запрошенные адреса
Адрес этого типа автоматически появляется, когда на некотором интерфейсе
появляется юникастовый адрес. Адрес формируется из сети
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).
Например, некоторое устройство хочет отправить пакет на локальный адрес
FF80::1234:5678. Это локальный адрес (так как начинается с FF80,
подробнее о типах адресов в предыдущей статье), значит он находится в
нашей локальной сети. Соответственно, чтобы на него что-то отправить,
надо узнать MAC-адрес целевого устройства (для формирования
Ethernet-фрейма). Хост отправляет на запрошенный (solicited)
мультикастовый адрес, FF02:0:0:0:0:1:FF34:5678 пакет. Последние 24 бита
«34:5678» были взяты из IPv6-адреса искомого устройства. В случае связки
IPv4 и ARP, этот пакет отправлялся бы на адрес 255.255.255.255.
Далее искомое устройство отвечает на этот мультикастовый пакет юникастом, сообщая в ответе свой MAC-адрес.
Возможны ситуации, когда несколько устройств обработают такой пакет
(если у них совпадают последние 24 бита адреса), но в этом нет ничего
страшного, так как это в любом случае лучше широковещания, когда все
устройства обрабатывали запрос.
Автоконфигурация
В IPv6 появился новый механизм автоконфигурации узла. Называется он
Stateless Address Autoconfiguration или SLAAC. Используется он для
автоматического получения IP адреса и сетевого префикса узлом, без
использования DHCPv6 сервера, или совместно с ним.
Действительно, когда мы создаём некоторую сеть, мы прописываем адрес
шлюза и префикс этой сети на маршрутизаторе. Этой информации достаточно,
чтобы выдавать адреса устройствам. Механизм SLAAC позволяет
маршрутизатору назначать устройствам адреса даже если в сети нет DHCPv6.
Маршрутизатор Cisco с рабочим IPv6 интерфейсом рассылает в сеть
информацию об этой сети, включающую в себя сетевую часть IP адреса и
длину префикса. Кроме того, в этом сообщении содержится адрес шлюза по
умолчанию для сети. Сообщение это называется Router Advertisement (RA) и
отправляется обычно раз в 200 секунд на мультикастовый адрес FF02::.
Если в сети появилось новое устройство, которому необходим адрес, ему
необязательно ждать 200 секунд до ближайшей рассылки, оно может направит
запрос маршрутизатору (Router Solicitation или RS) и попросить его
выслать настройки немедленно. Запрос маршрутизатору выполняется на адрес
FF02::2.
Оба сообщения RA и RS отправляются посредством протокола ICMPv6, с мультикастовым адресом получателя в IP пакете.
Для того чтобы маршрутизатор начал полноценно обслуживать сеть
(рассылать в неё RA и отвечать на RS), мало настроить IPv6 адрес на
интерфейсе, необходимо так же включить режим маршрутизации для IPv6
сетей, введя команду
ipv6 unicast routing
в режиме глобальной конфигурации.
Существует три способа назначения адреса:
- Маршрутизатор выдаёт подсеть, префикс и адрес шлюза. Другую информацию устройства не получают.
- Маршрутизатор выдаёт подсеть, префикс и адрес шлюза, а отдельный
DHCPv6 сервер выдаёт дополнительную информацию: опции, маршруты, адреса
DNS серверов и другую – по необходимости.
- Stateless Address Autoconfiguration вообще не используется –
устройство не использует RA от маршрутизатора, а обращается к DHCPv6
серверу, который предоставляет всю необходимую информацию, включая
адрес, шлюз, префикс, DNS сервера и другую – в зависимости от настроек
DHCP.
В случае использования третьего варианта, DHCP сервер выдаёт клиенту
полный IPv6 адрес – все 128 бит, который назначается на интерфейсе
клиента. В случае использования первых двух вариантов, маршрутизатор
сообщает клиенту только сеть, в которой он находится, шлюз и префикс.
Таким образом, клиенту недостаёт второй половины IP адреса
(идентификатора интерфейса). Напомню, что адрес состоит из 128 бит, а
маршрутизатор выдаёт максимум, только первые 64. Оставшиеся 64 бита, где
должна находиться информация о хосте, должны быть заполнены самим
устройством, маршрутизатору не важно, что именно устройство туда
поместит, важно, чтобы первые 64 бита (сеть) были правильными. Для
генерации правой половины IP адреса используется алгоритм
EUI-64 или вообще генерируется случайный набор цифр.