44  RPL Production Framework

In 60 Seconds

Production-ready RPL framework covering complete DODAG construction implementation, RANK calculation systems, and Storing vs Non-Storing mode evaluation for different network sizes. Provides architecture patterns for deploying RPL in real-world Low-Power and Lossy Networks with proper objective function configuration.

44.1 Learning Objectives

By the end of this chapter, you will be able to:

  • Implement RPL Systems: Construct complete DODAG construction and RANK calculation systems
  • Evaluate Storage Modes: Justify Storing vs Non-Storing mode selection for different network sizes
  • Analyze Framework Architecture: Deconstruct production-ready RPL protocol patterns
  • Deploy Production Systems: Apply RPL framework to real-world LLN deployments

44.2 Prerequisites

Required Chapters:

Technical Background:

  • IPv6 addressing
  • DODAG topology
  • Objective functions

Key RPL Concepts:

Concept Description
DODAG Destination Oriented DAG
DIO DODAG Information Object
DAO Destination Advertisement Object
DIS DODAG Information Solicitation
OF0 Objective Function Zero

Estimated Time: 30 minutes

  • Production RPL Deployment: Deploying RPL in production requires planning topology depth, router density, Trickle timer tuning, Objective Function selection, and monitoring infrastructure.
  • Network Management: Ongoing monitoring and maintenance of an RPL network including route health checks, node registration, RANK anomaly detection, and network key rotation.
  • Scalability Planning: Determining the maximum nodes, DODAG depth, and traffic volume an RPL deployment can support given hardware constraints and radio environment.
  • Redundancy Design: Planning for RPL network resilience through multiple border routers, multiple parents per node, and local repair capability.
  • OAM (Operations, Administration, Maintenance): The operational framework for monitoring, troubleshooting, and maintaining an RPL network after initial deployment.

44.3 For Beginners: Understanding RPL Production Frameworks

What is this chapter? This chapter covers how RPL is implemented in production systems, focusing on the architecture and design patterns used in real-world deployments.

Difficulty: Advanced

When to use:

  • After mastering RPL fundamentals and labs
  • When planning production deployments
  • For understanding framework architecture

Topics Covered:

Topic Why It Matters
DODAG Structure Foundation for routing hierarchy
Storage Modes Memory vs routing trade-offs
Framework Patterns Production-ready implementation
Mode Selection Choosing the right approach

Recommended Path:

  1. Master RPL Fundamentals first
  2. Complete RPL Labs
  3. Then study this framework chapter

“A production framework is like a blueprint for building a house,” said Max the Microcontroller. “It tells you exactly how to set up DODAG construction, configure RANK calculations, and choose between Storing and Non-Storing mode for your specific deployment.”

“The framework handles all the details you do not think about in theory,” explained Sammy the Sensor. “Like what happens when two DODAGs overlap, or how to handle a device that keeps switching parents because it is right on the edge between two coverage areas.”

“Mode selection is the biggest decision,” added Lila the LED. “For small networks under 50 nodes, Storing mode is usually fine – every device has enough memory. But for large networks with thousands of nodes, Non-Storing mode is essential because individual devices simply cannot store that many routes.”

“The framework also includes objective function implementation,” said Bella the Battery. “OF0 uses simple hop count, while MRHOF uses ETX for reliability-optimized routing. The right choice depends on whether you care more about minimizing hops or maximizing packet delivery rate.”

44.4 Production RPL Framework

Time: ~15 min | Level: Advanced | Code: P07.C24.U01

This section provides a comprehensive production-ready Python framework for RPL (IPv6 Routing Protocol for Low-Power and Lossy Networks), including DODAG construction, RANK calculation, Trickle timer, and both Storing and Non-Storing modes.

44.4.1 Framework Architecture

RPL DODAG Structure showing hierarchical routing topology with RANK-based parent selection. Navy root node at RANK 0 connects to two teal router nodes at RANK 256 with ETX values 1.2 and 1.5. These connect to additional routers at RANK 512 (ETX 1.1 and 1.8). Orange sensor leaf nodes at RANK 768. Solid arrows show preferred parent relationships; dashed arrows show backup paths.

RPL DODAG Structure
Figure 44.1: RPL DODAG Structure showing hierarchical routing topology with RANK-based parent selection. Navy root node at RANK 0 connects to two teal router nodes at RANK 256 with ETX values 1.2 and 1.5. These routers connect to additional routers at RANK 512 (ETX 1.1 and 1.8). Orange sensor nodes at RANK 768 are leaf nodes. Solid arrows indicate preferred parent relationships forming primary upward routes. Dashed arrows show backup parent paths for fault tolerance. RANK values increase from root to leaves, enforcing hierarchy and preventing routing loops. ETX (Expected Transmission Count) metrics quantify link quality, with lower values indicating more reliable links used by objective functions for optimal parent selection.
Side-by-side comparison of RPL Storing vs Non-Storing modes. Storing Mode shows Root with all 500 routes, Router 1 with 150 routes, Router 2 with 200 routes, Sensor with 0 routes, using 15-25 KB per router. Non-Storing Mode shows Root with all 500 source routes, but Router 1, Router 2, and Sensor all store only parent pointer with 0 routes, using less than 5 KB per node. Demonstrates the memory trade-off between distributed and centralized routing.
Figure 44.2: Alternative View: Storing vs Non-Storing Mode Memory Comparison - While the DODAG structure diagram shows the logical routing topology, this comparison illustrates the critical difference in memory requirements between RPL modes. In Storing Mode (left), each router maintains routes to all descendant nodes, consuming 15-25 KB per router in a 500-node network. In Non-Storing Mode (right), only the root maintains complete routing information while all other nodes store only their parent pointer, using less than 5 KB each. This visualization helps explain why Non-Storing mode is preferred for memory-constrained sensors (99% upward traffic uses identical routing in both modes).

This production framework provides comprehensive RPL protocol capabilities:

  • DODAG Construction: Distance-vector routing with RANK-based hierarchy, automatic parent selection
  • Trickle Timer: RFC 6206 implementation for adaptive DIO transmission (Imin to Imax intervals)
  • Routing Modes: Storing mode with distributed routing tables, non-storing mode support
  • Objective Functions: OF0 (hop count), MRHOF (ETX), Energy, Latency-based routing
  • Loop Prevention: RANK mechanism prevents routing loops, acyclic graph guaranteed
  • Control Messages: DIO (DODAG Information), DAO (Destination Advertisement), DIS, DAO-ACK
  • Traffic Patterns: Upward (many-to-one), downward (one-to-many), point-to-point routing
  • Network Repair: DODAG version increment for global topology changes
  • Parent Selection: Preferred parent with backup parent set for reliability

The framework demonstrates production-ready patterns for IPv6-based IoT networks with comprehensive statistics tracking, realistic link metrics, and complete DODAG lifecycle management.

44.5 Storing vs Non-Storing Mode Trade-offs

44.5.1 Interactive: Mode Selection Memory Calculator

Common Misconception: “Non-Storing Mode is Always Slower”

The Misconception: Many students believe Non-Storing mode causes higher latency for all traffic because it requires source routing headers. This leads to incorrect mode selection in production deployments.

The Reality (Quantified): Non-Storing mode has identical latency for the most common traffic pattern (many-to-one upward routing), and only adds overhead for rare downward traffic.

Real-World Example: Smart Factory Deployment

A manufacturing facility with 500 sensors reporting machine health data made this mistake:

Initial Decision (Wrong):

  • Mode selected: Storing Mode (believing it would be faster)
  • Node hardware: 64KB RAM sensors
  • Result: Memory exhaustion on intermediate routers after 200 nodes deployed
  • Routing table bloat: Mid-level routers storing 80-150 descendant routes
  • Memory pressure: 15-25 KB routing tables + application code exceeded 64KB
  • Symptoms: Random node crashes, routing loops, data loss

Corrected Decision:

  • Mode selected: Non-Storing Mode (after analyzing traffic patterns)
  • Traffic analysis: 99.2% upward (sensors to gateway), 0.8% downward (firmware updates)
  • Upward latency: Identical in both modes (parent forwarding, no route lookup)
  • Downward latency: 40 bytes source routing header on 200-byte packets = 16.7% overhead
  • But downward is only 0.8% of traffic: Net overhead = 16.7% x 0.8% = 0.13% total
  • Memory savings: 64KB sensors use <10KB for RPL (no routing tables)
  • Successful scale: 500 nodes deployed without memory issues

Key Numbers:

  • Upward routing (99.2% of traffic): 0ms latency difference between modes
  • Downward routing (0.8% of traffic): +5ms latency due to source routing header
  • Average latency impact: 5ms x 0.8% = 0.04ms network-wide
  • Memory savings: 15-20 KB per node x 500 nodes = 7.5-10 MB network-wide

Let’s quantify the mode selection decision with real memory calculations for a 500-node smart factory.

Storing Mode Memory Requirements:

For a binary tree-like DODAG with 500 nodes at average depth 7 hops, routing table sizes grow exponentially by level:

\[\text{Routes at router}_i = \sum_{\text{descendants}} 1 \text{ route} \approx \frac{\text{subtree nodes}}{1} \times \text{sizeof(route\_entry)}\]

Each routing entry stores: IPv6 address (16 bytes) + next-hop (16 bytes) + lifetime (4 bytes) = 36 bytes minimum.

For a mid-level router with 50 descendants: \[\text{Memory}_{\text{router}} = 50 \text{ routes} \times 36 \text{ bytes/route} = 1{,}800 \text{ bytes} \approx 1.8 \text{ KB}\]

In a 500-node network with branching factor 4-5, routers near the root may have 100-150 descendants: \[\text{Memory}_{\text{near-root}} = 150 \times 36 = 5{,}400 \text{ bytes} \approx 5.4 \text{ KB}\]

Total network-wide routing memory (Storing Mode): \[\text{Total} = \frac{500 \text{ nodes} \times 1.8 \text{ KB average}}{2} = 450 \text{ KB} \text{ (average across network)}\]

Non-Storing Mode Memory Requirements:

Each node stores only parent pointer: IPv6 address (16 bytes) + backup parent (16 bytes) = 32 bytes total.

\[\text{Memory}_{\text{node}} = 32 \text{ bytes} = 0.032 \text{ KB}\]

Network-wide: \(500 \times 0.032 = 16\) KB total (99.6% reduction!).

Root stores full topology: 500 routes × 64 bytes (with source routing path info) = 32 KB. Root typically has ample RAM (gateway-class device).

Downward Routing Overhead (Non-Storing):

Source routing header adds: 8 bytes base + 16 bytes per hop. For 5-hop path: \[\text{Header} = 8 + (5 \times 16) = 88 \text{ bytes}\]

On a 200-byte firmware command packet: \[\text{Overhead} = \frac{88}{200+88} \times 100\% = 30.6\%\]

But with 99.2% upward traffic (0 overhead) and 0.8% downward: \[\text{Network average} = (0.992 \times 0\%) + (0.008 \times 30.6\%) = 0.24\% \text{ total overhead}\]

Conclusion: Non-Storing mode saves 450 KB of RAM network-wide while adding only 0.24% overhead for this traffic pattern—a clear win for memory-constrained deployments.

Correct Understanding:

  • Storing Mode: Faster for point-to-point and downward traffic (optimal routes), but requires more memory
  • Non-Storing Mode: Identical speed for upward traffic (most common), slight overhead for downward (rare)
  • Mode selection rule: Choose based on traffic pattern dominance, not absolute performance
  • Smart factory optimization: 99%+ upward traffic leads to Non-Storing Mode as optimal choice

Why the Misconception Persists: Students focus on the “source routing overhead” without analyzing which traffic patterns it affects. They miss that RPL is designed for convergent many-to-one traffic where Non-Storing mode has zero overhead.

44.6 RPL Control Messages

Understanding control message flow is essential for production deployments:

RPL Objective Function Comparison showing OF0 selecting Parent A at 1 hop (ETX 2.5) over Parent B at 2 hops (ETX 1.2) based on hop count alone, versus MRHOF calculating path costs (Parent A: 256 x 2.5 = 640, Parent B: 512 x 1.2 = 614) and selecting Parent B for lower total cost. Navy root nodes, orange rejected parents, teal selected parents.

RPL Objective Function Comparison
Figure 44.3: RPL Objective Function Comparison demonstrating different parent selection strategies. Left side shows OF0 (Objective Function Zero) selecting Parent A at 1 hop with poor ETX 2.5, rejecting Parent B at 2 hops with better ETX 1.2. Right side shows MRHOF (Minimum Rank with Hysteresis Objective Function) calculating path costs: Parent A cost 640 (256x2.5), Parent B cost 614 (512x1.2), selecting Parent B with lower total cost. Navy root nodes at top, orange rejected parents, teal selected parents. Node visualization includes hop counts and ETX metrics. Comparison table below diagrams contrasts approaches: OF0 uses simple hop count minimization optimized for low-latency in reliable networks, while MRHOF uses ETX-based path cost calculation optimized for reliability in lossy wireless networks by minimizing expected retransmissions across the complete path.

Nodes maintain a preferred parent (primary) and backup parent set for resilience. When preferred parent fails, nodes can quickly switch to backup, enabling self-healing mesh networks.

Control messages are ICMPv6-based:

  • DIO (DODAG Information Object): Root advertises DODAG; nodes forward DIO when joining DODAG. Contains RANK, Objective Function, DODAG ID
  • DIS (DODAG Information Solicitation): Orphaned node requests DODAG information to join network
  • DAO (Destination Advertisement Object): Node advertises reachability to upstream nodes (for downward routing in Storing mode)
  • DAO-ACK: Acknowledgment of DAO receipt

RPL Control Message Flow sequence diagram showing DODAG construction and maintenance. Root sends DIO (RANK 0) to Router; Router calculates RANK 256 and forwards DIO to Sensor; Sensor calculates RANK 512. Sensor sends DAO upward; Router aggregates and forwards to Root; DAO-ACK flows back. Recovery shows Sensor sending DIS, Router responding with DIO, Sensor re-establishing via DAO.

RPL Control Message Flow
Figure 44.4: RPL Control Message Flow sequence diagram illustrating DODAG construction and maintenance lifecycle. Three participants shown: Root, Router, and Sensor. Initial DODAG Construction phase: Root sends DIO with RANK 0 and DODAG ID to Router, Router calculates RANK 256 and forwards DIO to Sensor, Sensor calculates RANK 512 and selects Router as parent. Downward Route Building phase: Sensor sends DAO message declaring reachability, Router aggregates and forwards DAO to Root indicating Sensor reachable via Router, acknowledgments flow back via DAO-ACK messages. Link Failure and Recovery phase: Sensor sends DIS requesting new parent information, Router responds with updated DIO, Sensor re-establishes route via DAO. Timeline note indicates Trickle Timer behavior: DIO frequency starts at 10ms, doubles exponentially to 1 hour during stable operation, resets to 10ms on topology changes.

44.7 Two Operational Modes

  1. Storing mode: Each node caches routing table with paths to other nodes; enables optimal point-to-point paths but requires more memory
  2. Non-Storing mode: Each node stores only parent pointer; downward routes use source routing (root specifies full path); saves memory

RPL Storage Mode Comparison. Storing Mode (top): root, Router 1 and Router 2 each maintain routing tables; sensors send DAO to routers; routers aggregate and forward DAO to root. Non-Storing Mode (bottom): only root maintains full routing table; routers and sensors store only parent pointers; DAOs go directly to root; root constructs source routing headers for downward packets.

RPL Storage Mode Comparison
Figure 44.5: RPL Storage Mode Comparison diagram showing contrasting memory distribution architectures. Top section illustrates Storing Mode: Navy root node maintains routing table for all nodes, teal Router 1 maintains routing table for Sensors 1 and 2, teal Router 2 maintains routing table for Sensor 3, orange sensor nodes maintain empty routing tables. Solid arrows show parent relationships. Dashed arrows show DAO message flow: Sensor 1 sends DAO to Router 1 declaring reachability, Router 1 aggregates and forwards DAO to Root indicating Sensors 1 and 2 reachable via Router 1. Bottom section illustrates Non-Storing Mode: Navy root maintains complete routing table with full path information for all nodes, gray Router 1 and Router 2 store only parent pointers with no routing tables, orange sensors store only parent pointers. Dashed arrows show DAO messages sent directly from sensors to root, bypassing intermediate routers. Root constructs source routing headers specifying complete downward paths. Storing Mode enables distributed optimal point-to-point routing but consumes memory at every router. Non-Storing Mode centralizes all routing state at resource-rich root, reducing memory on constrained sensors by 40% network-wide, with trade-off of source routing header overhead (16.7%) for infrequent downward traffic.

44.8 Traffic Pattern Optimization

Upward routing (sensors to root) is identical in both modes: each node sends to parent. Downward routing (root to sensors) differs: Storing mode uses cached routes, Non-Storing uses source routing from root. Point-to-point routing (sensor to sensor) uses upward path to common ancestor then downward path in Storing mode, or via root in Non-Storing mode.

Traffic patterns RPL optimizes for:

  • Many-to-one: Sensors report to gateway (most common); both modes identical
  • One-to-many: Gateway commands actuators; Storing better (optimal paths), Non-Storing uses source routing
  • Point-to-point: Device-to-device communication; Storing can optimize, Non-Storing routes via root

44.9 Objective Function Selection Guide

The objective function (OF) determines how RPL selects the “best” parent and builds the DODAG. The choice directly impacts network behavior.

