CONTROLPLANE(8)resurrection.fun manualCONTROLPLANE(8)

controlplane

controlplane(8) — the manual page

Name

controlplane — controlplane — the half that decides, kept off the half that does

Synopsis

controlplane [--converge] [--offline] [--drain] INTENT
controlplane --install ROUTE >/dev/dataplane
decide_time >> forward_time

Description

controlplane holds the map, the policy, and the intent. It computes where traffic should go and installs that decision into the data plane, which forwards accordingly and asks nothing. The rule is architectural: the deciding may be rich, consistent, and slow; the doing must be fast, simple, and incurious.

The two halves fail differently. When controlplane dies the data plane keeps forwarding on its last installed rules — stale, but moving. When the data plane dies there is nothing left to decide about. A system that cannot tell which half it is currently standing on will, given time, discover the answer during an outage.

controlplane never touches a packet. It has no throughput, no hot path, and no excuse. Everything it produces is advice the data plane is not permitted to question.

Options

--converge
Recompute the route after a topology change. Takes as long as it takes. The data plane keeps forwarding into the break the whole while.
--offline
Detach the decider. Forwarding continues on the last rules installed. Nothing reroutes. Cuts become permanent until return.
--drain
Stop deciding gracefully instead of dying mid-decision. The one exit the data plane appreciates.
--install=ROUTE
Push a forwarding rule downward. The switch obeys without reading it. Correctness is entirely your problem, not its.
--reconcile
Compare desired state to actual state and close the gap. Runs forever. This is the job, not a phase of it.
--dumb
Assert that the data plane understands the decision. It does not. It never did. Flag retained to reassure operators.

Exit Status

0
route computed and installed; data plane forwarding on the new path
1
converging — packets still dropping at the break, on schedule
8
controlplane offline; data plane running on last-known rules, blind but busy
137
decider killed mid-decision; the doer never noticed and kept going

History

The separation predates computing: telephone exchanges split call signalling from the voice circuit, deciding the route on a different path than the one that carried the call. IP routers inherited it, running BGP and OSPF in a slow control plane while a dedicated forwarding chip moved packets. OpenFlow and SDN made the split physical in 2008 by pulling the decider into a central controller; Kubernetes and service meshes later shipped the terminology to everyone. The phrase 'control plane' is borrowed telecom jargon, not an excavated old word.

Bugs

When the controller is offline the data plane keeps delivering, which convinces operators nothing is wrong until they change intent and nothing changes.

--converge has no upper time bound. Documented as 'eventual'. Users read 'eventual' as 'soon'.

The data plane cannot report that it is following a wrong rule, only that it is following it very quickly.

See Also

backpressure(3), idempotent(1), livelock(8). The living exhibit demonstrates the word in motion:

▸ operate controlplane

Author

Maintained by The Controller, who decides everything and forwards nothing, and holds the data plane blameless for obeying.

resurrection.fun2026-07-17CONTROLPLANE(8)