Crafting Network Configurations at Meta#
NANOG 97 digest Program Adjacent pick 1–3 June 2026
Santiago Alfonso Munoz Rodriguez – Meta
- Why: How a hyperscaler generates config for thousands of multi-vendor backbone devices daily is a useful reference point for anyone designing (or buying) network automation — and the compiler framing is genuinely clarifying.
- What: Meta's stack — FBNet object store, Skynet Thrift API, Jinja2 config generation — extended with Skypath, a minimal query DSL embedded directly in templates (
{$ Router[name={dev}]/asn $}), which turns templates into self-contained specifications that engineers can reason about close to plain CLI. The multi-vendor layer is a "Confpiler": vendor-agnostic IR (OpenConfig-like), frontend authoring/analysis, backend IR→vendor-YANG schema translation separated from serialization — so delivery protocol (CLI for humans, NETCONF/gNMI for machines) can switch on the fly, and the multi-vendor network is operated as if single-vendor. - How: Lazy-evaluating interpreter preprocesses templates; compile-time static blueprint with runtime-rendered dynamic values (a Java bytecode analogy); versioned packages pin code commits so rollback knows which implementation to return to.
- Where applicable: Meta-scale backbone with daily change volume. The stated lessons temper transfer: "our ability to be declarative can only be as good as our database models," there's a limited budget for tooling change, and "abstraction only makes sense when behavior is portable." Concepts transfer; the surrounding systems are the hard part.
