Reversed L2 addr in neighbor advertisement

Hi

I have a network of 5 nodes whose hardware addresses are 00:12:6d:03:00:00:10:xx where the XX varies from 01 to 05. There is also a border router with a completely different address.

As you can see in the attached picture, sometimes there are unicast neighbor advertisements sent to nonexistent addresses that are the reverse of the one doing the solicitation. In the picture, this is fe80::510:0:36d:1202 instead of fe80::212:6d03:0:1005

I checked the RFC’s and I can’t see why this would be done deliberately, especially as those frames never get acked, so the other side is certainly not expecting this.

Is there a HTONLL bug somewhere in the ND code?

It doesn’t happen all the time, so it can’t be a bug on the main code path, I spent a couple hours looking for it but no luck (I don’t know the codebase well).

Any help would be appreciated

Thanks Michael

weird.png

Hi Michael!

As you can see in the attached picture, sometimes there are unicast neighbor advertisements sent to nonexistent addresses that are the reverse of the one doing the solicitation. In the picture, this is fe80::510:0:36d:1202 instead of fe80::212:6d03:0:1005

I checked the RFC's and I can't see why this would be done deliberately, especially as those frames never get acked, so the other side is certainly not expecting this.

Is there a HTONLL bug somewhere in the ND code?

It doesn't happen all the time, so it can't be a bug on the main code path, I spent a couple hours looking for it but no luck (I don't know the codebase well).

Can you please add some debugging lines in sys/net/gnrc/network_layer/ndp/gnrc_ndp.c at line 178, 185 and 190 and set ENABLE_DEBUG to 1 in sys/net/gnrc/network_layer/ndp/internal/gnrc_ndp_internal.c to figure out which path is taken when this happens?

Cheers, Oleg

Hi again!

Thanks!

You are a lifesaver, that has significantly improved the reliability of my mesh, and the demo is tomorrow! I owe you one.

Regards Michael