YANG Schema Item iDentifier (SID)Trilliant Networks Inc.610 Rue du LuxembourgGranbyQuebecJ2J 2V2Canada+14503750556michel.veillette@trilliantinc.comAcklio2bis rue de la ChataigneraieCesson-SevigneBretagne35510Francea@ackl.ioLandis+Gyr30000 Mill Creek AveSuite 100AlpharettaGA30022US++16782581292randy.turner@landisgyr.comhttp://www.landisgyr.com/Acklio2bis rue de la châtaigneraieCesson-SévignéBretagne35510Franceana@ackl.ioTridonic GmbH & Co KGFarbergasse 15DornbirnVorarlberg6850Austria+43664808926169abhinav.somaraju@tridonic.com
Applications and Real-Time Area (art)
Internet Engineering Task ForceCBORYANG Schema Item iDentifiers (SID) are globally unique 64-bit numeric identifiers used to identify all items used in YANG. This document defines the semantics, the registration, and assignment processes of SIDs. To enable the implementation of these processes, this document also defines a file format used to persist and publish assigned SIDs.Some of the items defined in YANG require the use of a unique identifier. In both NETCONF and RESTCONF , these identifiers are implemented using names. To allow the implementation of data models defined in YANG in constrained devices and constrained networks, a more compact method to identify YANG items is required. This compact identifier, called SID, is encoded using a 64-bit unsigned integer. The following items are identified using SIDs:identitiesdata nodesRPCs and associated input(s) and output(s)actions and associated input(s) and output(s)notifications and associated informationYANG modules, submodules and featuresTo minimize their size, SIDs are often represented as a difference between the current SID and a reference SID. Such difference is called “delta”, shorthand for “delta-encoded SID”. Conversion from SIDs to deltas and back to SIDs is a stateless process. Each protocol implementing deltas must unambiguously define the reference SID for each YANG item.SIDs are globally unique numbers, a registration system is used in order to guarantee their uniqueness. SIDs are registered in blocks called “SID ranges”. provide more details about the registration process of SID range(s).Assignment of SIDs to YANG items can be automated, the recommended process to assign SIDs is as follows:A tool extracts the different items defined for a specific YANG module.The list of items is ordered in alphabetical order by type and label. Valid types and label formats are described within the ‘ietf-sid-file’ YANG module defined in .SIDs are assigned sequentially from the entry point up to the size of the registered SID range. This approach is recommended to minimize the serialization overhead, especially when delta encoding is implemented.If the number of items exceeds the SID range(s) allocated to a YANG module, an extra range is added for subsequent assignments.SIDs are assigned permanently, items introduced by a new revision of a YANG module are added to the list of SIDs already assigned. This process can also be automated using the same method described above except that the assignment restart from the highest SID already assigned plus one.To avoid duplicate assignment of SIDs, the registration of the SIDs assigned to YANG module(s) is recommended. provide more details about the registration process of YANG modules and associated SIDs. To enable the implementation of this registry, defines a standard file format used to store and publish SIDs.The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”,
“SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to
be interpreted as described in .The following terms are defined in :actionfeaturemodulenotificationRPCschema nodeschema treesubmoduleThis specification also makes use of the following terminology:delta : Difference between the current SID and a reference SID. A reference SID is defined for each context for which deltas are used.item: A schema node, an identity, a module, a submodule or a feature defined using the YANG modeling language.path: A path is a string that identifies a schema node within the schema tree. A path consists of the list of schema node identifier(s) separated by slashes (“/”). Schema node identifier(s) are always listed from the top-level schema node up to the targeted schema node. (e.g. “/system-state/clock/current-datetime”)YANG Schema Item iDentifier (SID): Unsigned integer used to identify different YANG items.YANG is a language designed to model data sent between clients and servers using one of the compatible protocol (e.g. NETCONF , RESCONF and CoMI ). A YANG module defines hierarchies of data, including configuration, state data, RPCs, actions and notifications.YANG modules are not necessary created in the context of constrained applications. YANG modules can be implemented using NETCONF or RESTCONF without the need to assign SIDs.As needed, authors of YANG modules can assign SIDs to their YANG modules. This process starts by the registration of a SID range. Once a SID range is registered, the owner of this range assigns sub-ranges to each YANG module in order to generate the associated “.sid” files. Generation of “.sid” files SHOULD be performed using an automated tool.Registration of the .sid file associated to a YANG module is optional but recommended to promote interoperability between devices and to avoid duplicate allocation of SIDs to a single YANG module.The following activity diagram summarizes the creation of a YANG module and its associated .sid file.Each time a YANG module or one of its imported module(s) or included sub-module(s) is updated, the “.sid” file MAY need to be updated. This update SHOULD also be performed using an automated tool.If a new revision requires more SIDs than initially allocated, a new SID range MUST be added to the assignment ranges as defined in the “.sid” file header. These extra SIDs are used for subsequent assignements.The following activity diagram summarizes the update of a YANG module and its associated .sid file.“.sid” files are used to persist and publish SIDs assigned to the different YANG items of a specific YANG module. The following YANG module defined the structure of this file, encoding is performed using the rules defined in .The security considerations of and apply.This document defines a new type of identifier used to encode data models defined in YANG . As such, this identifier does not contribute to any new security issues in addition of those identified for the specific protocols or contexts for which it is used.The name of this registry is “SID mega-range”. This registry is used to delegate the management of block of SIDs for third party’s (e.g. SDO, registrar).Each entry in this registry must include:The entry point (first entry) of the registered SID range.The size of the registered SID range.The contact information of the requesting organization including: Organization namePrimary contact name, email address, and phone numberSecondary contact name, email address, and phone numberThe initial entry in this registry is allocated to IANA:Entry PointSizeOrganization name01000000IANAThe IANA policies for future additions to this registry are “Hierarchical Allocation, Expert Review” . Prior to a first allocation, the requesting organization must demonstrate a functional registry infrastructure. On subsequent allocation request(s), the organization must demonstrate the exhaustion of the prior range. These conditions need to be asserted by the assigned expert(s).The first million SIDs assigned to IANA is sub-divided as follow:The range of 0 to 999 is reserved for future extensions. The IANA policy for this range is “IETF review” .The range of 1000 to 59,999 is reserved for YANG modules defined in RFCs. The IANA policy for future additions to this sub-registry is “RFC required” . Allocation within this range requires publishing of the associated “.yang” and “.sid” files in the YANG module registry.The range of 60,000 to 99,999 is reserved for experimental YANG modules. This range MUST NOT be used in operational deployments since these SIDs are not globally unique which limit their interoperability. The IANA policy for this range is “Experimental use” .The range of 100,000 to 999,999 is reserved for standardized YANG modules. The IANA policy for future additions to this sub-registry is “Specification Required” . Allocation within this range requires publishing of the associated “.yang” and “.sid” files in the YANG module registry.Entry PointSizeIANA policy01,000IETF review1,00059,000RFC required60,00040,000Experimental use100,0001,000,000,000Specification RequiredThe size of SID range assigned to a YANG module should be between 50% and 60% of the current number of YANG items. This headroom allows assignment within the same range of new YANG items introduced by subsequent revisions. A larger SID range size may be requested by the authors if this recommendation is considered insufficient. It is important to note that an extra SID range can be allocated to existing YANG module if the initial ranges(s) are exhausted.The name of this sub-registry is “RFC SID range assignment”. This sub-registry corresponds to the SID entry point 1000, size 59000. Each entry in this sub-registry must include the SID range entry point, the SID range size, the YANG module name, the RFC number.Initial entries in this registry are as follows:Entry PointSizeModule nameReference1000100Reserved for 1100400iana-if-type1500100ietf-interfaces1600100ietf-ip1700100ietf-systemThe name of this registry is “YANG module assignment”. This registry is used to track which YANG modules have been assigned and the specific YANG items assignment. Each entry in this sub-registry must include:The YANG module nameThe associated “.yang” file(s)The associated “.sid” fileThe validity of the “.yang” and “.sid” files added to this registry MUST be verified.The syntax of the registered “.yang” and “.sid” files must be valid.Each YANG item defined by the registered “.yang” file must have a corresponding SID assigned in the “.sid” file.Each SID is assigned to a single YANG item, duplicate assignment is not allowed.The SID range(s) defined in the “.sid” file must be unique, must not conflict with any other SID ranges defined in already registered “.sid” files.The ownership of the SID range(s) should be verify.The IANA policy for future additions to this registry is “First Come First Served” as described in .The authors would like to thank Carsten Bormann for his help during the development of this document and his useful comments during the review process.The YANG 1.1 Data Modeling LanguageYANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).JSON Encoding of Data Modeled with YANGThis document defines encoding rules for representing configuration data, state data, parameters of Remote Procedure Call (RPC) operations or actions, and notifications defined using YANG as JavaScript Object Notation (JSON) text.Key words for use in RFCs to Indicate Requirement LevelsIn many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.Concise Binary Object Representation (CBOR)The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.Guidelines for Writing an IANA Considerations Section in RFCsMany protocols make use of identifiers consisting of constants and other well-known values. Even after a protocol has been defined and deployment has begun, new values may need to be assigned (e.g., for a new option type in DHCP, or a new encryption or authentication transform for IPsec). To ensure that such quantities have consistent values and interpretations across all implementations, their assignment must be administered by a central authority. For IETF protocols, that role is provided by the Internet Assigned Numbers Authority (IANA).In order for IANA to manage a given namespace prudently, it needs guidelines describing the conditions under which new values can be assigned or when modifications to existing values can be made. If IANA is expected to play a role in the management of a namespace, IANA must be given clear and concise instructions describing that role. This document discusses issues that should be considered in formulating a policy for assigning values to a namespace and provides guidelines for authors on the specific text that must be included in documents that place demands on IANA.This document obsoletes RFC 2434. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.Network Configuration Protocol (NETCONF)The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]A YANG Data Model for Interface ManagementThis document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes configuration data and state data (status information and counters for the collection of statistics).IANA Interface Type YANG ModuleThis document defines the initial version of the iana-if-type YANG module.A YANG Data Model for IP ManagementThis document defines a YANG data model for management of IP implementations. The data model includes configuration data and state data.A YANG Data Model for System ManagementThis document defines a YANG data model for the configuration and identification of some common system properties within a device containing a Network Configuration Protocol (NETCONF) server. This document also includes data node definitions for system identification, time-of-day management, user management, DNS resolver configuration, and some protocol operations for system management.RESTCONF ProtocolThis document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).CoAP Management InterfaceThis document describes a network management interface for constrained devices and networks, called CoAP Management Interface (CoMI). The Constrained Application Protocol (CoAP) is used to access data resources specified in YANG, or SMIv2 converted to YANG. CoMI uses the YANG to CBOR mapping and converts YANG identifier strings to numeric identifiers for payload size reduction. CoMI extends the set of YANG based protocols, NETCONF and RESTCONF, with the capability to manage constrained devices and networks.The following .sid file (ietf-system@2014-08-06.sid) have been generated using the following yang modules:ietf-system@2014-08-06.yangietf-yang-types@2013-07-15.yangietf-inet-types@2013-07-15.yangietf-netconf-acm@2012-02-22.yangiana-crypt-hash@2014-04-04.yang