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.
Predict the reading, then compare it with the measurement.
Contiki-NG Cooja
Third party ToolDownload the complete lab packet and follow README.md to run it in the free simulator.
Download the setup and run guideGet 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.
Steps
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 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) 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-storingExpected: 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 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) 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 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) 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.
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) 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 msExpected: 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 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) 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: 402Expected: 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 · 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.
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 checkA 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