Skip to content

CONCEPT Cited by 2 sources

RIB / FIB routing split

What it is

In networking, the RIB (Routing Information Base) is the router's full, authoritative routing table — built from every route the router has learned from every protocol. It is optimised for correctness, not speed.

The FIB (Forwarding Information Base) is the derived, in-memory table the data plane actually hits on every packet. It is optimised for speed — often a hardware TCAM lookup.

The router recomputes the FIB from the RIB whenever the RIB changes. The data plane never reads the RIB directly.

Why the split exists

  • The RIB is often huge (full BGP table: ~1M routes) and structurally expensive to traverse.
  • The data plane needs nanosecond-scale lookups on every packet.
  • The FIB is a summary (longest-prefix-match friendly, often compressed into hardware tables) computed off the RIB.

Classical instance of control-plane / data-plane separation that long predates distributed-systems usage of the term.

Generalisation to state-distribution systems

The same shape works for any system where authoritative state is large or distributed, but the hot read path needs a fast aggregated view:

  • Fly.io edge proxy: Corrosion is the RIB (the authoritative distributed SQLite of every Machine's routing state); fly-proxy's in-memory Catalog is the FIB (the aggregated view the request-routing hot path reads). Corrosion updates propagate host-to-host "in millisecond intervals of time"; the proxy refreshes its Catalog from those updates.
  • Kubernetes: etcd-stored API objects (RIB) vs. kube-proxy's in-kernel iptables/IPVS rules (FIB).
  • Service mesh: Envoy's xDS-delivered configuration (RIB) vs. the per-connection forwarding state (FIB).

Canonical wiki instance — fly-proxy + Corrosion

From sources/2025-05-28-flyio-parking-lot-ffffffffffffffff:

"In somewhat the same sense as a router works both with a RIB and a FIB, there is in fly-proxy a system of record for routing information (Corrosion), and then an in-memory aggregation of that information used to make fast decisions."

The 2024-09-01 global Anycast outage was a contagious deadlock in the FIB-update consumer (the Catalog reader's if let over an RwLock), not in the RIB itself. Corrosion was "just a bystander" — but the gossip layer was the blast amplifier.

Seen in

Last updated · 200 distilled / 1,178 read