Yang is a modeling language that’s used by Network Configuration (Netconf) protocol and related extensions like Netconf notifications etc. Technically YANG is a language for describing the basic structure of some application data that is stored in a tree hierarchy within containers. YANG has gained a lot of traction within the open source community especially in Open daylight SDN framework.
Open daylight uses the Yang model in SAL(Software abstraction layer) that acts as a glue between the controller modules and southbound plugins like OpenFlow, ovsdb, Netconf. Open daylight calls this Yang layer as the MD-SAL layer and this allows for automatic code generation for Northbound and Southbound interfaces.
- Human readable, and easy to learn representation as YANG uses a compact C and Java-like syntax with readability is the highest priority
- YANG definitions directly map to NETCONF (XML) content
- Hierarchical configuration data models
- Reusable types and groupings (structured types)
- Extensibility through augmentation mechanisms
- Supports definition of operations (RPCs)
- Data modularity through modules and sub-modules
- Well defined versioning rules
Important YANG RFC’s
- Tail-f Systems
- SNMP Research
- jYang and much more
Why YANG vs. Other Modeling Languages?
The rapid industry adoption of NETCONF created it a priority to outline an information modeling language to enhanceNETCONF. Modeling languages like SMI (SNMP), UML, XML Schema, et al. already existed. However, none of those languages were specifically targeted to the requirements of configuration management. They lacked important capabilities like being simply read and understood by human implementers and fell short in providing mechanisms to validate models of configuration data for semantics and syntax.