Connecting RasPi with RIOT node via 6lowpan using ULAs

Hi all,

I'm having some trouble with a rather simple sensor network application: my goal is to query a sensor node (RIOT) using COAP/UDP over 6lowpan from a RasPi. The Pi is equipped the well known openlabs 802.15.4 transceiver module[1], it runs latest Raspbian Jessie with a self compiled wpan-enabled Linux-Kernel. The sensor node is an Atmel samr21-xpro for my initial tests I installed the gnrc_networking example from latest RIOT master. I setup a lowpan device on the Pi with same channel and pan-id as the RIOT node.

My initial findings: - ping and data transmission using link local address works fine - ping and data transmission using ULAs doesn't work in any direction - setup ULA as follows: - RasPi `sudo ip addr add fd59:7f5:2065:7622::2/64 dev lowpan0` - RIOT-node `ifconfig 7 add fd59:7f5:2065:7622:0000:0000:0000:0003`

I enabled some debugging under `sys/net/gnrc/network_layer` in `icmpv6`, `ipv6`, and `ndp` to dig a little deeper. Further I used wireshark+dumpcap on the RasPi to sniff lowpan traffic. My observations for pings RasPi <-> RIOT using ULAs:

1. RIOT -> RasPi:

- no packets get out, so no wireless transmission visible on sniffer - packet send fails with "ipv6: error determining next hop's link layer address" in gnrc_ipv6.c:_send [2]

2. RasPi -> RIOT:

- sniffer sees neighbor solicitation from RasPi for ULA of RIOT node (fd59:7f5:2065:7622::3) - RIOT debug messages show:   - NS is received by RIOT   - RIOT sets neighbor cache entry for RasPi ULA   - RIOT assembles neighbor advertisement (NA)   - send of NA fails as before in [2] - RasPi cannot resolve ULA, thus ping fail

Has anybody (recently) tried a similar setup using RasPi with lowpan module to connect to a RIOT node? In the RIOT wiki I found an old entry for a RasPi border gateway, this looks quite similar though I don't need the forwarding part (yet). Or asking differently: should ping via ULA work as I would expect or is there any reason that this should not work with 6lowpan. The same setup between e.g. Linux and OS X using ULAs works fine: I know 6lowpan is not IPv6 and vis-versa ...

Thanks in advance for any hint on solving this,

Cheers, Sebastian

[1]: [2]:


Hi again, Hi Kaspar,

tried EUI-64 approach, didn't help, here some RIOT debugging output,

---snip--- ipv6: GNRC_NETAPI_MSG_TYPE_RCV received ipv6: Received (src = fd59:7f5:2065:7622:27cf:f952:ab74:5912, dst = ff02::1:ffbb:e29e, next header = 58, length = 40) ipv6: handle ICMPv6 packet (nh = 58) icmpv6: neighbor solicitation received ndp: received neighbor solicitation (src: fd59:7f5:2065:7622:27cf:f952:ab74:5912, dst: ff02::1:ffbb:e29e, tgt: fd59:7f5:2065:7622:5855:4245:c8bb:e29e) ndp: received SL2A (link-layer address: 25:cf:f9:52:ab:74:59:12) ipv6_nc: Found entry for fd59:7f5:2065:7622:27cf:f952:ab74:5912 on interface 7 (0 = all interfaces) [0x20001428] ndp internal: send neighbor advertisement (iface: 7, tgt: fd59:7f5:2065:7622:5855:4245:c8bb:e29e, dst: fd59:7f5:2065:7622:27cf:f952:ab74:5912, supply_tl2a: 1) ndp: building target link-layer address option (l2addr: 5a:55:42:45:c8:bb:e2:9e) ndp: building neighbor advertisement message icmpv6: Building ICMPv6 message with type=136, code=0 ipv6: GNRC_NETAPI_MSG_TYPE_SND received ipv6_nc: Found entry for fd59:7f5:2065:7622:27cf:f952:ab74:5912 on interface 7 (0 = all interfaces) [0x20001428] 6low: KERNEL_PID_UNDEF ipv6: error determining next hop's link layer address ---snap---

I'm not quite fit with internals of gnrc ipv6|6low|ndp but somehow the stack cannot find a suitable router/interface to forward/send the message and gets this 'KERNEL_PID_UNDEF' out of the loop - which finally drops the packages and nothing is send. However as you can see above the NS from the RasPi is received, all IPs are correct and correspond with my setup (no byte flips or anything here). A response NA is build and put on the stack for sending, which fails.