RFC 6206: The Trickle Algorithm

2026-07-11

RFC: RFC 6206

Published: 2011

Authors: P. Levis, T. Clausen, J. Hui, O. Gnawali, J. Ko

Trickle is one of those beautifully simple algorithms that quietly powers a huge swath of the Internet of Things. Born from research on wireless sensor networks at Berkeley in the mid-2000s, RFC 6206 codified it as a general-purpose polite gossip mechanism: a way for nodes in a lossy, low-power mesh network to stay consistent about shared state without drowning each other (or their batteries) in traffic.

The problem. Imagine a mesh of thousands of battery-powered sensors, each needing to agree on things like routing tables, firmware versions, or configuration. Periodic broadcasts waste energy when nothing has changed. But when something does change, you need fast propagation. Traditional flooding sends O(N) messages per update; polling wastes bandwidth in steady state. Wireless links are lossy, nodes sleep unpredictably, and there's no central authority.

The insight. Trickle borrows from human etiquette: if you're at a dinner party and someone else already made your point, stay quiet. If nobody has said the thing that needs saying, speak up — but wait a random moment first so you don't talk over someone else with the same idea. Consistency is contagious; inconsistency triggers louder chatter.

The mechanics. Each node maintains three variables:

At time t, the node transmits only if c < k (the redundancy constant, often 1). When I expires, the interval doubles up to Imax. Whenever a node hears something inconsistent (a newer version, a disagreement), it resets I back to Imin, springing the network into rapid propagation.

Why this is clever. In a stable network, intervals grow exponentially — nodes chatter less and less, saving battery indefinitely. The moment reality diverges, the whole neighborhood snaps back to fast communication. Load is essentially independent of density: whether there are 5 or 500 neighbors, the number of transmissions per interval stays near k, because everyone else suppresses. This is a rare case where a distributed algorithm gets better as the network scales.

Where you actually use it. Trickle is the transport heartbeat of RPL (RFC 6550), the IPv6 routing protocol for low-power lossy networks that runs on Thread, Wi-SUN, and countless industrial mesh deployments. It underpins MPL (Multicast Protocol for Low-Power Networks). Smart meters, connected lightbulbs, Google Nest's Thread border routers, and vast smart-agriculture deployments all use Trickle-driven RPL to keep their routing DAGs consistent. If you own a smart bulb, an algorithm you've never heard of is politely negotiating routes on your behalf right now.

A quirky detail: the randomization window [I/2, I) — not [0, I) — is deliberate. Starting at I/2 guarantees a listening period before every potential transmission, so suppression actually works. Early versions used [0, I) and suffered from short-listen problems where nodes transmitted before they had a chance to hear peers, causing redundant broadcasts. The fix is a two-word change in the spec and a paper's worth of insight behind it.

Why it matters: Trickle turns "flood when broken, whisper when stable" into a five-line algorithm that keeps billions of IoT devices routing packets without exhausting their batteries.

All newsletters