The gRPC-native management stack: gNMI RPCs (Capabilities/Get/Set/Subscribe) over gRPC+protobuf, streaming-telemetry modes (ONCE/POLL/SAMPLE/ON_CHANGE), dial-in vs dial-out, OpenConfig vendor-neutral YANG models and the config/state split, gNOI/gRIBI, and SNMP vs NETCONF vs RESTCONF vs gNMI.
Where NETCONF is XML-over-SSH, gNMI is the gRPC-native answer: config and high-frequency streaming telemetry over one efficient, encrypted channel, using the same YANG models — usually the vendor-neutral OpenConfig ones. It's the modern DC/operator management interface. Pairs with NETCONF & YANG.
gNMI = gRPC Network Management Interface (protocol). OpenConfig =
vendor-neutral YANG models. Streaming telemetry = the push model gNMI's
Subscribe enables. All three usually show up together, but they're three separate things.
Built on gRPC (HTTP/2 + TLS) with protobuf encoding — compact, multiplexed, bidirectional. Paths are derived from the YANG schema. Four RPCs:
| RPC | Purpose |
|---|---|
| Capabilities | Discover supported models, encodings, and gNMI version. |
| Get | One-shot snapshot of the values at a set of paths. |
| Set | Transactional config change: update / replace / delete in one request (all-or-nothing). |
| Subscribe | The headline feature — streaming telemetry. |
A path targets the tree, with list keys inline:
/interfaces/interface[name=Ethernet1]/state/counters/in-octets
# encodings: JSON_IETF | protobuf | ASCII
Instead of polling SNMP every 5 minutes, the device pushes data as it changes or on a fast timer. Subscription modes:
| Mode | Behavior |
|---|---|
| ONCE | Send current values once, then close. |
| POLL | Client asks on demand over the open stream. |
| STREAM · SAMPLE | Push every N (e.g. every 10s) — good for counters/rates. |
| STREAM · ON_CHANGE | Push only when a value changes — ideal for state (interface up/down, BGP session). |
| STREAM · TARGET_DEFINED | Device picks the best mode per leaf. |
Subscribe to the device;
dial-out = the device is configured to push to a collector (gRPC/UDP). Same telemetry, opposite initiator.ON_CHANGE efficiency,
model-driven (consistent paths), one TLS channel, no MIB OID wrangling.OpenConfig is a set of vendor-neutral YANG models (interfaces, BGP, routing-policy, LLDP, platform, telemetry…) maintained by network operators so the same path works across vendors.
config container (intended) and a
parallel state container (operational + applied) — you write config, you stream
state.| SNMP | NETCONF | RESTCONF | gNMI | |
|---|---|---|---|---|
| Transport | UDP | SSH (830) | HTTP (443) | gRPC/HTTP2 (TLS) |
| Encoding | BER | XML | JSON/XML | protobuf / JSON |
| Model | MIB (SMI) | YANG | YANG | YANG (OpenConfig) |
| Config transactions | Weak | Strong (candidate/commit) | Basic | Set (atomic) |
| Telemetry | Poll (traps) | Notifications | — | Streaming (Subscribe) |