IPv6 Neighbor Discovery
IPv6 Neighbor Discovery (ND) is a protocol used to determine the link-layer addresses of neighboring nodes, such as customer routers to forward IPv6 traffic.
IPv6 ND enables cloud native BNG to act as a router and uses IPv6 ND to learn the link-layer addresses of customer routers connected to it. IPv6 ND maintains the information about other devices in the IPV6 network and tracks the presence of neighboring devices, and determines its reachability to those devices.
To communicate with neighboring nodes, IPv6 ND uses the following set of messages:
-
IPv6 Router Solicitation Message (RS) is an IPv6 message sent by a host to request Router Advertisements (RA) from routers on the network. Router solicitation messages are sent on the local link when a host wants to determine the link-layer address of another node on the same local link. The ICMP packet header has a value of 135 in the Type field to identify the RS message.
-
Router Advertisement (RA) is an IPv6 message sent periodically by routers or in response to an RS message sent by a host. The RA message advertises the presence of routers on the network to provide hosts with configuration information. RA contains prefixes used to determine whether another host shares the same link. The ICMP packet header has a value of 134 in the Type field to identify the RA message. An ambiguous VLAN does not have an association with any particular VLAN; therefore, a unicast router advertisement message is sent for ambiguous VLAN interfaces.
To enable IPv6 unicast router advertisement, use the cnBNG NAL ipv6 nd ra-unicast command in the
cnbng-nal
configuration mode. -
Neighbor Solicitation (NS) is an IPv6 message sent by a node to determine the link-layer address of a neighbor, or to verify that a neighbor is still reachable through a cached link-layer address. NS messages also checks the Duplicate Address Detection (DAD) if the IPv6 address configured is already in-use by another node on the same link.
-
Neighbor Advertisement (NA) is an IPv6 message sent in response to a Neighbor Solicitation (NS) message to notify its link-layer address neighbors. When a node receives an NS message, it responds with an NA message that includes its link-layer address. The NA message is sent to the source address of the NS message and can be either unicast or multicast.
-
Redirect is an IPv6 message that routers use to notify hosts of an optimal first-hop router for a given destination. When a host sends a packet to a destination router, and the router receiving the packet determines that the next hop is not the best one, the router sends a Redirect message to the host. The Redirect message includes the IP address of the destination router and the IP address of the new next-hop router that the host must use instead. The ICMP packet header has a value of 137 in the Type field to identify the redirect message.
How IPv6 Neighbor Discovery Works?
In an IPv6 network, during the communication with a neighboring device:
-
The host (P1) sends an Neighbor Solicitation (NS) message to the link-local multicast address requesting the MAC address of the destination router (P2) with the specified IPv6 address.
-
The neighbor responds with a Router Advertisement (RA) message that includes its link-layer address. This exchange allows the routers to establish a mapping between the IPv6 address of the neighbors and link-layer address for communication to occur.
IPv6 neighbor discovery uses Duplicate Address Detection (DAD) to ensure that no two devices on the same network have the same IPv6 address. When a device joins the network or configures a new IPv6 address, the host sends a neighbor solicitation message with its IPv6 address as the target. If the host receives a neighbor advertisement message in response, the host knows that another device on the network, which is already using that IPv6 address, and the host must choose a different IPv6 address.
You have the flexibility to configure the IPv6 ND parameters such as the frequency of RA messages or the interval between NS and NA messages. according to your network design under the access interface.
Configure IPv6 Neighbor Discovery
Based on your requirements, configure the following IPv6 ND parameters:
Router#configure
Router(config)#interface Bundle-Ether1.1
/*Set the managed address configuration flag in IPv6 router advertisements*\
Router(config-subif)# cnbng-nal ipv6 nd managed-config-flag
/*Configure the interval between IPv6 neighbor solicitation retransmissions on an interface *\
Router(config-subif)# cnbng-nal ipv6 nd ns-interval 1999
/*Enable the IPv6 neighbor un-reachability detection (NUD) *\
Router(config-subif)#cnbng-nal ipv6 nd nud-enable
/*Set the other stateful configuration flag in IPv6 router advertisements *\
Router(config-subif)# cnbng-nal ipv6 nd other-config-flag
/*Set the IPv6 initial router advertisement count and interval *\
Router(config-subif)# cnbng-nal ipv6 nd ra-initial 9 4
/*Configure the interval between IPv6 router advertisement transmissions on an interface *\
Router(config-subif)# cnbng-nal ipv6 nd ra-interval 888000 8000
/* Configure the router lifetime value in IPv6 router advertisements on an interface*\
Router(config-subif)# cnbng-nal ipv6 nd ra-lifetime 777
/* Enable the IPv6 unicast router advertisement (RA)*\
Router(config-subif)# cnbng-nal ipv6 nd ra-unicast
/*Configure the amount of time that a remote IPv6 node is considered reachable after some reachability confirmation event has occurred*\
Router(config-subif)# cnbng-nal ipv6 nd reachable-time 9000
/*Automatically send IPv6 router advertisements to a subscriber interface after configuring IPv6 *\
Router(config-subif)# cnbng-nal ipv6 nd start-ra-on-ipv6-enable
/* Suppress IPv6 router advertisement transmissions on a LAN interface *\
Router(config-subif)# cnbng-nal ipv6 nd suppress-ra
/* Suppress cache learning for IPv6 neighbor discovery*\
Router(config-subif)# cnbng-nal ipv6 nd suppress-cache-learning
/* Set the managed address configuration flag in IPv6 router advertisements*\
Router(config-subif)# cnbng-nal ipv6 nd managed-config-flag
/* configure the IPv6 ND router advertisement hop-limit on the VLAN*\
Router(config-subif)# cnbng-nal ipv6 nd ipv6 nd hop-limit unspecified
/* Set the IPv6 neighbor discovery router preference *\
Router(config-subif)# cnbng-nal ipv6 nd router-preference high
/* Suppress the MTU option in IPv6 Neighbor Discovery (ND) Router Advertisement (RA) header *\
Router(config-subif)# cnbng-nal ipv6 nd mtu suppress
Verification
Verify the configured parameters appear in the output.
Router#%show ipv6 nd idb interface Gi0/2/0/2.1.ip536870944 detail location 0/2/CPU0;
ifname: Gi0/2/0/2.1.ip536870944, ifh: 0x1000100, iftype: 65, VI-type: 0, Pseudo IDB: FALSE
vrf-id: 0x60000000, table-id: 0xe0800000
Mac Addr: xxxx.xxx.xxx, size: 6, VLan tag set: FALSE
Media Name: ipsub_base, Media Encap: 0xe (IPSUB)
Mac Length: 1, Media Header Len: 4, Media Proto: 0xdd86
Current Encap: 0xe (IPSUB), Mcast Encap : 0xe (IPSUB)
IPV6 Interface: Enabled, IPV6: Enabled, MPLS: Disabled
Link local address: xxxx::xx:xxxx:xxxx:xxxx, Global Addr count: 0
Default Prefix Address: ::, Prefix Addr Count: 0,
RA Specific Route Count: 0,
RA DNS Servers Addr Count: 0,
RA DNS Search List Count: 0,
DAD Attempts: 0, DAD pending 0,
RA flag: 0x0, Unicast RA send: TRUE, Initial RA count: 9, RA pkts sent count: 0
Initial RA interval: 999000 msec,
Time of Last RA sent: N/A, Next Scheduled Periodic RA Time due in: N/A
RA Managed flag 0x1, RA Other flag 0x1, RA Hop limit 0x1
RA Suppress MTU: 0x1, RA Lifetime: 777 sec
RA interval min: 888000, max 8000 msec
RA Router Preference: Low
Reachable time: 9000 msec, Reachable delay: 8000 msec
RA retransmits: 1999 msec, NS retransmits interval: 1999 msec
AIB stats time interval: 1000 msec
ND Redirects: 0x0, NUD Conform: 0, MTU: 1500, IDB Flags: 0x1024
Cache entry limit: 1000000000, Last over limit count: 0
Complete protocol count: 0, Complete glean count: 0
Incomplete protocol count: 0, Incomplete glean count: 0
Dropped protocol req count: 0, Dropped glean req count: 0
IPC notification handle: 0, Config Flags: 0xcfc0fd, Parent if: GigabitEthernet0_2_0_2.1 (0x10000c0)
Refresh from RP: FALSE,
IM call for IDB: Success, Mac addr changed: TRUE
IM error recover retries count: 0
Check point Obj ID: 0x2e80, Framed IPv6 prefix pool name:
Subscriber status flag: 0x0, Supressed cache learning: TRUE
BNG nud: Enabled, Master Node: (0xddddddddddddddd)
Global Mac Accounting: Disabled, IDB Mac Accounting : Disabled, Marked: No
Notfn sent to iedge - Up: No, Down: No
Update: No
Last notif reason:None
SRG Stby Role : FALSE , SRG peer route-disable : FALSE, SRG EOMS sync pending : FALSE
Subscriber Label : 0x0
Prefix Address from Iedged: ::,
Input Bytes: 0, Input Bytes Pkts: 0
Output Bytes: 0, Output Bytes Pkts: 0
......... IDB Statistics .........
Service Attribute Operation Success Failure Avg Min Max
IM MAC Reg 1 0 0 0 0
IM MAC Notfn 1 0 0 0 0
IM MTU Notfn 1 0 0 0 0
IM MPLS Notfn 1 0 0 0 0
NETIO NA Sent 1 0 0 0 0
IPV6-MA IDB Add 1 0 0 0 0
CHKPT IDB Add 5 0 0 0 0
-------------------------------EVT-HISTORY-------------------------------------
Nov 17 12:20:32.576 idb-calloc-happened
Nov 17 12:20:32.576 idb-bng-srg-master-or-none
Nov 17 12:20:32.576 idb-bng-srg-slave-route-enable
Nov 17 12:20:32.576 idb-bng-srg-eoms-sync-not-pend
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.576 idb-bng-subdb-strt-ra
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.576 idb-apply-func
Nov 17 12:20:32.704 idb-im-create-notification
Nov 17 12:20:32.704 idb-ma-state-enabled
Nov 17 12:20:32.704 idb-chkpt-save [many]