How to Choose Network Interface to Send Packets Over

[Sorry if this message ends up in the wrong place or as a separate thread – I was stuck in digest mode and it was not clear to me how to reply to a single message.]

Oleg, thank you very much for the description of and reference to the packet routing protocol – I did not realize that RIOT followed the contents of the RFC document so precisely.

I now know that the process of deciding what network interface to route a packet to comes down to (at first) finding an on-link match between the destination IP address and the available interfaces (if one exists). This is done by examining the prefixes for a match.

In my case, I have two interfaces, ethernet and 802.15.4, with auto-assigned local IPV6 addresses:

[Iface 6, 802.15.4] = fe80::5846:346f:c2da:ad12/64

[Iface 7, ethernet] = fe80::204:25ff:fe19:1a3e/64

So I think my problem is as follows. I am transmitting packets to a destination IP that reads:

fe80::3a2c:4aff:fe6e:19f3

And therefore the fe80:: could match the 64-bit prefix of either of those interfaces. I think that the request is then being routed to the first match, which is 802.15.4, which is incorrect, because that IP address is actually an ethernet neighbor, not a radio one. When I disable Iface 6, the packets DO reach their destination on Iface 7.

Maybe I’m wrong; but it would seem that my problem is, I need to change the prefix of my 802.15.4 interfaces to something other than fe80:: so they do not conflict with the ethernet interface’s prefix, which is beyond my control.

Am I on the right track here? I do not as of yet fully comprehend the addition of the global affe::2 address in the gnrc_border_router example; and additionally, I am uncertain if my reasoning here is still flawed due to a deeper failure to internalize the core concept behind RIOT’s implementation of the packet routing algorithm.

Many thanks,

Mark