Введение
Протокол в наборе протоколов Интернета, используемый с IPv6. Протокол обнаружения соседей (NDP), или просто обнаружение соседей (ND), — это протокол набора протоколов Интернета, используемый с версией 6 протокола Интернета (IPv6). Он работает на сетевом уровне интернет-модели и отвечает за сбор различной информации, необходимой для сетевого взаимодействия, включая настройку локальных соединений, серверов доменных имен и шлюзов. Протокол определяет пять типов пакетов ICMPv6 для выполнения функций, аналогичных протоколу разрешения адресов (ARP), протоколу обнаружения маршрутизатора и протоколу перенаправления маршрутизатора для IPv4, а также протоколу управления интернет-сообщениями (ICMP). Он предоставляет множество улучшений по сравнению со своими аналогами для IPv4 (RFC 4861, раздел 3.1). Например, он включает обнаружение недоступности соседей (NUD), что повышает устойчивость доставки пакетов в случае отказа маршрутизаторов или каналов связи, а также мобильных узлов. Расширение протокола Inverse Neighbor Discovery (IND) (RFC 3122) позволяет узлам определять и объявлять адрес IPv6, соответствующий заданному адресу канала связи, аналогично Reverse ARP для IPv4. Протокол Secure Neighbor Discovery Protocol (SEND), расширение безопасности NDP, использует криптографически сгенерированные адреса (CGA) и инфраструктуру открытых ключей ресурсов (RPKI) для обеспечения альтернативного механизма защиты NDP криптографическим методом, независимым от IPsec. Neighbor Discovery Proxy (ND Proxy) (RFC 4389) предоставляет сервис, аналогичный IPv4 Proxy ARP, и позволяет объединять несколько сегментов сети в рамках одного префикса подсети, когда соединение невозможно установить на уровне канала связи.
The Neighbor Discovery Protocol (NDP), or simply Neighbor Discovery (ND), is a protocol of the Internet protocol suite used with Internet Protocol Version 6 (IPv6). It operates at the internet layer of the Internet model, and is responsible for gathering various information required for network communication, including the configuration of local connections and the domain name servers and gateways. The protocol defines five ICMPv6 packet types to perform functions for IPv6 similar to the Address Resolution Protocol (ARP) and Internet Control Message Protocol (ICMP) Router Discovery and Router Redirect protocols for IPv4. It provides many improvements over its IPv4 counterparts (RFC 4861, section 3.1). For example, it includes Neighbor Unreachability Detection (NUD), thus improving robustness of packet delivery in the presence of failing routers or links, or mobile nodes. The Inverse Neighbor Discovery (IND) protocol extension (RFC 3122) allows nodes to determine and advertise an IPv6 address corresponding to a given link layer address, similar to Reverse ARP for IPv4. The Secure Neighbor Discovery Protocol (SEND), a security extension of NDP, uses Cryptographically Generated Addresses (CGA) and the Resource Public Key Infrastructure (RPKI) to provide an alternative mechanism for securing NDP with a cryptographic method that is independent of IPsec. Neighbor Discovery Proxy (ND Proxy) (RFC 4389) provides a service similar to IPv4 Proxy ARP and allows bridging multiple network segments within a single subnet prefix when bridging cannot be done at the link layer.
Пример
Два компьютера в офисе (компьютер 1 и компьютер 2) соединены друг с другом в локальной сети с помощью кабелей Ethernet и сетевых коммутаторов, без промежуточных шлюзов или маршрутизаторов. Компьютер 1 должен отправить пакет компьютеру 2. Через DNS он определяет, что компьютер 2 имеет IP-адрес. Чтобы отправить сообщение, ему также требуется MAC-адрес компьютера 2. Сначала компьютер 1 использует кэшированную таблицу NDP для поиска каких-либо существующих записей MAC-адреса компьютера 2. Если MAC-адрес найден, он отправляет Ethernet-кадр, содержащий IP-пакет, по каналу связи с адресом назначения. Если в кэше не найдено информации для , компьютер 1 должен создать многоадресный адрес запрошенного узла, взяв младшие 24 бита адреса компьютера 2 и добавив их к префиксу , который равен , и создать многоадресный MAC-адрес запрошенного узла, взяв младшие 24 бита многоадресного адреса запрошенного узла компьютера 2 и добавив их к префиксу 33:33:FF:xx:xx:xx, который равен , и отправить сообщение запроса соседства, запрашивающее ответ для (IP-адрес назначения и MAC-адрес назначения), которое принимается компьютером 2, прослушивающим свой собственный многоадресный адрес запрошенного узла в локальной сети. Компьютер 2 отвечает сообщением объявления соседа, содержащим его MAC- и IP-адреса. В процессе обработки запроса компьютер 2 может добавить в свою таблицу NDP запись для компьютера 1 для последующего использования. Компьютер 1 получает и кэширует информацию об ответе в своей таблице NDP и теперь может отправить пакет.
To send the message, it also requires Computer 2's MAC address. First, Computer 1 uses a cached NDP table to look up for any existing records of Computer 2's MAC address If the MAC address is found, it sends an Ethernet frame containing the IP packet onto the link with the destination address If the cache did not produce a result for , Computer 1 has to create a solicited node multicast address by taking the least significant 24 bits of Computer 2's address and appending them to the prefix , which is , and create a solicited node multicast MAC address by taking the least significant 24 bits of Computer 2's solicited node multicast address and appending them to the prefix 33:33:FF:xx:xx:xx, which is , and send a neighbor solicitation message requesting an answer for (destination IP address and destination MAC address), which is accepted by Computer 2 which is listening on its own solicited node multicast address on the local network. Computer 2 responds with a neighbor advertisement message containing its MAC and IP addresses. As part of fielding the request, Computer 2 may insert an entry for Computer 1 into its NDP table for future use. Computer 1 receives and caches the response information in its NDP table and can now send the packet.