Thursday, November 3, 2011

IPv6 Neighbor Discovery Protocol

The main characteristic of IPv6 besides its increased address space is its plug-and-play features. The Neighbor Discovery Protocol (NDP) provides the following functions and plug-and-play features for IPv6 hosts and routers when they are connected to an IPv6 link:

Router Discovery A node it can discover the local routers without using DHCP.
Prefix Discovery A node can discover the prefix(es) assigned to the link.
Parameter Discovery A node can discover parameters (eg: link MTU, hop limits) for the link.
Address Autoconfiguration A node can determine its full address without using DHCP.
Next-Hop Determination A node can determine the link-layer next hop for a destination, either as a local destination or a router to the destination.
Neighbor Unreachable Detection A node can determine when a neighbor (host or router) on the link is no longer reachable.
Duplicate Address Detection A node can determine if an address it would like to use is already being used by another node (host or router) on the link.
Redirect A router can notify a host for a better next-hop other than itself to a destination on another link. The redirect function is part of ICMPv4 functionality but is redefined as part of NDP in IPv6.

The scope of NDP messages is link-local; hence the IPv6 packets encapsulating them are always IPv6 link-local unicast address or multicast address with a link-local scope. The Hop Limit of the IPv6 packets encapsulating NDP messages is 255. If a packet is received with a Hop Limit less than 255, it means that the packet has passed through at least 1 router. The packet is dropped for preventing NDP from being attacked or spoofed from a source not connected to the local link.

IGMP is used in IPv4 to allow a host to inform its local router that it was joining a multicast group and would like to receive traffic for the particular multicast group. This function has been replaced by the ICMPv6 Multicast Listener Discovery process.

ICMPv6 messages and IPv6 Solicited-Node Multicast addresses are used to perform the above mentioned tasks. Hence an IPv6 node (host or router) must join the solicited-node multicast group for every unicast and anycast address assigned to it.

IPv6 Neighbor Discovery Process

The neighbor discovery process utilizes neighbor solicitation and neighbor advertisement messages. Neighbor solicitation message are being sent to the local link when a node would like to determine the data link layer address of another node on the same local link. A neighbor solicitation message is sent from the source node destined to the solicited-node multicast group address with the last 24 bits of the IPv6 unicast address of the destination node. The destination node will then respond with its data link layer address using a neighbor advertisement message. This operation is similar to ARP resolution in IPv4, but without the use of broadcast messages.
Note: The source node must identify the IPv6 unicast address of the destination node prior to sending a neighbor solicitation message using a naming service mechanism (eg: DNSv6).

The IPv6 neighbor solicitation and IPv6 neighbor advertisement messages have a value of 135 and 136 respectively in the Type field of the ICMPv6 header.

When a node changes its data link layer address, it can send an unsolicited neighbor advertisement message to advertise the new address.

IPv6 router discovery allows IPv6 nodes to discovery the routers on the local link. It is similar to ICMP Router Discovery Protocol (IRDP) in IPv4.

The router discovery process utilizes router solicitation and router advertisement messages. Router solicitation messages allow a node without an assigned unicast address to autoconfigure itself without waiting for the next scheduled router advertisement message from an IPv6 router. Router solicitation messages are only sent upon boot time and 3 times afterward to avoid flooding of router solicitation messages in the absence of a router on the network.

An IPv6 router solicitation message has a value of 133 in the Type field of the ICMPv6 header. Normally the IPv6 unspecified address (0::0) is used as the source address, and the all-routers link-local multicast address (FF02::2) is used as the destination address.

Router advertisement messages are periodically sent out from all interfaces of an IPv6 router (destined to the unsolicited all-nodes link-local multicast address – FF02::1). They are also being sent out as responses to router solicitation messages from IPv6 nodes on the local link (destined to the IPv6 unicast address of the node that sent out the router solicitation message).

An IPv6 router advertisement message has a value of 134 in the Type field of the ICMPv6 header and contains the following information:
i) Whether nodes can use address autoconfiguration.
ii) Flags to indicate the type of autoconfiguration – stateless or stateful.
iii) One or more IPv6 prefixes that local link nodes could use for autoconfiguration.
iv) Lifetime information for each prefix.
v) Whether the router should be used as a default router. If yes, includes the amount of time.
vi) Additional information, eg: link prefix(es), hop limit, and link MTU a node should use.

Renumbering of IPv4 networks and nodes will at least take months if not years. However, renumbering of IPv6 nodes is possible with the help of router advertisements. Router advertisement messages can contain both the old and new prefixes, with a lifetime value for the old prefix to tell the nodes to begin to use the new prefix, while still maintaining their current connections with the old prefix. During this period, nodes have 2 unicast addresses. When the old prefix is retired, the router advertisements will only advertise the new prefix.

Renumbering networks also requires the renumbering of all routers and changes of DNS entries. A router renumbering protocol has been proposed and is currently under review.

No comments:

Post a Comment