IPv6 Neighbor Discovery Protocol on Cisco Router


(Rene Molenaar) #1

This topic is to discuss the following lesson:


(Ghaith B) #2

hi,
how does r1 knows the exact address of r2, since each router adds a different 6 hex characters?
I mean can you explain to me how do routers calculate that?

quote “It can calculate the solicited node multicast address of the remote host since it knows about the multicast group address and it knows the IPv6 address that it wants to reach.”

thanks


(Rene Molenaar) #3

Hi Ghaith,

We need “something” that wants to send some data. This could be a ping like I did or an application that wants to reach some server. In my example, I sent a ping to FE80::C002:3FF:FEE4:0.

The solicited node multicast group address starts with FF02::1:FF /104. We take this address and the last 6 hexadecimal characters of the address I’m trying to reach, our complete address will be ff02::1:ffe4:0 (you can see this in the wireshark capture).

R2 is the only device that will be listening to this multicast group address. It will receive the neighbor solicitation from R1 and will respond to it.

Rene


(Ghaith B) #4

oh ya ya, my bad :slight_smile:
Thaaaaaank you very much


(Mostafa R) #5

hi rene
I can’t understand howwww R1 find solicited multicast address of R2 ?
R1 and R2 have own solicited multicast address how R1 find R2 address?>>>> Before any data send from R2 to R1???


(Rene Molenaar) #6

Hi Mostafa,

Did you see this lesson?

Rene


(Mostafa R) #7

Hi Rene
((In this packet the source address will be the source address of the host that is sending the neighbor solicitation, the destination address will be the solicited node multicast address of the remote host))
i read this article ((ipv6-solicited-node-multicast-address)) and understand two Router have own solicited multicast address and join to multicast group but not send this ip address to each other
i Dizzy how R1 khow R2 solicited multicast address!!!


(Rene Molenaar) #8

Hi Mostafa,

This could be anything…you sending a ping from one host to another or an application that wants to reach a server which creates an IP packet. Since you know the destination unicast address, you can calculate the solicited node multicast address.

Rene


(Tim W) #9

"Here’s the capture of R2 that sends the neighbor advertisement:

You can see the source and destination MAC addresses of R2. The IPv6 addresses are the link-local addresses of R1 and R2. You can also see the ICMPv6 type value of 136."

\
The text above suggests that a Wireshark capture should be here in between the lines of text, but the capture is absent. Would you insert the capture back into the text?


(Rene Molenaar) #10

Hi Tim,

It seems the picture was broken. I also uploaded the wireshark capture to cloudshark, you can take a look here:

IPv6 Neighbor Discovery Protocol capture files

Rene


(Diana M) #11

Hi Rene,

First of all, thanks for all this amazing work you are doing.

I have a question, so, If I have a network with IPv6, it is mandatory to configure MLD? or how does it interact with the ND Protocol?

Thanks!


(Rene Molenaar) #12

Hi Diana,

Glad to hear you like it!

There’s not really a short answer to your question. Technically, ND doesn’t require MLD to work.

IPv6 ND uses multicast and the solicited node multicast addresses.

Using multicast instead of broadcast sounds effective but in reality, your ND traffic is probably still broadcasted since your L2 switches don’t know where to forward the multicast traffic to.

To improve this, you could enable MLD snooping on the switches. Your hosts will have to report what they want to receive through MLD and then the switch will be able to deliver multicast traffic only on the required interfaces.

This sounds great but in reality, it doesn’t work. Each host will have a unique solicited multicast address so if you have 1000 hosts then your switch has to keep track of 1000 multicast groups. Depending on the switch, it might be unable to do this.

It’s best to keep MLD snooping disabled, your NICs will drop multicast traffic that they are not interested in.

Rene


(Jose S) #13

Hi Rene,

Thanks for your great support in our studies.

When you know the destination unicast address, you can calculate the solicited node multicast address, it´s clear for me.

But let s guess a different scenario:

We have a Router sending a ping to multicast group FF02::1, meaning to all the devices in the network.

Could you please briefly describe, if possible, how the Neighbor Discovery protocol works in this case ?NS and NA.

Why when FF02::1 is marked as destination the process shows it as echo request and not as NS.

Thanks!


(Rene Molenaar) #14

Hi Jose,

When the router (or host) receives a packet with destination FF02::1 then it will respond to the source address. This will initiate the Neighbor Solicitation, the router that sent the original packet to FF02::1 will reply with a Neighbor Advertisement.

Here’s a wireshark capture of this process:

https://www.cloudshark.org/captures/42ff6640a123

Rene


(Itai m) #15

Rene In Neighbor Solicitation: the destination address will be the solicited node multicast address of the remote host. How does the sending node know the destination multicast address in 1st place? Shouldn’t this unknown for either node at the beginning?


(Itai m) #16

Rene, what pieces of information does a local router need to know in order to learn the MAC address of a remote router? This could help understand :slight_smile: Is IPv6 one of the biggest topics on the new CCNA? Not easy :slight_smile:


(Andrew P) #17

Itai,
The solicited node multicast address is known because the IPv6 RFC standards have established a “rule” in how to form the solicited node multicast address based on the IPv6 addresses that is needing to be queried. The rule states that solicited node multicast address is: FF02::1:FFXX:XXXX where X is the last 24 bits of the IPv6 target address. This means you take the last “half” of the next to last hextet, and the entire last hextet and append it to FF01::1:FF. See example below.

The last thing you would need to know is that there is also an IPv6 RFC rule for creating the layer 2 address for any IPv6 multicast address. That rule states the address is 3333:FFXX:XXXX where X is the last 24 bits of the multicast address

Example: Let’s say Host A has just booted up, and wants to use the local IPv6 address of FE80::0200:0BFF:FE0A:2D51. Host A needs to determine whether another host is using this address before it is allowed to start using it. In this case, a Neighbor Solicitation called DAD (duplicate address detection) is used. Here are the layer 3 and layer 2 addresses this DAD would use:

Layer 3
Source Address: :: <--------- Host A isn’t allowed to use a layer 3 address yet
Destination Address: FF02::1:FF0A:2D51 <--------- This is the result of the IPv6 RFC rule for crafting a solicited node multicast address

Layer 2
Source Address: <Host A’s MAC address> <--------- Normal Ethernet operation here
Destination Address: 3333:FF0A:2D51 <--------- This is the result of the IPv6 RFC rule for crafting layer 2 addresses from an IPv6 multicast

--Andrew


(Jie C) #18

Cleared… Nice post


(Jie C) #19

But Rene, is it possible to do show arp like we do in IPV4. I know there is no “ARP” in ipv6, But i want to know the Bindings and optionally the directly connected ip addresses


(Jie C) #20

Found it ?! :slight_smile:

Router#show ipv6 neighbors 
IPv6 Address                              Age Link-layer Addr State Interface
FC80::A8BB:CCFF:FE00:200                   37 aabb.cc00.0200  STALE Et0/0