Skip to content

Test a three-floor RPL network design

Test router and leaf roles, parent Rank and root-held routes before accepting a downward path to a floor-two actuator.

Packet Pete — I check the next hop and the reply before trusting a route., your practice guide

Packet Pete — I check the next hop and the reply before trusting a route.
Predict the reading, then compare it with the measurement.

Contiki-NG Cooja

Third party Tool

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-09-10.

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-rpl-network-design.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-09-10; the tool may have moved on — the text steps are the contract.

  1. 1 Step 1

    Do
    Run the CSC to 180 s. Identify root 1, paired floor routers 2–7 and leaf-only motes 8–10 in Network.
    You will see
    Run: headless cooja-rpl-network-design.csc; use the step input or filter. Serial: 27737296 ID:9 [INFO: RPL ] nbr: own state, addr fd00::209:9:9:9, DAG state: joined, MOP 1 OCP 1 rank 514 max-rank 1538, dioint 0, nbr count 1 (Parent switch) Expected: leaf 9 joins the RPL DAG; the screenshot separates router and leaf roles.
    Why it matters
    Meaning: Mains and battery roles must be an explicit design decision. Leaf-only firmware prevents the battery-role motes from silently becoming relays. Boundary: The role and route observations belong to this fixed Cooja topology and seed.
    Step 1: Network shows the ten real motes and the resulting parent arrows. The orange ring marks the evidence; the numbered badge is outside it.
    Step 1 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  2. 2 Step 2

    Do
    Filter Mote output for ^-- DAG root$|^-- MOP:. Compare root, actuator and floor-router state.
    You will see
    Run: headless cooja-rpl-network-design.csc; use the step input or filter. Serial: 130065000 ID:1 -- MOP: Non-storing Expected: root 1 reports non-storing mode.
    Why it matters
    Meaning: The mode determines where downward state lives. It must fit upward telemetry and occasional downward commands, not just node count. Boundary: The role and route observations belong to this fixed Cooja topology and seed.
    Step 2: The root role and Non-storing state rows are visible. The orange ring marks the evidence; the numbered badge is outside it.
    Step 2 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  3. 3 Step 3

    Do
    In Cooja's Mote output window, filter for ^-- fd00::(208|209|20a). Read the root’s route links for the three leaves.
    You will see
    Run: headless cooja-rpl-network-design.csc; use the step input or filter. Serial: 131065000 ID:1 -- fd00::209:9:9:9 to fd00::203:3:3:3 (lifetime: 1680 seconds) Expected: root routes leaf 9 through router 3.
    Why it matters
    Meaning: DAO-derived root-held links are needed for the Non-storing downward path. A parent diagram alone is insufficient. Boundary: The role and route observations belong to this fixed Cooja topology and seed.
    Step 3: Root-held source-route links for the three leaf addresses are visible. The orange ring marks the evidence; the numbered badge is outside it.
    Step 3 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  4. 4 Step 4

    Do
    In Cooja's Mote output window, filter for ^fe80::20[23].*=>. Check floor-two router 4’s upstream candidate and compare the README tie worksheet.
    You will see
    Run: headless cooja-rpl-network-design.csc; use the step input or filter. Serial: 134065000 ID:4 fe80::202:2:2:2 256, 135 => 391 -- 16 bafp (last tx 0 min ago) Expected: router 4 computes candidate rank 391 through router 2.
    Why it matters
    Meaning: Actual Rank follows the objective function and link evidence, not floor height. A worksheet tie needs explicit stability or hysteresis evidence before choosing. Boundary: The role and route observations belong to this fixed Cooja topology and seed.
    Step 4: The measured 256 + 135 = width= 391 candidate row is visible. The orange ring marks the evidence; the numbered badge is outside it." loading="lazy">
    Step 4 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  5. 5 Step 5

    Do
    In Cooja's Mote output window, filter for Received ping reply from fd00::209. Check the root-initiated probe to the floor-two actuator-role mote 9.
    You will see
    Run: headless cooja-rpl-network-design.csc; use the step input or filter. Serial: 140140696 ID:1 Received ping reply from fd00::209:9:9:9, len 4, ttl 63, delay 75 ms Expected: root receives leaf 9 reply with TTL 63 and 75 ms delay.
    Why it matters
    Meaning: This probes a real downward packet and its return, alongside ordinary upward telemetry. It proves an ICMP path, not actuator mechanics or command authorization. Boundary: The role and route observations belong to this fixed Cooja topology and seed.
    Step 5: The root receives the actual two-hop actuator-address ping reply. The orange ring marks the evidence; the numbered badge is outside it.
    Step 5 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  6. 6 Step 6

    Do
    In Cooja's Mote output window, filter for ^-- Preferred parent|^-- Rank:. Record the final sampled parents and complete the README role, traffic, mode and validation table.
    You will see
    Run: headless cooja-rpl-network-design.csc; use the step input or filter. Serial: 132065000 ID:9 -- Rank: 402 Expected: leaf 9 has sampled rank 402; compare with root rank 128.
    Why it matters
    Meaning: The design can be accepted for these measured mesh paths, with explicit limits for power, memory, external routing, security and future link changes. Boundary: The role and route observations belong to this fixed Cooja topology and seed.
    Step 6: Root, actuator and router parent/Rank rows are visible. The orange ring marks the evidence; the numbered badge is outside it.
    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. A greenhouse mesh sends sensor readings upward and sends valve commands downward to selected controllers. What is the strongest review habit?

    Return to the chapter’s knowledge check
  2. A greenhouse mesh uses RPL Non-Storing mode so the root can send irrigation-valve schedule updates to bed controllers. The team has DAO logs for one controller and wants to declare the command path proven. What should the reviewer require next?

    Return to the chapter’s knowledge check

Caution

Power roles and floor locations are design assumptions, not battery or building-RF measurements. The actuator-role mote exchanges packets; no physical actuator or application-level command authorization is simulated.

Return to Storing vs Non-Storing Modes · Browse Labs