NETCONF vs GNMI
NETCONF vs GNMI
In the last article, NETCONF vs RESTCONF I have explained the difference between netconf and restconf and their use-cases. Netconf has very rich functionality, whereas restconf has matching functionality. Restconf has opened the door for the framework with REST-based system and infrastructure.
The gNMI (gRPC Network Management Interface) protocol comes from the openconfig consortium, a group of network operators led by Google, with the following mission - “OpenConfig is an informal working group of network operators sharing the goal of moving our networks toward a more dynamic, programmable infrastructure by adopting software-defined networking principles such as declarative configuration and model-driven management and operations”.
The initial focus for openconfig was to develop vendor-neutral yang models for operator needs. It started with Google’s requirements, later all the operators joined hands. Right now, this is the most active group to add new data models. The group also developed gNMI as a management protocol for configuration and streaming telemetry management. Note that gNMI is based on gRPC as a transport protocol. The gNMI supports more encoding, not just protobuf [more details below]. The protobuf is more compact on the wire, so performance-wise more advantageous. But, operationally it is more complex. Also the distribution of proto files is more challenging, especially upgrade scenarios. It adds more complexities.
GNMI Interface:
service gNMI {
rpc Capabilities(CapabilityRequest) returns (CapabilityResponse);
rpc Get(GetRequest) returns (GetResponse);
rpc Set(SetRequest) returns (SetResponse);
rpc Subscribe(stream SubscribeRequest) returns (stream SubscribeResponse);
}
gNMI | NETCONF | RESTCONF | |
---|---|---|---|
Serialization | Protobuf or JSON | XML | XML or JSON |
Transport | gRPC (HTTP/2.0) | SSH | HTTP/TLS/TCP/IP |
Diff oriented | Yes Returns only elements of the tree that have changed from last read | No Always returns entire sub-tree snapshot | No |
streaming telemetry | Yes | NetConf notification | No |
Operation semantics | gNMI specific. Single-target, single-shot, sequenced transactions. | NETCONF specific; networkwide transactions. | RESTCONF specific, based on HTTP verbs. Single-target, single-shot transactions. |
LEAVE A REPLY