[riot-devel] RIOT+ULAs: no router entry

smlng s at mlng.net
Fri Apr 22 13:13:29 CEST 2016


Hi Alex, and all,

my radvd.conf is the following:

---snip---

interface lowpan0
{
    AdvSendAdvert on;
    UnicastOnly on;
    AdvCurHopLimit 255;
    AdvSourceLLAddress on;

    MinRtrAdvInterval 3;
    MaxRtrAdvInterval 10;

    AdvDefaultPreference low;

    prefix fd4b:c597:5df5:0::/64
    {
        AdvOnLink off;
        AdvAutonomous on;
        AdvRouterAddr on;
    };

    abro fe80::1ac0:ffee:1ac0:ffee
    {
        AdvVersionLow 10;
        AdvVersionHigh 2;
        AdvValidLifeTime 2;
    };
};

---snap---

btw. I use your/linux-wpan fork of radvd. Again: RIOT does receive the RA from radvd AND configures an IP with the provided prefix. Thus, the processing of RS+RA up this point seems to be correct, what's missing is the routers entry in RIOT. Further, RIOT does receive the COAP requests but it cannot send any reply, as it does not know the LLaddr for the destination (ULA) IP. As far as I remember my last digging into RIOTs NDP processing, RIOT does the following:

1. if DST_IP is link-local: extract LLaddr 
2. else if neighbor cache entry exist, use it
3. if no ncache: query (default) router for LLaddr
4. if no router: abort

I think I'm running into case 4, where no entry exists what so ever and thus no COAP reply is send.

@Alex as you joined the discussion: I also have a question regarding the Linux side. I currently use Raspbian with shipped Linux-Kernel 4.1.19. I observed that Linux still does NS for link-local address via the nodes scoped multicast address, instead of using 6lo 'shortcut' by extracting LL/MAC-address from the link-local IP. Is this fixed in some recent version?

Regards,
  Sebastian

> Am 22.04.2016 um 12:28 schrieb Alexander Aring <alex.aring at gmail.com>:
> 
> Hi,
> 
> On Fri, Apr 22, 2016 at 12:19:36PM +0200, smlng wrote:
>> Hi everyone,
>> 
>> I'm testing COAP between RIOT on Phytec pba-d-01-kw2x and Linux on RasPi+Openlabs using ULA IP addresses. 
>> 
>> On the Pi I run a 'radvd' to advertise a ULA prefix to RIOT, which works:
>> - RIOT sends RS after boot
>> - the Pi answers with RA containing ULA prefix
>> - RIOT configures ULA IP on 6lo iface
>> 
>> COAP (or communication in general) via ULA IP works, as long as RIOT has the Pi in its routers cache. However, sometimes RIOT _forgets_ or does not set a routers entry for the Pi at all. In that case communication is not possible via ULAs, using link-local IPs works all the time. The issue seems be with the RS+RA processing. I found that sometimes RIOT does not create a routers entry on reception of a RA - though it does configure the ULA prefix correctly. 
>> 
>> I just had the case that RIOT configures the ULA _and_ sets a routers entry, hence communication was working. At least for about 15min, but then RIOT send another RS, Pi answers with RA, RIOT still has ULA IP configured -- BUT the routers entry for the Pi is gone and communication fails. Again: using link-local IPs still works.
>> 
>> Btw. even when communication via ULAs is working, RIOT never creates a ncache entry for ULA IP of the Pi but it did create an ncache entry for link-local IP of the Pi. I thought the latter is not required/allowed in 6lo but for ULAs it should create an entry?
>> 
>> Has somebody else observed this behavior or any hints how to resolve this?
>> 
> 
> can you share your used radvd.conf?
> 
> - ALex
> _______________________________________________
> devel mailing list
> devel at riot-os.org
> https://lists.riot-os.org/mailman/listinfo/devel



More information about the devel mailing list