This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Thread border router 1.0.0

I am following the Thread Border Router example and have successfully loaded RaspPi_OT_Border_Router_Demo_v1.0.0-1.alpha.img onto the RaspberryPi 3B+.

I have loaded the NCP example onto a Nordic Semi nRF52840 development board, and connected it the the Raspberry Pi.  I have loaded the CLI example onto another development board.

I can successfully ping between the two Thread nodes, but not outside to my PC or to google as described in the example.

I am using nRF_SDK_for_Thread_and_Zigbee_v1.0.0

Rasp Pi:  border_router.conf

# Thread Network Configuration
thread_network_key="00112233445566778899AABBCCDDEEFF"
thread_channel="11"
thread_panid="0xABCD"
thread_xpanid="DEAD00BEEF00CAFE"
thread_network_name="NordicOpenThread"
thread_pskc="E00F739803E92CB42DAA7CCE1D2A394D"
thread_on_mesh_prefix="fd11:22::"

Rasp Pi: ifconfig:

pi@raspberrypi:/etc $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.72  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 2600:XXXX:XXXX:96c0:ba27:ebff:fe94:7933  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::ba27:ebff:fe94:7933  prefixlen 64  scopeid 0x20<link>
        inet6 2600:xxxx:xxxx:96c0::5c5  prefixlen 128  scopeid 0x0<global>
        ether b8:27:eb:94:79:33  txqueuelen 1000  (Ethernet)
        RX packets 6104  bytes 545078 (532.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5457  bytes 1174736 (1.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


nat64: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 192.168.255.1  netmask 255.255.255.255  destination 192.168.255.1
        inet6 fdaa:bb:1::1  prefixlen 128  scopeid 0x0<global>
        inet6 fe80::73b8:21d2:47dc:cf7  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 304 (304.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


wpan0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1280
        inet6 fd11:22::540c:ed30:4494:6a9c  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::540c:ed30:4494:6a9c  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::3bdd:44c5:d59c:102e  prefixlen 64  scopeid 0x20<link>
        inet6 fdde:ad00:beef:0:a610:e28d:369:454e  prefixlen 64  scopeid 0x0<global>
        inet6 2600:XXXX:XXXX:96c9:1000::1  prefixlen 68  scopeid 0x0<global>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 1  bytes 56 (56.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 1371 (1.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

CLI node:

>ipaddr
2600:XXXX:XXXX:96c9:ee61:43f6:eb74:b3e8
fd11:22:0:0:29e0:308e:1b41:a566
fdde:ad00:beef:0:0:ff:fe00:fc00
fdde:ad00:beef:0:0:ff:fe00:6800
fe80:0:0:0:8803:5bb9:52c6:1591
fdde:add0:beef:0:35da:1ab0:72b9:2919

The suggested command on the CLI node to test

>ping 64:ff9b::0808:0808

returns nothing

The following (and many other combinations) also return nothing:

>ping 2600::XXXX:XXXX:96c9::0808:0808

>ping fdde:ad00:beef::0808:0808

But this one succeeds

>ping fd11:22::540c:ed30:4494:6a9c

returns "8 bytes from fd11:22:0:0:540c:ed30:4494:6a9c: icmp_seq=5 hlim=64 time=74ms"

The ipv6 prefixes do not seem to match on the Raspberry Pi and the CLI node:

RaspPi eth0:      inet6 2600::XXXX:XXXX:96c0:ba27:ebff:fe94:7933  prefixlen 64  scopeid 0x0<global>

RaspPi wpan0:  inet6 2600::XXXX:XXXX:96c9:1000::1 prefixlen 68 scopeid 0x0<global>
 

Is this correct?  If not, how to fix it?

Mary

Parents
  • Hi Mary,

    At the first glance it looks fine.

    Let's start from checking connectivity at the RPi.

    1. Can you 'ping 8.8.8.8' from the Raspberry?

    I see that you have global IPv6 connectivity. 

    2. Can you 'ping6 2001:4860:4860::8888' from the Raspberry?

    3. In case of CLI we can also try 'ping 2001:4860:4860::8888'?

     

    Please let me know what is output of these three commands.

    What provides network connection to the Raspberry? Is it the same as for your PC?

    Kind Regards,

    Piotr Szkotak

Reply
  • Hi Mary,

    At the first glance it looks fine.

    Let's start from checking connectivity at the RPi.

    1. Can you 'ping 8.8.8.8' from the Raspberry?

    I see that you have global IPv6 connectivity. 

    2. Can you 'ping6 2001:4860:4860::8888' from the Raspberry?

    3. In case of CLI we can also try 'ping 2001:4860:4860::8888'?

     

    Please let me know what is output of these three commands.

    What provides network connection to the Raspberry? Is it the same as for your PC?

    Kind Regards,

    Piotr Szkotak

Children
  • 1.  Yes, I can ping 8.8.8.8 from Raspberry Pi

    pi@raspberrypi:~ $ ping 8.8.8.8
    PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
    64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=31.3 ms
    64 bytes from 8.8.8.8: icmp_seq=2 ttl=58 time=32.3 ms
    64 bytes from 8.8.8.8: icmp_seq=3 ttl=58 time=36.1 ms
    64 bytes from 8.8.8.8: icmp_seq=4 ttl=58 time=30.5 ms

    2. Yes, I can ping6 from Raspberry Pi

    pi@raspberrypi:~ $ ping6 2001:4860:4860::8888
    PING 2001:4860:4860::8888(2001:4860:4860::8888) 56 data bytes
    64 bytes from 2001:4860:4860::8888: icmp_seq=1 ttl=58 time=31.5 ms
    64 bytes from 2001:4860:4860::8888: icmp_seq=2 ttl=58 time=32.3 ms
    64 bytes from 2001:4860:4860::8888: icmp_seq=3 ttl=58 time=30.5 ms
    64 bytes from 2001:4860:4860::8888: icmp_seq=4 ttl=58 time=31.6 ms

    3. ping from CLI returned nothing

    > ping 2001:4860:4860::8888
    >

    Raspberry Pi is connected to our office network via Ethernet cable, through a switch to our router.  

    Raspberry Pi network configuration as reported by the router:

    My PC is connected in similar fashion, though the same switch to the same router.

    Mary

  • OK, just to confirm.

    You are able to ping from the CLI address returned by 'sudo wpanctl getprop IPv6:MeshLocalAddress' on the Raspberry, right?

    Are you able to 'ping 2600:xxxx:xxxx:xxxx::5c5' from the CLI?

    While performing these tests it would be good to sniff a bit on wpan0 and eth0 on the Raspberry.

    'sudo tcpdump -i wpan0 ip6' will show you traffic if packets are correctly passed from the NCP to the Raspberry.

    It may be worth to reflash all boards with the --chiperase option to make sure that no persistent data stayed on flash as a last resort.

    Piotr

  • On the CLI:

    > ping fdde:ad00:beef:0:a610:e28d:369:454e
    > 8 bytes from fdde:ad00:beef:0:a610:e28d:369:454e: icmp_seq=1 hlim=64 time=33ms

    > ping 2600:xxxx:xxxx:96c0::5c5
    >

    pi@raspberrypi:~ $ sudo tcpdump -i wpan0 ip6
    sudo: tcpdump: command not found

    I reflashed both the CLI and NCP projects. Same results.

    How do I get tcpdump?

  • sudo apt-get update && sudo apt-get install tcpdump

    We see that packet does not even reach the eth0 interface, that is interesting.

  • I got tcpdump.

    CLI:

    > ping fdde:ad00:beef:0:a610:e28d:369:454e
    > 8 bytes from fdde:ad00:beef:0:a610:e28d:369:454e: icmp_seq=1 hlim=64 time=33ms

    RaspPi

    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on wpan0, link-type RAW (Raw IP), capture size 262144 bytes
    15:31:26.377995 IP6 fdde:ad00:beef:0:3c36:a6bf:1720:da2f > fdde:ad00:beef:0:bf2f:9691:b564:f8cd: ICMP6, echo request, seq 3, length 16
    15:31:26.378315 IP6 fdde:ad00:beef:0:bf2f:9691:b564:f8cd > fdde:ad00:beef:0:3c36:a6bf:1720:da2f: ICMP6, echo reply, seq 3, length 16

    CLI:

    > ping 2600:xxxx:xxxx:96c0::5c5
    >

    RaspPi

    <nothing at all>

Related