Worked Example: OF Selection for Smart Agriculture

Scenario: A vineyard deploys 200 soil moisture sensors across 50 hectares. Sensors report every 15 minutes to a central gateway. The network must operate for 5 years on battery.

Two candidate objective functions:

Factor OF0 (Hop Count) MRHOF (ETX)
Metric Minimize hop count Minimize expected transmissions
Parent selection Fewest hops to root Most reliable path to root
Packet delivery rate 85-90% (outdoor) 95-98% (outdoor)
Energy consumption Lower (fewer control msgs) Higher (ETX probing overhead)
Best for Reliable links, low latency Lossy links, high reliability

Analysis for vineyard deployment:

  • Link quality: Outdoor with foliage interference, seasonal variation. Rain reduces link quality by 15-20%. ETX ranges from 1.2 (clear) to 3.5 (heavy rain).
  • OF0 result: 3-hop paths with 85% delivery rate. During rain, packet loss spikes to 30% because OF0 does not account for link quality degradation.
  • MRHOF result: 4-5 hop paths (longer but more reliable) with 96% delivery rate. During rain, MRHOF automatically switches to more reliable paths, maintaining 92% delivery.
  • Battery impact: MRHOF uses ~8% more energy (ETX probing + longer paths) but retransmissions under OF0 cost ~15% extra energy during rain events.

Decision: MRHOF for the vineyard. The 8% continuous overhead is less than the 15% retransmission cost during the 4 months of rainy season. Net energy savings: ~5% annually.

Rule of thumb: Use OF0 for indoor deployments with stable, high-quality links (offices, data centers). Use MRHOF for outdoor deployments or environments with variable link quality (agriculture, smart city, industrial yards).

Let’s calculate the energy cost difference between OF0 and MRHOF for the vineyard deployment.

OF0 Energy Consumption (3-hop path, 85% delivery in rain):

Each transmission attempt costs 50 mA × 20 ms = 1 mAms. With 85% delivery rate, expected transmissions per packet: \[E[\text{transmissions}] = \frac{1}{0.85} = 1.18 \text{ transmissions/packet}\]

Energy per successful packet delivery: \[E_{\text{OF0}} = 1.18 \times (3 \text{ hops}) \times 1 \text{ mAms} = 3.54 \text{ mAms}\]

Over 1 year (4 readings/hour × 24 hours × 365 days = 35,040 readings): \[E_{\text{OF0,year}} = 35{,}040 \times 3.54 = 124{,}042 \text{ mAms} = 34.5 \text{ mAh}\]

MRHOF Energy Consumption (4-hop path, 96% delivery in rain):

With 96% delivery: \[E[\text{transmissions}] = \frac{1}{0.96} = 1.04 \text{ transmissions/packet}\]

Energy per packet (longer path but fewer retransmissions): \[E_{\text{MRHOF}} = 1.04 \times (4 \text{ hops}) \times 1 \text{ mAms} = 4.16 \text{ mAms}\]

But MRHOF adds ETX probing overhead: 1 probe/minute × 2 bytes × 50 mA × 5 ms = 0.5 mAms/min. \[E_{\text{probing,year}} = 0.5 \times 60 \times 24 \times 365 = 262{,}800 \text{ mAms} = 73 \text{ mAh}\]

Total MRHOF energy: \[E_{\text{MRHOF,year}} = (35{,}040 \times 4.16) + 73 = 145{,}766 + 73 = 218{,}766 \text{ mAms} \approx 60.8 \text{ mAh}\]

Wait, that’s higher! Let’s account for rain season (4 months = 33% of year):

Revised OF0 (with seasonal variation):

  • Clear season (67%): 85% delivery → 1.18 transmissions
  • Rain season (33%): 70% delivery → 1.43 transmissions

\[E_{\text{OF0,avg}} = 0.67 \times 3.54 + 0.33 \times (1.43 \times 3) = 2.37 + 1.41 = 3.78 \text{ mAms/packet}\]

Annual: \(35,040 \times 3.78 = 132,451\) mAms = 36.8 mAh

Revised MRHOF (stable 96% year-round): \[E_{\text{MRHOF,data}} = 35{,}040 \times 4.16 = 145{,}766 \text{ mAms} = 40.5 \text{ mAh}\] Plus probing: 73 mAh (continuous).

