Skip to content

Test the IPv6 mesh boundary below Matter

Use real RPL border-router firmware to test two end devices before and after router loss, then separate mesh evidence from Matter claims.

Radio Remi — I trace the measured path and keep application claims separate., your practice guide

Radio Remi — I trace the measured path and keep application claims separate.
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-thread-mesh-for-matter.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
    From Cooja's File menu, open the CSC and let it pause at 89 seconds. Identify border router 1, routers 2/3 and non-forwarding end devices 4/5. Inspect the prefix event in expected-output.txt.
    You will see
    Run: headless cooja-thread-mesh-for-matter.csc; use the step input or filter. Serial: PREFIX injected fd00::/64 over SLIP at_us=2065000 Expected: the border router injects fd00::/64 over SLIP at 2.065 s.
    Why it matters
    Meaning: A border-router network interface is below Matter. This uses RPL as an IPv6 mesh analogue; it does not run OpenThread or Matter. Boundary: This is RPL/IPv6 path evidence, not a Thread or Matter protocol trace.
    Step 1: The real border-router topology before the fault. 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
    In Cooja's Mote output window, filter Received ping reply|^-- Preferred parent|^-- Rank|^-- OF|^-- State|^-- MOP. Match the two pre-fault end-device pings to root 1.
    You will see
    Run: headless cooja-thread-mesh-for-matter.csc; use the step input or filter. Serial: 75177952 ID:4 Received ping reply from fd00::201:1:1:1, len 4, ttl 63, delay 112 ms Expected: end device 4 receives a pre-fault reply in 112 ms.
    Why it matters
    Meaning: A replying mesh endpoint establishes network reachability. It does not establish commissioning, a secure Matter session or cluster behavior. Boundary: This is RPL/IPv6 path evidence, not a Thread or Matter protocol trace.
    Step 2: Both pre-fault ping replies and route status 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
    Bring Radio messages to the front, inspect From and To, then minimize that window to return to Network.
    You will see
    Run: headless cooja-thread-mesh-for-matter.csc; use the step input or filter. Serial: 6179040 ID:3 [INFO: IPv6 ] packet received from fe80::201:1:1:1 to ff02::1a Expected: relay 3 receives a radio-network packet; GUI frame columns are capture-only.
    Why it matters
    Meaning: These are simulated 802.15.4/6LoWPAN frames, not Matter interaction or commissioning traces. Boundary: This is RPL/IPv6 path evidence, not a Thread or Matter protocol trace.
    Step 3: The real pre-fault radio-message rows. 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
    On Cooja's simulation toolbar, click Start/Pause to continue. The script removes the selected router at 90.065 s; let the run finish at 210 seconds.
    You will see
    Run: headless cooja-thread-mesh-for-matter.csc; use the step input or filter. Serial: FAULT removed_router=2 at_us=90065000 Expected: router 2 is removed at 90.065 s; end device 5 must change parent.
    Why it matters
    Meaning: The test removes a router, then independently checks both end devices; one recovered arrow is not enough. Boundary: This is RPL/IPv6 path evidence, not a Thread or Matter protocol trace.
    Step 4: The repaired Network graph shows two end devices through router 3. The orange ring marks the evidence; the numbered badge is outside it.
    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, use the same ping/status filter. Compare each post-fault ping with its own baseline result.
    You will see
    Run: headless cooja-thread-mesh-for-matter.csc; use the step input or filter. Serial: 190153952 ID:5 Received ping reply from fd00::201:1:1:1, len 4, ttl 63, delay 88 ms Expected: end device 5 receives a post-fault reply in 88 ms.
    Why it matters
    Meaning: Source 5’s affected path recovered, while source 4 provides an unaffected comparison. These RTTs are bounded samples, not a Matter service-level guarantee. Boundary: This is RPL/IPv6 path evidence, not a Thread or Matter protocol trace.
    Step 5: All four actual ping results and the changed parent state. 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 Unknown ICMPv6|Received ping reply. Compare the successful ICMP probes with the unsupported UDP application, then fill the README Matter scope table.
    You will see
    Run: headless cooja-thread-mesh-for-matter.csc; use the step input or filter. Serial: 25755168 ID:2 [ERR : IPv6 ] Unknown ICMPv6 message type/code 1 Expected: unsupported UDP traffic raises ICMPv6 type/code 1; ping success alone is narrower.
    Why it matters
    Meaning: Matter commissioning, data model, fabrics, subscriptions, reset recovery and certification remain paper review items. Approve the mesh reachability test only. Boundary: This is RPL/IPv6 path evidence, not a Thread or Matter protocol trace.
    Step 6: The real UDP-related ICMPv6 errors are retained rather than hidden. 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 Matter plug declares an optional feature in its PICS that the firmware does not correctly implement. What should happen before certification?

    Return to the chapter’s knowledge check
  2. A Matter device passes basic command tests, but after a factory reset and re-commissioning onto the same fabric it intermittently fails to establish an operational session. Which evidence is most important before certification readiness can be approved?

    Return to the chapter’s knowledge check

Caution

This uses real Contiki-NG RPL border-router firmware, IPv6 and 6LoWPAN over simulated IEEE 802.15.4. It is not OpenThread or Matter. Only mesh-side ICMP reachability and prefix initialization are tested; off-mesh forwarding, UDP application delivery, commissioning, fabrics, clusters and certification are not established.

Return to Matter Testing and Certification · Browse Labs