YANG Background and Discussion: Why we need a new language for NETCONF configuration modeling The YANG Gang IETF 70 Vancouver, Canada
NETCONF: how we got here NETCONF base protocol defined in RFC4741 Defines RPC mechanism and operations Leaves content and data models for future work , and allow any XML No data modeling language == no data models
YANG Immediate need for a NETCONF DML Allow interoperability Be able to consume models from everyone, use tools from anywhere Multi-vendor design group Leverage experience gained from multiple implementations Meeting over the past 7 months Building blocks to write NETCONF “MIBs” Configuration, RPCs, notifications Formal syntax for automation Generate XSD or RelaxNG for manager/application Tools available today on yang-central.org
NETCONF-specific Issues Expressing default values, config data vs state data, integrity constraints Protocol operations effects on models (e.g., coupling to Key constructs Instance naming “augment” extends existing models NETCONF error messages
Why not an XML schema language? Schema languages describe syntax of a document YANG models the semantics of a database Constraints on the finished product Commit time Operations guided by the model Semantics drive the syntax Simple XML validation is not sufficient Example: Mandatory fields must appear in all instances But don't appear in every RPC (“delete”)
Extended Subset Syndrome Need to limit XML schema languages Limit content for NETCONF integration Avoid inappropriate constructs Need to allow semantic information Add extensions for NETCONF-specific information What are you left with? Knowing the schema language isn’t sufficient Tools can’t enforce constraints SMI’s use of ASN.1 is a famous example Extended subset of ASN Standard tools cannot be used
YANG hits the mark Readability Rules Simple, direct, extensible , patch, and RFC friendly Didn't boil the ocean Limited scope But maximize utility within that scope Based on three proprietary DMLs Years of experience within multiple vendors Quality draft backed by running code Usable in current form Download the code and use it today