Conclusion: OF0 uses less energy (36.8 mAh) than MRHOF (40.5 + 73 = 113.5 mAh) in this scenario! The 5% savings claim in the example was incorrect—MRHOF’s probing overhead dominates. Revised decision: Use OF0 and accept lower reliability during rain, or use MRHOF only if probing can be reduced to once every 5 minutes instead of every minute (cutting overhead from 73 to 14.6 mAh).

Common Pitfalls

Deploying RPL without monitoring DODAG stability, RANK changes, and route convergence events means problems go undetected until they cause application failures. Implement logging of RPL events from deployment day one.

Adding devices to an RPL network after initial deployment can cause RANK inflation and routing instability if routers are at capacity. Plan for headroom in router tables and channel utilization from the start.

A single DODAG root is a single point of failure. Deploy multiple border routers with RPL instance coordination, enabling automatic failover when the primary root is unreachable.

44.10 Summary

This chapter covered the production RPL framework architecture:

  • DODAG structure with RANK-based hierarchy and parent selection
  • Storing vs Non-Storing modes with detailed memory and latency trade-offs
  • Control message flow including DIO, DAO, DIS, and DAO-ACK
  • Traffic pattern optimization for different routing scenarios
  • Common misconceptions about mode selection and performance

44.11 How It Works

Production RPL Implementation Flow:

  1. Objective Function Selection: Configure OF0 (hop count) or MRHOF (ETX) based on network reliability requirements
  2. Mode Configuration: Set Storing or Non-Storing mode in DODAG configuration options
  3. Trickle Timer Tuning: Adjust Imin (10ms typical) and Imax (1 hour typical) based on network dynamics
  4. Parent Selection Logic: Implement backup parent tracking with hysteresis threshold to prevent flapping
  5. Memory Allocation: Reserve routing table space in Storing mode or source routing buffers in Non-Storing mode

Example Configuration (Contiki-NG):

// Set Non-Storing mode for large network
#define RPL_CONF_MOP RPL_MOP_NON_STORING

// Use MRHOF for lossy industrial environment
#define RPL_CONF_OF rpl_mrhof

// Configure Trickle timer for static deployment
#define RPL_CONF_DIO_INTERVAL_MIN 10  // 10ms
#define RPL_CONF_DIO_INTERVAL_DOUBLINGS 16  // Max 655s (~10 min)

44.12 Concept Check

Question: A warehouse deploys 300 asset tracking sensors that report location every 5 minutes. The border router has 2GB RAM. Individual sensors have 16KB RAM. Which RPL mode should you choose?

  1. Storing mode - faster downward routing for location queries
  2. Non-Storing mode - sensors lack RAM for routing tables
  3. Storing mode - lower control message overhead
  4. Non-Storing mode - better for large networks regardless of RAM
Click to see answer

Answer: B) Non-Storing mode - sensors lack RAM for routing tables

Explanation: In Storing mode, intermediate sensors would need routing tables for their sub-trees. With 300 sensors and typical 5-7 hop depth, mid-level sensors might need to store 40-80 routing entries (~800-1600 bytes), consuming 5-10% of their 16KB RAM. This leaves insufficient space for application code, packet buffers, and the operating system.

Non-Storing mode centralizes routing at the border router (which has ample 2GB RAM) while sensors maintain only parent pointers (~2 bytes). For this many-to-one traffic pattern (location reports to gateway), upward routing is identical in both modes, so Non-Storing has no performance penalty for the primary use case.

The key decision factor is sensor RAM constraint, not network size alone.

44.13 Concept Relationships

Production RPL framework connects to these implementation areas:

  • RPL Fundamentals provides the DODAG and RANK theory that this framework implements in code
  • RPL Operation details the control message timings and Trickle algorithm that production systems must tune
  • 6LoWPAN handles the header compression that makes RPL’s source routing practical in Non-Storing mode
  • Network Design Patterns shows how RPL’s hierarchical routing fits into broader IoT system architectures
  • Thread Operation demonstrates Google/Apple’s production RPL deployment with Non-Storing mode optimizations

44.14 See Also

Implementation Guides:

Reference Material:

  • RFC 6550 Section 20 (Implementation Suggestions) - Best practices for production deployments
  • RFC 6552 (OF0) - Default objective function implementation
  • RFC 6719 (MRHOF) - ETX-based objective function with hysteresis

Related Tools:

44.15 Knowledge Check

44.16 What’s Next

Continue to RPL Production Scenarios for hands-on knowledge checks and real-world deployment scenarios, or see RPL Production Summary for comprehensive concepts and case studies.

Previous: RPL Production and Review Next: RPL Production Scenarios