Skip to content

Inspect IPv6 neighbor state after a mote restart

Trace joining and routing evidence while placing radio, 6LoWPAN adaptation, IPv6 neighbor state, and application traffic at their correct boundaries.

Turn lab observations into a bounded deployment or interoperability claim., your practice guide

Turn lab observations into a bounded deployment or interoperability claim.
Predict the reading, then compare it with the measurement.

Contiki-NG Cooja

Third party Tool

Trace joining and routing evidence while placing radio, 6LoWPAN adaptation, IPv6 neighbor state, and application traffic at their correct boundaries.

Tier 2 · Free simulator · install required · No account

Version tested: Contiki-NG release/v4.9 c20b12cd, Cooja 4.8 (2022071901), Temurin 17.0.20.1, image sha256:b14d5afb0a2a852d9e72bbed607ead03f6ccc5f4d4dee44f0799110be2f4b609. Date: 2026-10-09.

Download the complete lab packet and follow README.md to run it in the free simulator.

Download the setup and run guide

Get the lab files

Download the complete packet for the simulation and its firmware, or download individual files for inspection. README.md gives the setup and run commands.

  • cooja-6lowpan-neighbor-state.csc
  • README.md
  • expected-output.txt
  • lab-files.tar.gz

Steps

Screens captured against Contiki-NG Cooja Contiki-NG release/v4.9 c20b12cd, Cooja 4.8 (2022071901), Temurin 17.0.20.1, image sha256:b14d5afb0a2a852d9e72bbed607ead03f6ccc5f4d4dee44f0799110be2f4b609 on 2026-10-09; the tool may have moved on — the text steps are the contract.

  1. 1 Step 1

    Do
    Open the three-mote CSC in Cooja Network and inspect root 1 in Mote output before mote 2 moves into range.
    You will see
    Run: seed 1; UDGM 50 m; motes 1, 2, and 3 visible. Serial: `5549000 ID:1 Node IPv6 neighbors: none` Radio messages: 2 cumulative frames at 15 s.
    Why it matters
    Meaning: Root 1 begins without a recorded IPv6 neighbor while mote 2 is beyond its radio range. Boundary: This is a simulated cold table snapshot, not field discovery timing.
    Real Cooja window at step 1, with Network, Radio messages, and IPv6 neighbor lines in Mote output.
    Step 1 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  2. 2 Step 2

    Do
    Click Start/Pause and inspect Network and Mote output after mote 2 moves into range and the first ping runs.
    You will see
    Script: `MOVE relay=2 x=35 y=0 at_us=20549000` Serial: `26496296 ID:1 [INFO: IPv6 Nbr ] Adding neighbor with ip addr fe80::202:2:2:2 link addr 0002.0002.0002.0002 state 1` Serial: `40631120 ID:1 Received ping reply from fe80::202:2:2:2, len 4, ttl 64, delay 82 ms`
    Why it matters
    Meaning: Root now has a link-local neighbor entry and tested reachability to mote 2. Boundary: The log does not isolate a Neighbor Solicitation or Advertisement exchange.
    Real Cooja window at step 2, with Network, Radio messages, and IPv6 neighbor lines in Mote output.
    Step 2 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  3. 3 Step 3

    Do
    Click Start/Pause and compare the second ping and ip-nbr output in Mote output.
    You will see
    Serial: `50616120 ID:1 Received ping reply from fe80::202:2:2:2, len 4, ttl 64, delay 67 ms` Serial: `55549000 ID:1 -- fe80::202:2:2:2 <-> 0002.0002.0002.0002, router 0, state Reachable` Radio messages: 67 cumulative frames at 60 s.
    Why it matters
    Meaning: The warm table retains mote 2 as Reachable; both pings returned. Boundary: A 15 ms difference between two pings does not prove cache warming caused the delay change.
    Real Cooja window at step 3, with Network, Radio messages, and IPv6 neighbor lines in Mote output.
    Step 3 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  4. 4 Step 4

    Do
    Click Start/Pause and inspect the fresh mote 2 boot and neighbor table in Mote output.
    You will see
    Script: `REBOOT target=2 replaced_instance=true at_us=65549000` Serial: `66455000 ID:2 [INFO: Main ] Starting Contiki-NG-release/v4.9` Serial: `66549000 ID:2 Node IPv6 neighbors: none`
    Why it matters
    Meaning: Replacing the mote instance reset its local table; a shell reboot message alone would not do this in Cooja. Boundary: Root 1 is a different mote and retains its own cache.
    Real Cooja window at step 4, with Network, Radio messages, and IPv6 neighbor lines in Mote output.
    Step 4 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  5. 5 Step 5

    Do
    Click Start/Pause and inspect both target and root neighbor state in Mote output, then the post-reboot ping.
    You will see
    Serial: `80549000 ID:2 -- fe80::203:3:3:3 <-> 0003.0003.0003.0003, router 0, state Reachable` Serial: `85549000 ID:1 -- fe80::202:2:2:2 <-> 0002.0002.0002.0002, router 0, state Reachable` Serial: `90582120 ID:1 Received ping reply from fe80::202:2:2:2, len 4, ttl 64, delay 33 ms`
    Why it matters
    Meaning: The fresh mote rebuilt neighbor state while root retained its entry and reachability returned. Boundary: This test does not show root cache expiry or how long the outage lasted.
    Real Cooja window at step 5, with Network, Radio messages, and IPv6 neighbor lines in Mote output.
    Step 5 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  6. 6 Step 6

    Do
    Click Start/Pause and inspect Radio messages beside Mote output; compare control-state logs with UDP request lines in the raw log.
    You will see
    Radio messages: 102 cumulative frames at 120 s, including RPL and application traffic. Headless: `NEIGHBOR_SUMMARY moved=true rebooted=true before_replies=2 after_replies=1` Headless: `TEST OK`
    Why it matters
    Meaning: Neighbor-table and ping observations establish the tested state transition; frame traffic alone is not application delivery. Boundary: This simulated radio run does not establish field neighbor lifetime or Thread interoperability.
    Real Cooja window at step 6, with Network, Radio messages, and IPv6 neighbor lines in Mote output.
    Step 6 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)

Chapter checks

These questions refer to the chapter’s examples. Use the return links to review their answers.

  1. Which role map fits a constrained IP radio mesh?

    Return to the chapter’s knowledge check
  2. Where does 6LoWPAN sit in the stack, and what is its role?

    Return to the chapter’s knowledge check

Caution

This is simulated radio, not field data; the run does not isolate NS/NA packets or prove field neighbor lifetimes.

Return to 6LoWPAN Architecture: Compression and Fragmentation · Browse Labs