cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
2188
Views
5
Helpful
1
Replies

Difference between CRUD NETCONF and GNMI

Derek Peterson
Level 1
Level 1

I hope that this forum has room for basic questions because by the looks of it you guys are well down this YDK path while I'm stumbling around.  I'm really psyched about ydk-py, everything just looks awesome so I really want to learn this tool.  One of the questions I have is that in my reading and limited understanding thus far there are three modules from which you can read configuration or push new configuration (CRUD, NETCONF, and gNMI).  My question is this, which module is best for what?  From what I can see CRUD is just really easy to make changes with, the NETCONF is not much harder but includes some extra nerd knobs like making changes to a candidate configuration (roll forward, roll back, etc..) and gNMI is the new provider I had not heard of before but seems to be gaining popularity/favor (especially for telemetry).  My questions concerning them are the following:

1. Am I right in my statement that there is practically full functional overlap of these 3 Service Provider modules?

2. Is there pro's/con's to using one provider vs another?

3. Somewhat piggy backing off the last comment is there specific scenarios one is better than the other (e.g. like gNMI is just the tool to use if you're doing telemetry but CRUD or NETCONF for config reads/changes.)

 

Thank you guys in advance for any feedback and hopefully there's room on this forum for the dumb questions.

1 Reply 1

yangorelik
Spotlight
Spotlight

The NETCONF, gNMI, RESTCONF, DAYLIGHT represent network management YANG model based protocols, which allow remotely get data from network device and configure it. They are all different. The use of certain protocol (and service provider in YDK) depends on conditions, if and how much the network device is supporting it. The most mature protocol is Netconf; practically all network devices support it. It is also most stable protocol at this point.

The gNMI is newest protocol, its support in YDK was added in 2018. From my personal practice working with different devices I can see that its implementation on network devices is different too. In YDK the gNMI Service Provider was developed to support Protobuf version 0.4.0, which is fairly old one, but it is the one that is currently used in Cisco IOS XR devices. I believe that users might see some issues in using gNMI Service Provider on other devices. Correspondently the YDK should be developed to support the differences.

The CRUD is just a service, which allows Create + Read + Update + Delete device configuration in abstract way, meaning transparently to network protocol. This service is most popular due to simplicity. It is implemented in YDK for all supported Service Providers. Note that CRUD implements only four operations, but specific protocol might have wider capabilities. These capabilities are fully implemented in corresponding protocol services, like Netconf Service, gNMI Service etc.

The YDK also offers Executor Service, which allows to build and execute any RPCs compliant with certain protocol. This service gives the user full control over RPC content, but with control comes the complexity.

Another very important YDK service is Codec Service. It allows convert YANG model based objects (in YDK - entities) to certainly encoded strings. Currently YDK supports only XML and JSON encoding. But it is opened for other capabilities like Protobuf, YAML, etc., which are waiting for development.

Yan Gorelik
YDK Solutions
Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: