Internet Engineering Task Force (IETF)             J. Schoenwaelder, Ed.
Request for Comments: 6991                             Jacobs University
Obsoletes: 6021                                                July 2013
Category: Standards Track
ISSN: 2070-1721
        
Internet Engineering Task Force (IETF)             J. Schoenwaelder, Ed.
Request for Comments: 6991                             Jacobs University
Obsoletes: 6021                                                July 2013
Category: Standards Track
ISSN: 2070-1721
        

Common YANG Data Types

常见数据类型

Abstract

摘要

This document introduces a collection of common data types to be used with the YANG data modeling language. This document obsoletes RFC 6021.

本文档介绍了一组用于YANG数据建模语言的常见数据类型。本文件废除了RFC 6021。

Status of This Memo

关于下段备忘

This is an Internet Standards Track document.

这是一份互联网标准跟踪文件。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 5741第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc6991.

有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问http://www.rfc-editor.org/info/rfc6991.

Copyright Notice

版权公告

Copyright (c) 2013 IETF Trust and the persons identified as the document authors. All rights reserved.

版权所有(c)2013 IETF信托基金和确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(http://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。

This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to allow

本文件可能包含2008年11月10日之前发布或公开的IETF文件或IETF贡献中的材料。控制某些材料版权的人可能没有授予IETF信托允许的权利

modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s) controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate it into languages other than English.

在IETF标准过程之外修改此类材料。在未从控制此类材料版权的人员处获得充分许可的情况下,不得在IETF标准流程之外修改本文件,也不得在IETF标准流程之外创建其衍生作品,除了将其格式化以RFC形式发布或将其翻译成英语以外的其他语言。

Table of Contents

目录

   1. Introduction ....................................................2
   2. Overview ........................................................3
   3. Core YANG Derived Types .........................................4
   4. Internet-Specific Derived Types ................................14
   5. IANA Considerations ............................................24
   6. Security Considerations ........................................25
   7. Contributors ...................................................25
   8. Acknowledgments ................................................25
   9. References .....................................................26
      9.1. Normative References ......................................26
      9.2. Informative References ....................................26
   Appendix A.  Changes from RFC 6021 ................................30
        
   1. Introduction ....................................................2
   2. Overview ........................................................3
   3. Core YANG Derived Types .........................................4
   4. Internet-Specific Derived Types ................................14
   5. IANA Considerations ............................................24
   6. Security Considerations ........................................25
   7. Contributors ...................................................25
   8. Acknowledgments ................................................25
   9. References .....................................................26
      9.1. Normative References ......................................26
      9.2. Informative References ....................................26
   Appendix A.  Changes from RFC 6021 ................................30
        
1. Introduction
1. 介绍

YANG [RFC6020] is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF) [RFC6241]. The YANG language supports a small set of built-in data types and provides mechanisms to derive other types from the built-in types.

YANG[RFC6020]是一种数据建模语言,用于对网络配置协议(NETCONF)[RFC6241]操作的配置和状态数据进行建模。YANG语言支持一小部分内置数据类型,并提供从内置类型派生其他类型的机制。

This document introduces a collection of common data types derived from the built-in YANG data types. The derived types are designed to be applicable for modeling all areas of management information. The definitions are organized in several YANG modules. The "ietf-yang-types" module contains generally useful data types. The "ietf-inet-types" module contains definitions that are relevant for the Internet protocol suite.

本文档介绍从内置数据类型派生的常见数据类型的集合。派生类型旨在适用于管理信息的所有领域建模。这些定义被组织在几个模块中。“ietf类型”模块包含一般有用的数据类型。“ietf inet类型”模块包含与Internet协议套件相关的定义。

This document adds new type definitions to the YANG modules and obsoletes [RFC6021]. For further details, see the revision statements of the YANG modules in Sections 3 and 4 or the summary in Appendix A.

本文件将新的类型定义添加到YANG模块和淘汰车型[RFC6021]。有关更多详细信息,请参见第3节和第4节中的YANG模块修订说明或附录A中的摘要。

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119].

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可”和“可选”应按照BCP 14[RFC2119]中的说明进行解释。

2. Overview
2. 概述

This section provides a short overview of the types defined in subsequent sections and their equivalent Structure of Management Information Version 2 (SMIv2) [RFC2578][RFC2579] data types. A YANG data type is equivalent to an SMIv2 data type if the data types have the same set of values and the semantics of the values are equivalent.

本节简要概述了后续章节中定义的类型及其管理信息版本2(SMIv2)[RFC2578][RFC2579]数据类型的等效结构。如果数据类型具有相同的值集且值的语义是等效的,则YANG数据类型等效于SMIv2数据类型。

Table 1 lists the types defined in the ietf-yang-types YANG module and the corresponding SMIv2 types (- indicates there is no corresponding SMIv2 type).

表1列出了ietf yang types yang模块中定义的类型和相应的SMIv2类型(-表示没有相应的SMIv2类型)。

        +-----------------------+--------------------------------+
        | YANG type             | Equivalent SMIv2 type (module) |
        +-----------------------+--------------------------------+
        | counter32             | Counter32 (SNMPv2-SMI)         |
        | zero-based-counter32  | ZeroBasedCounter32 (RMON2-MIB) |
        | counter64             | Counter64 (SNMPv2-SMI)         |
        | zero-based-counter64  | ZeroBasedCounter64 (HCNUM-TC)  |
        | gauge32               | Gauge32 (SNMPv2-SMI)           |
        | gauge64               | CounterBasedGauge64 (HCNUM-TC) |
        | object-identifier     | -                              |
        | object-identifier-128 | OBJECT IDENTIFIER              |
        | yang-identifier       | -                              |
        | date-and-time         | -                              |
        | timeticks             | TimeTicks (SNMPv2-SMI)         |
        | timestamp             | TimeStamp (SNMPv2-TC)          |
        | phys-address          | PhysAddress (SNMPv2-TC)        |
        | mac-address           | MacAddress (SNMPv2-TC)         |
        | xpath1.0              | -                              |
        | hex-string            | -                              |
        | uuid                  | -                              |
        | dotted-quad           | -                              |
        +-----------------------+--------------------------------+
        
        +-----------------------+--------------------------------+
        | YANG type             | Equivalent SMIv2 type (module) |
        +-----------------------+--------------------------------+
        | counter32             | Counter32 (SNMPv2-SMI)         |
        | zero-based-counter32  | ZeroBasedCounter32 (RMON2-MIB) |
        | counter64             | Counter64 (SNMPv2-SMI)         |
        | zero-based-counter64  | ZeroBasedCounter64 (HCNUM-TC)  |
        | gauge32               | Gauge32 (SNMPv2-SMI)           |
        | gauge64               | CounterBasedGauge64 (HCNUM-TC) |
        | object-identifier     | -                              |
        | object-identifier-128 | OBJECT IDENTIFIER              |
        | yang-identifier       | -                              |
        | date-and-time         | -                              |
        | timeticks             | TimeTicks (SNMPv2-SMI)         |
        | timestamp             | TimeStamp (SNMPv2-TC)          |
        | phys-address          | PhysAddress (SNMPv2-TC)        |
        | mac-address           | MacAddress (SNMPv2-TC)         |
        | xpath1.0              | -                              |
        | hex-string            | -                              |
        | uuid                  | -                              |
        | dotted-quad           | -                              |
        +-----------------------+--------------------------------+
        

Table 1: ietf-yang-types

表1:ietf类型

Table 2 lists the types defined in the ietf-inet-types YANG module and the corresponding SMIv2 types (if any).

表2列出了ietf inet类型模块中定义的类型以及相应的SMIv2类型(如果有)。

   +----------------------+--------------------------------------------+
   | YANG type            | Equivalent SMIv2 type (module)             |
   +----------------------+--------------------------------------------+
   | ip-version           | InetVersion (INET-ADDRESS-MIB)             |
   | dscp                 | Dscp (DIFFSERV-DSCP-TC)                    |
   | ipv6-flow-label      | IPv6FlowLabel (IPV6-FLOW-LABEL-MIB)        |
   | port-number          | InetPortNumber (INET-ADDRESS-MIB)          |
   | as-number            | InetAutonomousSystemNumber                 |
   |                      | (INET-ADDRESS-MIB)                         |
   | ip-address           | -                                          |
   | ipv4-address         | -                                          |
   | ipv6-address         | -                                          |
   | ip-address-no-zone   | -                                          |
   | ipv4-address-no-zone | -                                          |
   | ipv6-address-no-zone | -                                          |
   | ip-prefix            | -                                          |
   | ipv4-prefix          | -                                          |
   | ipv6-prefix          | -                                          |
   | domain-name          | -                                          |
   | host                 | -                                          |
   | uri                  | Uri (URI-TC-MIB)                           |
   +----------------------+--------------------------------------------+
        
   +----------------------+--------------------------------------------+
   | YANG type            | Equivalent SMIv2 type (module)             |
   +----------------------+--------------------------------------------+
   | ip-version           | InetVersion (INET-ADDRESS-MIB)             |
   | dscp                 | Dscp (DIFFSERV-DSCP-TC)                    |
   | ipv6-flow-label      | IPv6FlowLabel (IPV6-FLOW-LABEL-MIB)        |
   | port-number          | InetPortNumber (INET-ADDRESS-MIB)          |
   | as-number            | InetAutonomousSystemNumber                 |
   |                      | (INET-ADDRESS-MIB)                         |
   | ip-address           | -                                          |
   | ipv4-address         | -                                          |
   | ipv6-address         | -                                          |
   | ip-address-no-zone   | -                                          |
   | ipv4-address-no-zone | -                                          |
   | ipv6-address-no-zone | -                                          |
   | ip-prefix            | -                                          |
   | ipv4-prefix          | -                                          |
   | ipv6-prefix          | -                                          |
   | domain-name          | -                                          |
   | host                 | -                                          |
   | uri                  | Uri (URI-TC-MIB)                           |
   +----------------------+--------------------------------------------+
        

Table 2: ietf-inet-types

表2:ietf inet类型

3. Core YANG Derived Types
3. 核心派生类型

The ietf-yang-types YANG module references [IEEE802], [ISO9834-1], [RFC2578], [RFC2579], [RFC2856], [RFC3339], [RFC4122], [RFC4502], [RFC6020], [XPATH], and [XSD-TYPES].

ietf模块参考[IEEE802]、[ISO9834-1]、[RFC2578]、[RFC2579]、[RFC2856]、[RFC3339]、[RFC4122]、[RFC4502]、[RFC6020]、[XPATH]和[XSD-types]。

   <CODE BEGINS> file "ietf-yang-types@2013-07-15.yang"
        
   <CODE BEGINS> file "ietf-yang-types@2013-07-15.yang"
        

module ietf-yang-types {

ietf模块类型{

     namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
     prefix "yang";
        
     namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
     prefix "yang";
        

organization "IETF NETMOD (NETCONF Data Modeling Language) Working Group";

组织“IETF NETMOD(NETCONF数据建模语言)工作组”;

     contact
      "WG Web:   <http://tools.ietf.org/wg/netmod/>
       WG List:  <mailto:netmod@ietf.org>
        
     contact
      "WG Web:   <http://tools.ietf.org/wg/netmod/>
       WG List:  <mailto:netmod@ietf.org>
        
       WG Chair: David Kessens
                 <mailto:david.kessens@nsn.com>
        
       WG Chair: David Kessens
                 <mailto:david.kessens@nsn.com>
        
       WG Chair: Juergen Schoenwaelder
                 <mailto:j.schoenwaelder@jacobs-university.de>
        
       WG Chair: Juergen Schoenwaelder
                 <mailto:j.schoenwaelder@jacobs-university.de>
        
       Editor:   Juergen Schoenwaelder
                 <mailto:j.schoenwaelder@jacobs-university.de>";
        
       Editor:   Juergen Schoenwaelder
                 <mailto:j.schoenwaelder@jacobs-university.de>";
        

description "This module contains a collection of generally useful derived YANG data types.

description“此模块包含一组常用的派生数据类型。

Copyright (c) 2013 IETF Trust and the persons identified as authors of the code. All rights reserved.

版权所有(c)2013 IETF信托基金和被确定为代码作者的人员。版权所有。

Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info).

根据IETF信托有关IETF文件的法律规定第4.c节规定的简化BSD许可证中包含的许可条款,允许以源代码和二进制格式重新分发和使用,无论是否修改(http://trustee.ietf.org/license-info).

This version of this YANG module is part of RFC 6991; see the RFC itself for full legal notices.";

此模块的此版本是RFC 6991的一部分;有关完整的法律通知,请参见RFC本身。“;

     revision 2013-07-15 {
       description
        "This revision adds the following new data types:
         - yang-identifier
         - hex-string
         - uuid
         - dotted-quad";
       reference
        "RFC 6991: Common YANG Data Types";
     }
        
     revision 2013-07-15 {
       description
        "This revision adds the following new data types:
         - yang-identifier
         - hex-string
         - uuid
         - dotted-quad";
       reference
        "RFC 6991: Common YANG Data Types";
     }
        
     revision 2010-09-24 {
       description
        "Initial revision.";
       reference
        "RFC 6021: Common YANG Data Types";
     }
        
     revision 2010-09-24 {
       description
        "Initial revision.";
       reference
        "RFC 6021: Common YANG Data Types";
     }
        
     /*** collection of counter and gauge types ***/
        
     /*** collection of counter and gauge types ***/
        
     typedef counter32 {
       type uint32;
        
     typedef counter32 {
       type uint32;
        

description "The counter32 type represents a non-negative integer that monotonically increases until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero.

description“counter32类型表示一个非负整数,该整数单调递增,直到达到最大值2^32-1(4294967295十进制),然后再从零开始递增。

Counters have no defined 'initial' value, and thus, a single value of a counter has (in general) no information content. Discontinuities in the monotonically increasing value normally occur at re-initialization of the management system, and at other times as specified in the description of a schema node using this type. If such other times can occur, for example, the creation of a schema node of type counter32 at times other than re-initialization, then a corresponding schema node should be defined, with an appropriate type, to indicate the last discontinuity.

计数器没有定义的“初始”值,因此,计数器的单个值(通常)没有信息内容。单调递增值中的不连续性通常发生在管理系统的重新初始化时,以及在使用此类型的模式节点的描述中指定的其他时间。如果这种其他时间可以发生,例如,在重新初始化以外的时间创建counter32类型的模式节点,则应使用适当的类型定义相应的模式节点,以指示最后的不连续性。

The counter32 type should not be used for configuration schema nodes. A default statement SHOULD NOT be used in combination with the type counter32.

counter32类型不应用于配置架构节点。默认语句不应与类型counter32结合使用。

         In the value set and its semantics, this type is equivalent
         to the Counter32 type of the SMIv2.";
       reference
        "RFC 2578: Structure of Management Information Version 2
                   (SMIv2)";
     }
        
         In the value set and its semantics, this type is equivalent
         to the Counter32 type of the SMIv2.";
       reference
        "RFC 2578: Structure of Management Information Version 2
                   (SMIv2)";
     }
        
     typedef zero-based-counter32 {
       type yang:counter32;
       default "0";
       description
        "The zero-based-counter32 type represents a counter32
         that has the defined 'initial' value zero.
        
     typedef zero-based-counter32 {
       type yang:counter32;
       default "0";
       description
        "The zero-based-counter32 type represents a counter32
         that has the defined 'initial' value zero.
        

A schema node of this type will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero.

此类型的架构节点在创建时将设置为零(0),然后将单调增加,直到其达到最大值2^32-1(4294967295十进制),然后再从零开始增加。

Provided that an application discovers a new schema node of this type within the minimum time to wrap, it can use the 'initial' value as a delta. It is important for a management station to be aware of this minimum time and the actual time between polls, and to discard data if the actual time is too long or there is no defined minimum time.

如果应用程序在最短的包装时间内发现这种类型的新模式节点,它可以使用“初始”值作为增量。对于管理站来说,了解此最短时间和轮询之间的实际时间非常重要,如果实际时间过长或没有定义最短时间,则丢弃数据。

         In the value set and its semantics, this type is equivalent
         to the ZeroBasedCounter32 textual convention of the SMIv2.";
       reference
         "RFC 4502: Remote Network Monitoring Management Information
                    Base Version 2";
     }
        
         In the value set and its semantics, this type is equivalent
         to the ZeroBasedCounter32 textual convention of the SMIv2.";
       reference
         "RFC 4502: Remote Network Monitoring Management Information
                    Base Version 2";
     }
        
     typedef counter64 {
       type uint64;
       description
        "The counter64 type represents a non-negative integer
         that monotonically increases until it reaches a
         maximum value of 2^64-1 (18446744073709551615 decimal),
         when it wraps around and starts increasing again from zero.
        
     typedef counter64 {
       type uint64;
       description
        "The counter64 type represents a non-negative integer
         that monotonically increases until it reaches a
         maximum value of 2^64-1 (18446744073709551615 decimal),
         when it wraps around and starts increasing again from zero.
        

Counters have no defined 'initial' value, and thus, a single value of a counter has (in general) no information content. Discontinuities in the monotonically increasing value normally occur at re-initialization of the management system, and at other times as specified in the description of a schema node using this type. If such other times can occur, for example, the creation of a schema node of type counter64 at times other than re-initialization, then a corresponding schema node should be defined, with an appropriate type, to indicate the last discontinuity.

计数器没有定义的“初始”值,因此,计数器的单个值(通常)没有信息内容。单调递增值中的不连续性通常发生在管理系统的重新初始化时,以及在使用此类型的模式节点的描述中指定的其他时间。如果可能发生此类其他时间,例如,在重新初始化以外的时间创建计数器64类型的模式节点,则应使用适当的类型定义相应的模式节点,以指示最后的不连续性。

The counter64 type should not be used for configuration schema nodes. A default statement SHOULD NOT be used in combination with the type counter64.

counter64类型不应用于配置架构节点。默认语句不应与类型计数器64结合使用。

         In the value set and its semantics, this type is equivalent
         to the Counter64 type of the SMIv2.";
       reference
        "RFC 2578: Structure of Management Information Version 2
                   (SMIv2)";
     }
        
         In the value set and its semantics, this type is equivalent
         to the Counter64 type of the SMIv2.";
       reference
        "RFC 2578: Structure of Management Information Version 2
                   (SMIv2)";
     }
        
     typedef zero-based-counter64 {
       type yang:counter64;
       default "0";
       description
        "The zero-based-counter64 type represents a counter64 that
         has the defined 'initial' value zero.
        
     typedef zero-based-counter64 {
       type yang:counter64;
       default "0";
       description
        "The zero-based-counter64 type represents a counter64 that
         has the defined 'initial' value zero.
        

A schema node of this type will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2^64-1 (18446744073709551615 decimal), when it wraps around and starts increasing again from zero.

此类型的架构节点在创建时将设置为零(0),然后将单调增加,直到达到最大值2^64-1(18446744073709551615十进制),然后再从零开始增加。

Provided that an application discovers a new schema node of this type within the minimum time to wrap, it can use the 'initial' value as a delta. It is important for a management station to be aware of this minimum time and the actual time between polls, and to discard data if the actual time is too long or there is no defined minimum time.

如果应用程序在最短的包装时间内发现这种类型的新模式节点,它可以使用“初始”值作为增量。对于管理站来说,了解此最短时间和轮询之间的实际时间非常重要,如果实际时间过长或没有定义最短时间,则丢弃数据。

         In the value set and its semantics, this type is equivalent
         to the ZeroBasedCounter64 textual convention of the SMIv2.";
       reference
        "RFC 2856: Textual Conventions for Additional High Capacity
                   Data Types";
     }
        
         In the value set and its semantics, this type is equivalent
         to the ZeroBasedCounter64 textual convention of the SMIv2.";
       reference
        "RFC 2856: Textual Conventions for Additional High Capacity
                   Data Types";
     }
        
     typedef gauge32 {
       type uint32;
       description
        "The gauge32 type represents a non-negative integer, which
         may increase or decrease, but shall never exceed a maximum
         value, nor fall below a minimum value.  The maximum value
         cannot be greater than 2^32-1 (4294967295 decimal), and
         the minimum value cannot be smaller than 0.  The value of
         a gauge32 has its maximum value whenever the information
         being modeled is greater than or equal to its maximum
         value, and has its minimum value whenever the information
         being modeled is smaller than or equal to its minimum value.
         If the information being modeled subsequently decreases
         below (increases above) the maximum (minimum) value, the
         gauge32 also decreases (increases).
        
     typedef gauge32 {
       type uint32;
       description
        "The gauge32 type represents a non-negative integer, which
         may increase or decrease, but shall never exceed a maximum
         value, nor fall below a minimum value.  The maximum value
         cannot be greater than 2^32-1 (4294967295 decimal), and
         the minimum value cannot be smaller than 0.  The value of
         a gauge32 has its maximum value whenever the information
         being modeled is greater than or equal to its maximum
         value, and has its minimum value whenever the information
         being modeled is smaller than or equal to its minimum value.
         If the information being modeled subsequently decreases
         below (increases above) the maximum (minimum) value, the
         gauge32 also decreases (increases).
        
         In the value set and its semantics, this type is equivalent
         to the Gauge32 type of the SMIv2.";
       reference
        "RFC 2578: Structure of Management Information Version 2
                   (SMIv2)";
     }
        
         In the value set and its semantics, this type is equivalent
         to the Gauge32 type of the SMIv2.";
       reference
        "RFC 2578: Structure of Management Information Version 2
                   (SMIv2)";
     }
        
     typedef gauge64 {
       type uint64;
       description
        "The gauge64 type represents a non-negative integer, which
         may increase or decrease, but shall never exceed a maximum
         value, nor fall below a minimum value.  The maximum value
        
     typedef gauge64 {
       type uint64;
       description
        "The gauge64 type represents a non-negative integer, which
         may increase or decrease, but shall never exceed a maximum
         value, nor fall below a minimum value.  The maximum value
        

cannot be greater than 2^64-1 (18446744073709551615), and the minimum value cannot be smaller than 0. The value of a gauge64 has its maximum value whenever the information being modeled is greater than or equal to its maximum value, and has its minimum value whenever the information being modeled is smaller than or equal to its minimum value. If the information being modeled subsequently decreases below (increases above) the maximum (minimum) value, the gauge64 also decreases (increases).

不能大于2^64-1(18446744073709551615),最小值不能小于0。当所建模的信息大于或等于其最大值时,量规64的值有其最大值;当所建模的信息小于或等于其最小值时,量规64的值有其最小值。如果随后建模的信息减小到最大(最小)值以下(增大到最大(最小)值以上),则仪表64也会减小(增大)。

         In the value set and its semantics, this type is equivalent
         to the CounterBasedGauge64 SMIv2 textual convention defined
         in RFC 2856";
       reference
        "RFC 2856: Textual Conventions for Additional High Capacity
                   Data Types";
     }
        
         In the value set and its semantics, this type is equivalent
         to the CounterBasedGauge64 SMIv2 textual convention defined
         in RFC 2856";
       reference
        "RFC 2856: Textual Conventions for Additional High Capacity
                   Data Types";
     }
        
     /*** collection of identifier-related types ***/
        
     /*** collection of identifier-related types ***/
        
     typedef object-identifier {
       type string {
         pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
               + '(\.(0|([1-9]\d*)))*';
       }
       description
        "The object-identifier type represents administratively
         assigned names in a registration-hierarchical-name tree.
        
     typedef object-identifier {
       type string {
         pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
               + '(\.(0|([1-9]\d*)))*';
       }
       description
        "The object-identifier type represents administratively
         assigned names in a registration-hierarchical-name tree.
        

Values of this type are denoted as a sequence of numerical non-negative sub-identifier values. Each sub-identifier value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers are separated by single dots and without any intermediate whitespace.

这种类型的值表示为数字非负子标识符值序列。每个子标识符值不得超过2^32-1(4294967295)。子标识符由单点分隔,没有任何中间空格。

The ASN.1 standard restricts the value space of the first sub-identifier to 0, 1, or 2. Furthermore, the value space of the second sub-identifier is restricted to the range 0 to 39 if the first sub-identifier is 0 or 1. Finally, the ASN.1 standard requires that an object identifier has always at least two sub-identifiers. The pattern captures these restrictions.

ASN.1标准将第一个子标识符的值空间限制为0、1或2。此外,如果第一子标识符是0或1,则第二子标识符的值空间被限制在范围0到39。最后,ASN.1标准要求对象标识符始终至少有两个子标识符。模式捕获了这些限制。

Although the number of sub-identifiers is not limited, module designers should realize that there may be implementations that stick with the SMIv2 limit of 128 sub-identifiers.

尽管子标识符的数量不受限制,但模块设计者应该意识到,可能存在符合SMIv2 128个子标识符限制的实现。

         This type is a superset of the SMIv2 OBJECT IDENTIFIER type
         since it is not restricted to 128 sub-identifiers.  Hence,
         this type SHOULD NOT be used to represent the SMIv2 OBJECT
         IDENTIFIER type; the object-identifier-128 type SHOULD be
         used instead.";
       reference
        "ISO9834-1: Information technology -- Open Systems
         Interconnection -- Procedures for the operation of OSI
         Registration Authorities: General procedures and top
         arcs of the ASN.1 Object Identifier tree";
     }
        
         This type is a superset of the SMIv2 OBJECT IDENTIFIER type
         since it is not restricted to 128 sub-identifiers.  Hence,
         this type SHOULD NOT be used to represent the SMIv2 OBJECT
         IDENTIFIER type; the object-identifier-128 type SHOULD be
         used instead.";
       reference
        "ISO9834-1: Information technology -- Open Systems
         Interconnection -- Procedures for the operation of OSI
         Registration Authorities: General procedures and top
         arcs of the ASN.1 Object Identifier tree";
     }
        
     typedef object-identifier-128 {
       type object-identifier {
         pattern '\d*(\.\d*){1,127}';
       }
       description
        "This type represents object-identifiers restricted to 128
         sub-identifiers.
        
     typedef object-identifier-128 {
       type object-identifier {
         pattern '\d*(\.\d*){1,127}';
       }
       description
        "This type represents object-identifiers restricted to 128
         sub-identifiers.
        
         In the value set and its semantics, this type is equivalent
         to the OBJECT IDENTIFIER type of the SMIv2.";
       reference
        "RFC 2578: Structure of Management Information Version 2
                   (SMIv2)";
     }
        
         In the value set and its semantics, this type is equivalent
         to the OBJECT IDENTIFIER type of the SMIv2.";
       reference
        "RFC 2578: Structure of Management Information Version 2
                   (SMIv2)";
     }
        
     typedef yang-identifier {
       type string {
         length "1..max";
         pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
         pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
       }
       description
         "A YANG identifier string as defined by the 'identifier'
          rule in Section 12 of RFC 6020.  An identifier must
          start with an alphabetic character or an underscore
          followed by an arbitrary sequence of alphabetic or
          numeric characters, underscores, hyphens, or dots.
        
     typedef yang-identifier {
       type string {
         length "1..max";
         pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
         pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
       }
       description
         "A YANG identifier string as defined by the 'identifier'
          rule in Section 12 of RFC 6020.  An identifier must
          start with an alphabetic character or an underscore
          followed by an arbitrary sequence of alphabetic or
          numeric characters, underscores, hyphens, or dots.
        
          A YANG identifier MUST NOT start with any possible
          combination of the lowercase or uppercase character
          sequence 'xml'.";
       reference
         "RFC 6020: YANG - A Data Modeling Language for the Network
                    Configuration Protocol (NETCONF)";
     }
        
          A YANG identifier MUST NOT start with any possible
          combination of the lowercase or uppercase character
          sequence 'xml'.";
       reference
         "RFC 6020: YANG - A Data Modeling Language for the Network
                    Configuration Protocol (NETCONF)";
     }
        
     /*** collection of types related to date and time***/
        
     /*** collection of types related to date and time***/
        
     typedef date-and-time {
       type string {
         pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
               + '(Z|[\+\-]\d{2}:\d{2})';
       }
       description
        "The date-and-time type is a profile of the ISO 8601
         standard for representation of dates and times using the
         Gregorian calendar.  The profile is defined by the
         date-time production in Section 5.6 of RFC 3339.
        
     typedef date-and-time {
       type string {
         pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
               + '(Z|[\+\-]\d{2}:\d{2})';
       }
       description
        "The date-and-time type is a profile of the ISO 8601
         standard for representation of dates and times using the
         Gregorian calendar.  The profile is defined by the
         date-time production in Section 5.6 of RFC 3339.
        

The date-and-time type is compatible with the dateTime XML schema type with the following notable exceptions:

日期和时间类型与dateTime XML架构类型兼容,但有以下显著的例外:

(a) The date-and-time type does not allow negative years.

(a) 日期和时间类型不允许负年份。

(b) The date-and-time time-offset -00:00 indicates an unknown time zone (see RFC 3339) while -00:00 and +00:00 and Z all represent the same time zone in dateTime.

(b) 日期和时间偏移量-00:00表示未知时区(请参见RFC 3339),而-00:00和+00:00以及Z都表示dateTime中的同一时区。

(c) The canonical format (see below) of data-and-time values differs from the canonical format used by the dateTime XML schema type, which requires all times to be in UTC using the time-offset 'Z'.

(c) 数据和时间值的规范格式(见下文)与dateTime XML架构类型使用的规范格式不同,后者要求所有时间都使用时间偏移量“Z”以UTC为单位。

This type is not equivalent to the DateAndTime textual convention of the SMIv2 since RFC 3339 uses a different separator between full-date and full-time and provides higher resolution of time-secfrac.

此类型不等同于SMIv2的DateAndTime文本约定,因为RFC 3339在完整日期和完整时间之间使用了不同的分隔符,并提供了更高的时间分辨率。

         The canonical format for date-and-time values with a known time
         zone uses a numeric time zone offset that is calculated using
         the device's configured known offset to UTC time.  A change of
         the device's offset to UTC time will cause date-and-time values
         to change accordingly.  Such changes might happen periodically
         in case a server follows automatically daylight saving time
         (DST) time zone offset changes.  The canonical format for
         date-and-time values with an unknown time zone (usually
         referring to the notion of local time) uses the time-offset
         -00:00.";
       reference
        "RFC 3339: Date and Time on the Internet: Timestamps
         RFC 2579: Textual Conventions for SMIv2
         XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
     }
        
         The canonical format for date-and-time values with a known time
         zone uses a numeric time zone offset that is calculated using
         the device's configured known offset to UTC time.  A change of
         the device's offset to UTC time will cause date-and-time values
         to change accordingly.  Such changes might happen periodically
         in case a server follows automatically daylight saving time
         (DST) time zone offset changes.  The canonical format for
         date-and-time values with an unknown time zone (usually
         referring to the notion of local time) uses the time-offset
         -00:00.";
       reference
        "RFC 3339: Date and Time on the Internet: Timestamps
         RFC 2579: Textual Conventions for SMIv2
         XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
     }
        
     typedef timeticks {
       type uint32;
       description
        "The timeticks type represents a non-negative integer that
         represents the time, modulo 2^32 (4294967296 decimal), in
         hundredths of a second between two epochs.  When a schema
         node is defined that uses this type, the description of
         the schema node identifies both of the reference epochs.
        
     typedef timeticks {
       type uint32;
       description
        "The timeticks type represents a non-negative integer that
         represents the time, modulo 2^32 (4294967296 decimal), in
         hundredths of a second between two epochs.  When a schema
         node is defined that uses this type, the description of
         the schema node identifies both of the reference epochs.
        
         In the value set and its semantics, this type is equivalent
         to the TimeTicks type of the SMIv2.";
       reference
        "RFC 2578: Structure of Management Information Version 2
                   (SMIv2)";
     }
        
         In the value set and its semantics, this type is equivalent
         to the TimeTicks type of the SMIv2.";
       reference
        "RFC 2578: Structure of Management Information Version 2
                   (SMIv2)";
     }
        
     typedef timestamp {
       type yang:timeticks;
       description
        "The timestamp type represents the value of an associated
         timeticks schema node at which a specific occurrence
         happened.  The specific occurrence must be defined in the
         description of any schema node defined using this type.  When
         the specific occurrence occurred prior to the last time the
         associated timeticks attribute was zero, then the timestamp
         value is zero.  Note that this requires all timestamp values
         to be reset to zero when the value of the associated timeticks
         attribute reaches 497+ days and wraps around to zero.
        
     typedef timestamp {
       type yang:timeticks;
       description
        "The timestamp type represents the value of an associated
         timeticks schema node at which a specific occurrence
         happened.  The specific occurrence must be defined in the
         description of any schema node defined using this type.  When
         the specific occurrence occurred prior to the last time the
         associated timeticks attribute was zero, then the timestamp
         value is zero.  Note that this requires all timestamp values
         to be reset to zero when the value of the associated timeticks
         attribute reaches 497+ days and wraps around to zero.
        

The associated timeticks schema node must be specified in the description of any schema node using this type.

必须在使用此类型的任何架构节点的描述中指定关联的timeticks架构节点。

         In the value set and its semantics, this type is equivalent
         to the TimeStamp textual convention of the SMIv2.";
       reference
        "RFC 2579: Textual Conventions for SMIv2";
     }
        
         In the value set and its semantics, this type is equivalent
         to the TimeStamp textual convention of the SMIv2.";
       reference
        "RFC 2579: Textual Conventions for SMIv2";
     }
        
     /*** collection of generic address types ***/
        
     /*** collection of generic address types ***/
        
     typedef phys-address {
       type string {
         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
       }
        
     typedef phys-address {
       type string {
         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
       }
        

description "Represents media- or physical-level addresses represented as a sequence octets, each octet represented by two hexadecimal numbers. Octets are separated by colons. The canonical representation uses lowercase characters.

描述“表示媒体或物理级别的地址,表示为序列八位字节,每个八位字节由两个十六进制数字表示。八位字节用冒号分隔。规范表示使用小写字符。

         In the value set and its semantics, this type is equivalent
         to the PhysAddress textual convention of the SMIv2.";
       reference
        "RFC 2579: Textual Conventions for SMIv2";
     }
        
         In the value set and its semantics, this type is equivalent
         to the PhysAddress textual convention of the SMIv2.";
       reference
        "RFC 2579: Textual Conventions for SMIv2";
     }
        
     typedef mac-address {
       type string {
         pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
       }
       description
        "The mac-address type represents an IEEE 802 MAC address.
         The canonical representation uses lowercase characters.
        
     typedef mac-address {
       type string {
         pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
       }
       description
        "The mac-address type represents an IEEE 802 MAC address.
         The canonical representation uses lowercase characters.
        
         In the value set and its semantics, this type is equivalent
         to the MacAddress textual convention of the SMIv2.";
       reference
        "IEEE 802: IEEE Standard for Local and Metropolitan Area
                   Networks: Overview and Architecture
         RFC 2579: Textual Conventions for SMIv2";
     }
        
         In the value set and its semantics, this type is equivalent
         to the MacAddress textual convention of the SMIv2.";
       reference
        "IEEE 802: IEEE Standard for Local and Metropolitan Area
                   Networks: Overview and Architecture
         RFC 2579: Textual Conventions for SMIv2";
     }
        
     /*** collection of XML-specific types ***/
        
     /*** collection of XML-specific types ***/
        
     typedef xpath1.0 {
       type string;
       description
        "This type represents an XPATH 1.0 expression.
        
     typedef xpath1.0 {
       type string;
       description
        "This type represents an XPATH 1.0 expression.
        
         When a schema node is defined that uses this type, the
         description of the schema node MUST specify the XPath
         context in which the XPath expression is evaluated.";
       reference
        "XPATH: XML Path Language (XPath) Version 1.0";
     }
        
         When a schema node is defined that uses this type, the
         description of the schema node MUST specify the XPath
         context in which the XPath expression is evaluated.";
       reference
        "XPATH: XML Path Language (XPath) Version 1.0";
     }
        
     /*** collection of string types ***/
        
     /*** collection of string types ***/
        
     typedef hex-string {
       type string {
         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
       }
        
     typedef hex-string {
       type string {
         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
       }
        
       description
        "A hexadecimal string with octets represented as hex digits
         separated by colons.  The canonical representation uses
         lowercase characters.";
     }
        
       description
        "A hexadecimal string with octets represented as hex digits
         separated by colons.  The canonical representation uses
         lowercase characters.";
     }
        
     typedef uuid {
       type string {
         pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
               + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
       }
       description
        "A Universally Unique IDentifier in the string representation
         defined in RFC 4122.  The canonical representation uses
         lowercase characters.
        
     typedef uuid {
       type string {
         pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
               + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
       }
       description
        "A Universally Unique IDentifier in the string representation
         defined in RFC 4122.  The canonical representation uses
         lowercase characters.
        
         The following is an example of a UUID in string representation:
         f81d4fae-7dec-11d0-a765-00a0c91e6bf6
         ";
       reference
        "RFC 4122: A Universally Unique IDentifier (UUID) URN
                   Namespace";
     }
        
         The following is an example of a UUID in string representation:
         f81d4fae-7dec-11d0-a765-00a0c91e6bf6
         ";
       reference
        "RFC 4122: A Universally Unique IDentifier (UUID) URN
                   Namespace";
     }
        
     typedef dotted-quad {
       type string {
         pattern
           '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
         + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
       }
       description
         "An unsigned 32-bit number expressed in the dotted-quad
          notation, i.e., four octets written as decimal numbers
          and separated with the '.' (full stop) character.";
     }
   }
        
     typedef dotted-quad {
       type string {
         pattern
           '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
         + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
       }
       description
         "An unsigned 32-bit number expressed in the dotted-quad
          notation, i.e., four octets written as decimal numbers
          and separated with the '.' (full stop) character.";
     }
   }
        

<CODE ENDS>

<代码结束>

4. Internet-Specific Derived Types
4. 特定于Internet的派生类型
   The ietf-inet-types YANG module references [RFC0768], [RFC0791],
   [RFC0793], [RFC0952], [RFC1034], [RFC1123], [RFC1930], [RFC2460],
   [RFC2474], [RFC2780], [RFC2782], [RFC3289], [RFC3305], [RFC3595],
   [RFC3986], [RFC4001], [RFC4007], [RFC4271], [RFC4291], [RFC4340],
   [RFC4960], [RFC5017], [RFC5890], [RFC5952], and [RFC6793].
        
   The ietf-inet-types YANG module references [RFC0768], [RFC0791],
   [RFC0793], [RFC0952], [RFC1034], [RFC1123], [RFC1930], [RFC2460],
   [RFC2474], [RFC2780], [RFC2782], [RFC3289], [RFC3305], [RFC3595],
   [RFC3986], [RFC4001], [RFC4007], [RFC4271], [RFC4291], [RFC4340],
   [RFC4960], [RFC5017], [RFC5890], [RFC5952], and [RFC6793].
        
   <CODE BEGINS> file "ietf-inet-types@2013-07-15.yang"
        
   <CODE BEGINS> file "ietf-inet-types@2013-07-15.yang"
        

module ietf-inet-types {

模块ietf inet类型{

     namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
     prefix "inet";
        
     namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
     prefix "inet";
        

organization "IETF NETMOD (NETCONF Data Modeling Language) Working Group";

组织“IETF NETMOD(NETCONF数据建模语言)工作组”;

     contact
      "WG Web:   <http://tools.ietf.org/wg/netmod/>
       WG List:  <mailto:netmod@ietf.org>
        
     contact
      "WG Web:   <http://tools.ietf.org/wg/netmod/>
       WG List:  <mailto:netmod@ietf.org>
        
       WG Chair: David Kessens
                 <mailto:david.kessens@nsn.com>
        
       WG Chair: David Kessens
                 <mailto:david.kessens@nsn.com>
        
       WG Chair: Juergen Schoenwaelder
                 <mailto:j.schoenwaelder@jacobs-university.de>
        
       WG Chair: Juergen Schoenwaelder
                 <mailto:j.schoenwaelder@jacobs-university.de>
        
       Editor:   Juergen Schoenwaelder
                 <mailto:j.schoenwaelder@jacobs-university.de>";
        
       Editor:   Juergen Schoenwaelder
                 <mailto:j.schoenwaelder@jacobs-university.de>";
        

description "This module contains a collection of generally useful derived YANG data types for Internet addresses and related things.

description“此模块包含Internet地址和相关内容的常用派生数据类型集合。

Copyright (c) 2013 IETF Trust and the persons identified as authors of the code. All rights reserved.

版权所有(c)2013 IETF信托基金和被确定为代码作者的人员。版权所有。

Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info).

根据IETF信托有关IETF文件的法律规定第4.c节规定的简化BSD许可证中包含的许可条款,允许以源代码和二进制格式重新分发和使用,无论是否修改(http://trustee.ietf.org/license-info).

This version of this YANG module is part of RFC 6991; see the RFC itself for full legal notices.";

此模块的此版本是RFC 6991的一部分;有关完整的法律通知,请参见RFC本身。“;

     revision 2013-07-15 {
       description
        "This revision adds the following new data types:
         - ip-address-no-zone
         - ipv4-address-no-zone
         - ipv6-address-no-zone";
       reference
        "RFC 6991: Common YANG Data Types";
        
     revision 2013-07-15 {
       description
        "This revision adds the following new data types:
         - ip-address-no-zone
         - ipv4-address-no-zone
         - ipv6-address-no-zone";
       reference
        "RFC 6991: Common YANG Data Types";
        

}

}

     revision 2010-09-24 {
       description
        "Initial revision.";
       reference
        "RFC 6021: Common YANG Data Types";
     }
        
     revision 2010-09-24 {
       description
        "Initial revision.";
       reference
        "RFC 6021: Common YANG Data Types";
     }
        
     /*** collection of types related to protocol fields ***/
        
     /*** collection of types related to protocol fields ***/
        
     typedef ip-version {
       type enumeration {
         enum unknown {
           value "0";
           description
            "An unknown or unspecified version of the Internet
             protocol.";
         }
         enum ipv4 {
           value "1";
           description
            "The IPv4 protocol as defined in RFC 791.";
         }
         enum ipv6 {
           value "2";
           description
            "The IPv6 protocol as defined in RFC 2460.";
         }
       }
       description
        "This value represents the version of the IP protocol.
        
     typedef ip-version {
       type enumeration {
         enum unknown {
           value "0";
           description
            "An unknown or unspecified version of the Internet
             protocol.";
         }
         enum ipv4 {
           value "1";
           description
            "The IPv4 protocol as defined in RFC 791.";
         }
         enum ipv6 {
           value "2";
           description
            "The IPv6 protocol as defined in RFC 2460.";
         }
       }
       description
        "This value represents the version of the IP protocol.
        
         In the value set and its semantics, this type is equivalent
         to the InetVersion textual convention of the SMIv2.";
       reference
        "RFC  791: Internet Protocol
         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
         RFC 4001: Textual Conventions for Internet Network Addresses";
     }
        
         In the value set and its semantics, this type is equivalent
         to the InetVersion textual convention of the SMIv2.";
       reference
        "RFC  791: Internet Protocol
         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
         RFC 4001: Textual Conventions for Internet Network Addresses";
     }
        
     typedef dscp {
       type uint8 {
         range "0..63";
       }
       description
        "The dscp type represents a Differentiated Services Code Point
         that may be used for marking packets in a traffic stream.
        
     typedef dscp {
       type uint8 {
         range "0..63";
       }
       description
        "The dscp type represents a Differentiated Services Code Point
         that may be used for marking packets in a traffic stream.
        
         In the value set and its semantics, this type is equivalent
         to the Dscp textual convention of the SMIv2.";
       reference
        "RFC 3289: Management Information Base for the Differentiated
                   Services Architecture
         RFC 2474: Definition of the Differentiated Services Field
                   (DS Field) in the IPv4 and IPv6 Headers
         RFC 2780: IANA Allocation Guidelines For Values In
                   the Internet Protocol and Related Headers";
     }
        
         In the value set and its semantics, this type is equivalent
         to the Dscp textual convention of the SMIv2.";
       reference
        "RFC 3289: Management Information Base for the Differentiated
                   Services Architecture
         RFC 2474: Definition of the Differentiated Services Field
                   (DS Field) in the IPv4 and IPv6 Headers
         RFC 2780: IANA Allocation Guidelines For Values In
                   the Internet Protocol and Related Headers";
     }
        
     typedef ipv6-flow-label {
       type uint32 {
         range "0..1048575";
       }
       description
        "The ipv6-flow-label type represents the flow identifier or Flow
         Label in an IPv6 packet header that may be used to
         discriminate traffic flows.
        
     typedef ipv6-flow-label {
       type uint32 {
         range "0..1048575";
       }
       description
        "The ipv6-flow-label type represents the flow identifier or Flow
         Label in an IPv6 packet header that may be used to
         discriminate traffic flows.
        
         In the value set and its semantics, this type is equivalent
         to the IPv6FlowLabel textual convention of the SMIv2.";
       reference
        "RFC 3595: Textual Conventions for IPv6 Flow Label
         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
     }
        
         In the value set and its semantics, this type is equivalent
         to the IPv6FlowLabel textual convention of the SMIv2.";
       reference
        "RFC 3595: Textual Conventions for IPv6 Flow Label
         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
     }
        
     typedef port-number {
       type uint16 {
         range "0..65535";
       }
       description
        "The port-number type represents a 16-bit port number of an
         Internet transport-layer protocol such as UDP, TCP, DCCP, or
         SCTP.  Port numbers are assigned by IANA.  A current list of
         all assignments is available from <http://www.iana.org/>.
        
     typedef port-number {
       type uint16 {
         range "0..65535";
       }
       description
        "The port-number type represents a 16-bit port number of an
         Internet transport-layer protocol such as UDP, TCP, DCCP, or
         SCTP.  Port numbers are assigned by IANA.  A current list of
         all assignments is available from <http://www.iana.org/>.
        
         Note that the port number value zero is reserved by IANA.  In
         situations where the value zero does not make sense, it can
         be excluded by subtyping the port-number type.
         In the value set and its semantics, this type is equivalent
         to the InetPortNumber textual convention of the SMIv2.";
       reference
        "RFC  768: User Datagram Protocol
         RFC  793: Transmission Control Protocol
         RFC 4960: Stream Control Transmission Protocol
         RFC 4340: Datagram Congestion Control Protocol (DCCP)
         RFC 4001: Textual Conventions for Internet Network Addresses";
        
         Note that the port number value zero is reserved by IANA.  In
         situations where the value zero does not make sense, it can
         be excluded by subtyping the port-number type.
         In the value set and its semantics, this type is equivalent
         to the InetPortNumber textual convention of the SMIv2.";
       reference
        "RFC  768: User Datagram Protocol
         RFC  793: Transmission Control Protocol
         RFC 4960: Stream Control Transmission Protocol
         RFC 4340: Datagram Congestion Control Protocol (DCCP)
         RFC 4001: Textual Conventions for Internet Network Addresses";
        

}

}

     /*** collection of types related to autonomous systems ***/
        
     /*** collection of types related to autonomous systems ***/
        
     typedef as-number {
       type uint32;
       description
        "The as-number type represents autonomous system numbers
         which identify an Autonomous System (AS).  An AS is a set
         of routers under a single technical administration, using
         an interior gateway protocol and common metrics to route
         packets within the AS, and using an exterior gateway
         protocol to route packets to other ASes.  IANA maintains
         the AS number space and has delegated large parts to the
         regional registries.
        
     typedef as-number {
       type uint32;
       description
        "The as-number type represents autonomous system numbers
         which identify an Autonomous System (AS).  An AS is a set
         of routers under a single technical administration, using
         an interior gateway protocol and common metrics to route
         packets within the AS, and using an exterior gateway
         protocol to route packets to other ASes.  IANA maintains
         the AS number space and has delegated large parts to the
         regional registries.
        

Autonomous system numbers were originally limited to 16 bits. BGP extensions have enlarged the autonomous system number space to 32 bits. This type therefore uses an uint32 base type without a range restriction in order to support a larger autonomous system number space.

自治系统编号最初限制为16位。BGP扩展将自治系统的数字空间扩大到32位。因此,该类型使用不带范围限制的uint32基类型,以支持更大的自治系统编号空间。

         In the value set and its semantics, this type is equivalent
         to the InetAutonomousSystemNumber textual convention of
         the SMIv2.";
       reference
        "RFC 1930: Guidelines for creation, selection, and registration
                   of an Autonomous System (AS)
         RFC 4271: A Border Gateway Protocol 4 (BGP-4)
         RFC 4001: Textual Conventions for Internet Network Addresses
         RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
                   Number Space";
     }
        
         In the value set and its semantics, this type is equivalent
         to the InetAutonomousSystemNumber textual convention of
         the SMIv2.";
       reference
        "RFC 1930: Guidelines for creation, selection, and registration
                   of an Autonomous System (AS)
         RFC 4271: A Border Gateway Protocol 4 (BGP-4)
         RFC 4001: Textual Conventions for Internet Network Addresses
         RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
                   Number Space";
     }
        
     /*** collection of types related to IP addresses and hostnames ***/
        
     /*** collection of types related to IP addresses and hostnames ***/
        
     typedef ip-address {
       type union {
         type inet:ipv4-address;
         type inet:ipv6-address;
       }
       description
        "The ip-address type represents an IP address and is IP
         version neutral.  The format of the textual representation
         implies the IP version.  This type supports scoped addresses
         by allowing zone identifiers in the address format.";
       reference
        "RFC 4007: IPv6 Scoped Address Architecture";
        
     typedef ip-address {
       type union {
         type inet:ipv4-address;
         type inet:ipv6-address;
       }
       description
        "The ip-address type represents an IP address and is IP
         version neutral.  The format of the textual representation
         implies the IP version.  This type supports scoped addresses
         by allowing zone identifiers in the address format.";
       reference
        "RFC 4007: IPv6 Scoped Address Architecture";
        

}

}

     typedef ipv4-address {
       type string {
         pattern
           '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
         +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
         + '(%[\p{N}\p{L}]+)?';
       }
       description
         "The ipv4-address type represents an IPv4 address in
          dotted-quad notation.  The IPv4 address may include a zone
          index, separated by a % sign.
        
     typedef ipv4-address {
       type string {
         pattern
           '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
         +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
         + '(%[\p{N}\p{L}]+)?';
       }
       description
         "The ipv4-address type represents an IPv4 address in
          dotted-quad notation.  The IPv4 address may include a zone
          index, separated by a % sign.
        

The zone index is used to disambiguate identical address values. For link-local addresses, the zone index will typically be the interface index number or the name of an interface. If the zone index is not present, the default zone of the device will be used.

区域索引用于消除相同地址值的歧义。对于链路本地地址,区域索引通常是接口索引号或接口名称。如果区域索引不存在,将使用设备的默认区域。

          The canonical format for the zone index is the numerical
          format";
     }
        
          The canonical format for the zone index is the numerical
          format";
     }
        
     typedef ipv6-address {
       type string {
         pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
               + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
               + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
               + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
               + '(%[\p{N}\p{L}]+)?';
         pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
               + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
               + '(%.+)?';
       }
       description
        "The ipv6-address type represents an IPv6 address in full,
         mixed, shortened, and shortened-mixed notation.  The IPv6
         address may include a zone index, separated by a % sign.
        
     typedef ipv6-address {
       type string {
         pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
               + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
               + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
               + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
               + '(%[\p{N}\p{L}]+)?';
         pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
               + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
               + '(%.+)?';
       }
       description
        "The ipv6-address type represents an IPv6 address in full,
         mixed, shortened, and shortened-mixed notation.  The IPv6
         address may include a zone index, separated by a % sign.
        

The zone index is used to disambiguate identical address values. For link-local addresses, the zone index will typically be the interface index number or the name of an interface. If the zone index is not present, the default zone of the device will be used.

区域索引用于消除相同地址值的歧义。对于链路本地地址,区域索引通常是接口索引号或接口名称。如果区域索引不存在,将使用设备的默认区域。

         The canonical format of IPv6 addresses uses the textual
         representation defined in Section 4 of RFC 5952.  The
         canonical format for the zone index is the numerical
         format as described in Section 11.2 of RFC 4007.";
       reference
        "RFC 4291: IP Version 6 Addressing Architecture
         RFC 4007: IPv6 Scoped Address Architecture
         RFC 5952: A Recommendation for IPv6 Address Text
                   Representation";
     }
        
         The canonical format of IPv6 addresses uses the textual
         representation defined in Section 4 of RFC 5952.  The
         canonical format for the zone index is the numerical
         format as described in Section 11.2 of RFC 4007.";
       reference
        "RFC 4291: IP Version 6 Addressing Architecture
         RFC 4007: IPv6 Scoped Address Architecture
         RFC 5952: A Recommendation for IPv6 Address Text
                   Representation";
     }
        
     typedef ip-address-no-zone {
       type union {
         type inet:ipv4-address-no-zone;
         type inet:ipv6-address-no-zone;
       }
       description
        "The ip-address-no-zone type represents an IP address and is
         IP version neutral.  The format of the textual representation
         implies the IP version.  This type does not support scoped
         addresses since it does not allow zone identifiers in the
         address format.";
       reference
        "RFC 4007: IPv6 Scoped Address Architecture";
     }
        
     typedef ip-address-no-zone {
       type union {
         type inet:ipv4-address-no-zone;
         type inet:ipv6-address-no-zone;
       }
       description
        "The ip-address-no-zone type represents an IP address and is
         IP version neutral.  The format of the textual representation
         implies the IP version.  This type does not support scoped
         addresses since it does not allow zone identifiers in the
         address format.";
       reference
        "RFC 4007: IPv6 Scoped Address Architecture";
     }
        
     typedef ipv4-address-no-zone {
       type inet:ipv4-address {
         pattern '[0-9\.]*';
       }
       description
         "An IPv4 address without a zone index.  This type, derived from
          ipv4-address, may be used in situations where the zone is
          known from the context and hence no zone index is needed.";
     }
        
     typedef ipv4-address-no-zone {
       type inet:ipv4-address {
         pattern '[0-9\.]*';
       }
       description
         "An IPv4 address without a zone index.  This type, derived from
          ipv4-address, may be used in situations where the zone is
          known from the context and hence no zone index is needed.";
     }
        
     typedef ipv6-address-no-zone {
       type inet:ipv6-address {
         pattern '[0-9a-fA-F:\.]*';
       }
       description
         "An IPv6 address without a zone index.  This type, derived from
          ipv6-address, may be used in situations where the zone is
          known from the context and hence no zone index is needed.";
       reference
        "RFC 4291: IP Version 6 Addressing Architecture
         RFC 4007: IPv6 Scoped Address Architecture
         RFC 5952: A Recommendation for IPv6 Address Text
        
     typedef ipv6-address-no-zone {
       type inet:ipv6-address {
         pattern '[0-9a-fA-F:\.]*';
       }
       description
         "An IPv6 address without a zone index.  This type, derived from
          ipv6-address, may be used in situations where the zone is
          known from the context and hence no zone index is needed.";
       reference
        "RFC 4291: IP Version 6 Addressing Architecture
         RFC 4007: IPv6 Scoped Address Architecture
         RFC 5952: A Recommendation for IPv6 Address Text
        
                   Representation";
     }
        
                   Representation";
     }
        
     typedef ip-prefix {
       type union {
         type inet:ipv4-prefix;
         type inet:ipv6-prefix;
       }
       description
        "The ip-prefix type represents an IP prefix and is IP
         version neutral.  The format of the textual representations
         implies the IP version.";
     }
        
     typedef ip-prefix {
       type union {
         type inet:ipv4-prefix;
         type inet:ipv6-prefix;
       }
       description
        "The ip-prefix type represents an IP prefix and is IP
         version neutral.  The format of the textual representations
         implies the IP version.";
     }
        
     typedef ipv4-prefix {
       type string {
         pattern
            '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
          +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
          + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
       }
       description
        "The ipv4-prefix type represents an IPv4 address prefix.
         The prefix length is given by the number following the
         slash character and must be less than or equal to 32.
        
     typedef ipv4-prefix {
       type string {
         pattern
            '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
          +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
          + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
       }
       description
        "The ipv4-prefix type represents an IPv4 address prefix.
         The prefix length is given by the number following the
         slash character and must be less than or equal to 32.
        

A prefix length value of n corresponds to an IP address mask that has n contiguous 1-bits from the most significant bit (MSB) and all other bits set to 0.

前缀长度值n对应于IP地址掩码,该掩码从最高有效位(MSB)开始有n个连续的1位,所有其他位设置为0。

         The canonical format of an IPv4 prefix has all bits of
         the IPv4 address set to zero that are not part of the
         IPv4 prefix.";
     }
        
         The canonical format of an IPv4 prefix has all bits of
         the IPv4 address set to zero that are not part of the
         IPv4 prefix.";
     }
        
     typedef ipv6-prefix {
       type string {
         pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
               + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
               + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
               + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
               + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
         pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
               + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
               + '(/.+)';
       }
        
     typedef ipv6-prefix {
       type string {
         pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
               + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
               + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
               + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
               + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
         pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
               + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
               + '(/.+)';
       }
        

description "The ipv6-prefix type represents an IPv6 address prefix. The prefix length is given by the number following the slash character and must be less than or equal to 128.

description“ipv6前缀类型表示ipv6地址前缀。前缀长度由斜杠字符后面的数字给出,并且必须小于或等于128。

A prefix length value of n corresponds to an IP address mask that has n contiguous 1-bits from the most significant bit (MSB) and all other bits set to 0.

前缀长度值n对应于IP地址掩码,该掩码从最高有效位(MSB)开始有n个连续的1位,所有其他位设置为0。

The IPv6 address should have all bits that do not belong to the prefix set to zero.

IPv6地址应将不属于前缀的所有位设置为零。

         The canonical format of an IPv6 prefix has all bits of
         the IPv6 address set to zero that are not part of the
         IPv6 prefix.  Furthermore, the IPv6 address is represented
         as defined in Section 4 of RFC 5952.";
       reference
        "RFC 5952: A Recommendation for IPv6 Address Text
                   Representation";
     }
        
         The canonical format of an IPv6 prefix has all bits of
         the IPv6 address set to zero that are not part of the
         IPv6 prefix.  Furthermore, the IPv6 address is represented
         as defined in Section 4 of RFC 5952.";
       reference
        "RFC 5952: A Recommendation for IPv6 Address Text
                   Representation";
     }
        
     /*** collection of domain name and URI types ***/
        
     /*** collection of domain name and URI types ***/
        
     typedef domain-name {
       type string {
         pattern
           '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
         + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
         + '|\.';
         length "1..253";
       }
       description
        "The domain-name type represents a DNS domain name.  The
         name SHOULD be fully qualified whenever possible.
        
     typedef domain-name {
       type string {
         pattern
           '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
         + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
         + '|\.';
         length "1..253";
       }
       description
        "The domain-name type represents a DNS domain name.  The
         name SHOULD be fully qualified whenever possible.
        

Internet domain names are only loosely specified. Section 3.5 of RFC 1034 recommends a syntax (modified in Section 2.1 of RFC 1123). The pattern above is intended to allow for current practice in domain name use, and some possible future expansion. It is designed to hold various types of domain names, including names used for A or AAAA records (host names) and other records, such as SRV records. Note that Internet host names have a stricter syntax (described in RFC 952) than the DNS recommendations in RFCs 1034 and 1123, and that systems that want to store host names in schema nodes using the domain-name type are recommended to adhere to this stricter standard to ensure interoperability.

Internet域名的指定很松散。RFC 1034的第3.5节推荐了一种语法(在RFC 1123的第2.1节中进行了修改)。上述模式旨在考虑当前域名使用的实践,以及未来可能的扩展。它设计用于保存各种类型的域名,包括用于A或AAAA记录(主机名)和其他记录(如SRV记录)的名称。请注意,与RFCs 1034和1123中的DNS建议相比,Internet主机名具有更严格的语法(如RFC 952所述),并且建议希望使用域名类型在架构节点中存储主机名的系统遵守此更严格的标准,以确保互操作性。

The encoding of DNS names in the DNS protocol is limited to 255 characters. Since the encoding consists of labels prefixed by a length bytes and there is a trailing NULL byte, only 253 characters can appear in the textual dotted notation.

DNS协议中DNS名称的编码限制为255个字符。由于编码由前缀为长度字节的标签组成,并且后面有一个空字节,因此文本虚线表示法中只能出现253个字符。

The description clause of schema nodes using the domain-name type MUST describe when and how these names are resolved to IP addresses. Note that the resolution of a domain-name value may require to query multiple DNS records (e.g., A for IPv4 and AAAA for IPv6). The order of the resolution process and which DNS record takes precedence can either be defined explicitly or may depend on the configuration of the resolver.

使用域名类型的架构节点的description子句必须描述何时以及如何将这些名称解析为IP地址。请注意,域名值的解析可能需要查询多个DNS记录(例如,IPv4为a,IPv6为AAAA)。解析过程的顺序以及哪个DNS记录优先可以明确定义,也可以取决于解析程序的配置。

         Domain-name values use the US-ASCII encoding.  Their canonical
         format uses lowercase US-ASCII characters.  Internationalized
         domain names MUST be A-labels as per RFC 5890.";
       reference
        "RFC  952: DoD Internet Host Table Specification
         RFC 1034: Domain Names - Concepts and Facilities
         RFC 1123: Requirements for Internet Hosts -- Application
                   and Support
         RFC 2782: A DNS RR for specifying the location of services
                   (DNS SRV)
         RFC 5890: Internationalized Domain Names in Applications
                   (IDNA): Definitions and Document Framework";
     }
        
         Domain-name values use the US-ASCII encoding.  Their canonical
         format uses lowercase US-ASCII characters.  Internationalized
         domain names MUST be A-labels as per RFC 5890.";
       reference
        "RFC  952: DoD Internet Host Table Specification
         RFC 1034: Domain Names - Concepts and Facilities
         RFC 1123: Requirements for Internet Hosts -- Application
                   and Support
         RFC 2782: A DNS RR for specifying the location of services
                   (DNS SRV)
         RFC 5890: Internationalized Domain Names in Applications
                   (IDNA): Definitions and Document Framework";
     }
        
     typedef host {
       type union {
         type inet:ip-address;
         type inet:domain-name;
       }
       description
        "The host type represents either an IP address or a DNS
         domain name.";
     }
        
     typedef host {
       type union {
         type inet:ip-address;
         type inet:domain-name;
       }
       description
        "The host type represents either an IP address or a DNS
         domain name.";
     }
        
     typedef uri {
       type string;
       description
        "The uri type represents a Uniform Resource Identifier
         (URI) as defined by STD 66.
        
     typedef uri {
       type string;
       description
        "The uri type represents a Uniform Resource Identifier
         (URI) as defined by STD 66.
        

Objects using the uri type MUST be in US-ASCII encoding, and MUST be normalized as described by RFC 3986 Sections 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary

使用uri类型的对象必须采用US-ASCII编码,并且必须按照RFC 3986第6.2.1、6.2.2.1和6.2.2.2节的描述进行规范化。所有不必要的

percent-encoding is removed, and all case-insensitive characters are set to lowercase except for hexadecimal digits, which are normalized to uppercase as described in Section 6.2.2.1.

删除百分比编码,除十六进制数字外,所有不区分大小写的字符都设置为小写,十六进制数字标准化为大写,如第6.2.2.1节所述。

The purpose of this normalization is to help provide unique URIs. Note that this normalization is not sufficient to provide uniqueness. Two URIs that are textually distinct after this normalization may still be equivalent.

此规范化的目的是帮助提供唯一的URI。请注意,这种规范化不足以提供唯一性。在此规范化之后,文本上不同的两个URI可能仍然是等效的。

Objects using the uri type may restrict the schemes that they permit. For example, 'data:' and 'urn:' schemes might not be appropriate.

使用uri类型的对象可能会限制其允许的方案。例如,“data:”和“urn:”方案可能不合适。

A zero-length URI is not a valid URI. This can be used to express 'URI absent' where required.

长度为零的URI不是有效的URI。在需要时,这可以用来表示“URI缺席”。

         In the value set and its semantics, this type is equivalent
         to the Uri SMIv2 textual convention defined in RFC 5017.";
       reference
        "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
         RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
                   Group: Uniform Resource Identifiers (URIs), URLs,
                   and Uniform Resource Names (URNs): Clarifications
                   and Recommendations
         RFC 5017: MIB Textual Conventions for Uniform Resource
                   Identifiers (URIs)";
     }
        
         In the value set and its semantics, this type is equivalent
         to the Uri SMIv2 textual convention defined in RFC 5017.";
       reference
        "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
         RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
                   Group: Uniform Resource Identifiers (URIs), URLs,
                   and Uniform Resource Names (URNs): Clarifications
                   and Recommendations
         RFC 5017: MIB Textual Conventions for Uniform Resource
                   Identifiers (URIs)";
     }
        

}

}

<CODE ENDS>

<代码结束>

5. IANA Considerations
5. IANA考虑

This document registers two URIs in the IETF XML registry [RFC3688]. Following the format in RFC 3688, the following registrations have been made.

本文档在IETF XML注册表[RFC3688]中注册了两个URI。按照RFC 3688中的格式,进行了以下注册。

URI: urn:ietf:params:xml:ns:yang:ietf-yang-types Registrant Contact: The NETMOD WG of the IETF. XML: N/A, the requested URI is an XML namespace.

URI:urn:ietf:params:xml:ns:yang:ietf-yang类型注册人联系人:ietf的NETMOD工作组。XML:N/A,请求的URI是一个XML名称空间。

URI: urn:ietf:params:xml:ns:yang:ietf-inet-types Registrant Contact: The NETMOD WG of the IETF. XML: N/A, the requested URI is an XML namespace.

URI:urn:ietf:params:xml:ns:yang:ietf inet类型注册人联系人:ietf的NETMOD工作组。XML:N/A,请求的URI是一个XML名称空间。

This document registers two YANG modules in the YANG Module Names registry [RFC6020].

本文件在YANG模块名称注册表[RFC6020]中注册了两个YANG模块。

     name:         ietf-yang-types
     namespace:    urn:ietf:params:xml:ns:yang:ietf-yang-types
     prefix:       yang
     reference:    RFC 6991
        
     name:         ietf-yang-types
     namespace:    urn:ietf:params:xml:ns:yang:ietf-yang-types
     prefix:       yang
     reference:    RFC 6991
        
     name:         ietf-inet-types
     namespace:    urn:ietf:params:xml:ns:yang:ietf-inet-types
     prefix:       inet
     reference:    RFC 6991
        
     name:         ietf-inet-types
     namespace:    urn:ietf:params:xml:ns:yang:ietf-inet-types
     prefix:       inet
     reference:    RFC 6991
        
6. Security Considerations
6. 安全考虑

This document defines common data types using the YANG data modeling language. The definitions themselves have no security impact on the Internet, but the usage of these definitions in concrete YANG modules might have. The security considerations spelled out in the YANG specification [RFC6020] apply for this document as well.

本文档使用YANG数据建模语言定义通用数据类型。这些定义本身对Internet没有安全影响,但在具体模块中使用这些定义可能会产生影响。YANG规范[RFC6020]中规定的安全注意事项也适用于本文件。

7. Contributors
7. 贡献者

The following people contributed significantly to the initial version of this document:

以下人员对本文件的初始版本做出了重大贡献:

- Andy Bierman (Brocade) - Martin Bjorklund (Tail-f Systems) - Balazs Lengyel (Ericsson) - David Partain (Ericsson) - Phil Shafer (Juniper Networks)

- 安迪·比尔曼(Brocade)-马丁·比约克隆德(Tail-f系统)-巴拉兹·伦杰尔(爱立信)-大卫·帕坦(爱立信)-菲尔·沙弗(Juniper Networks)

8. Acknowledgments
8. 致谢

The editor wishes to thank the following individuals for providing helpful comments on various versions of this document: Andy Bierman, Martin Bjorklund, Benoit Claise, Joel M. Halpern, Ladislav Lhotka, Lars-Johan Liman, and Dan Romascanu.

编辑谨感谢以下人士就本文件的不同版本提供了有益的意见:安迪·比尔曼、马丁·比约克隆德、贝诺特·克莱斯、乔尔·哈尔佩恩、拉迪斯拉夫·洛特卡、拉尔斯·约翰·利曼和丹·罗马斯坎努。

Juergen Schoenwaelder was partly funded by Flamingo, a Network of Excellence project (ICT-318488) supported by the European Commission under its Seventh Framework Programme.

Juergen Schoenwaeld的部分资金来自Flamingo,这是一个卓越网络项目(ICT-318488),由欧盟委员会在其第七个框架计划下支持。

9. References
9. 工具书类
9.1. Normative References
9.1. 规范性引用文件

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[RFC3339] Klyne, G., Ed. and C. Newman, "Date and Time on the Internet: Timestamps", RFC 3339, July 2002.

[RFC3339]Klyne,G.,Ed.和C.Newman,“互联网上的日期和时间:时间戳”,RFC33392002年7月。

[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, January 2004.

[RFC3688]Mealling,M.“IETF XML注册表”,BCP 81,RFC 3688,2004年1月。

[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005.

[RFC3986]Berners Lee,T.,Fielding,R.,和L.Masinter,“统一资源标识符(URI):通用语法”,STD 66,RFC 3986,2005年1月。

[RFC4007] Deering, S., Haberman, B., Jinmei, T., Nordmark, E., and B. Zill, "IPv6 Scoped Address Architecture", RFC 4007, March 2005.

[RFC4007]Deering,S.,Haberman,B.,Jinmei,T.,Nordmark,E.,和B.Zill,“IPv6作用域地址体系结构”,RFC 4007,2005年3月。

[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally Unique IDentifier (UUID) URN Namespace", RFC 4122, July 2005.

[RFC4122]Leach,P.,Mealling,M.和R.Salz,“通用唯一标识符(UUID)URN名称空间”,RFC 4122,2005年7月。

[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing Architecture", RFC 4291, February 2006.

[RFC4291]Hinden,R.和S.Deering,“IP版本6寻址体系结构”,RFC 42912006年2月。

[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, October 2010.

[RFC6020]Bjorklund,M.,Ed.“YANG-网络配置协议(NETCONF)的数据建模语言”,RFC6020,2010年10月。

[XPATH] Clark, J. and S. DeRose, "XML Path Language (XPath) Version 1.0", World Wide Web Consortium Recommendation REC-xpath-19991116, November 1999, <http://www.w3.org/TR/1999/REC-xpath-19991116>.

[XPATH]Clark,J.和S.DeRose,“XML路径语言(XPATH)1.0版”,万维网联盟建议REC-XPATH-19991116,1999年11月<http://www.w3.org/TR/1999/REC-xpath-19991116>.

9.2. Informative References
9.2. 资料性引用

[IEEE802] IEEE, "IEEE Standard for Local and Metropolitan Area Networks: Overview and Architecture", IEEE Std. 802- 2001, 2001.

[IEEE802]IEEE,“局域网和城域网的IEEE标准:概述和体系结构”,IEEE标准802-2001,2001。

[ISO9834-1] ISO/IEC, "Information technology -- Open Systems Interconnection -- Procedures for the operation of OSI Registration Authorities: General procedures and top arcs of the ASN.1 Object Identifier tree", ISO/ IEC 9834-1:2008, 2008.

[ISO9834-1]ISO/IEC,“信息技术——开放系统互连——OSI注册机构的操作程序:ASN.1对象标识符树的一般程序和顶弧”,ISO/IEC 9834-1:2008。

[RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, August 1980.

[RFC0768]Postel,J.,“用户数据报协议”,STD 6,RFC 768,1980年8月。

[RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, September 1981.

[RFC0791]Postel,J.,“互联网协议”,STD 5,RFC 7911981年9月。

[RFC0793] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, September 1981.

[RFC0793]Postel,J.,“传输控制协议”,标准7,RFC 793,1981年9月。

[RFC0952] Harrenstien, K., Stahl, M., and E. Feinler, "DoD Internet host table specification", RFC 952, October 1985.

[RFC0952]Harrenstien,K.,Stahl,M.和E.Feinler,“国防部互联网主机表规范”,RFC 952,1985年10月。

[RFC1034] Mockapetris, P., "Domain names - concepts and facilities", STD 13, RFC 1034, November 1987.

[RFC1034]Mockapetris,P.,“域名-概念和设施”,STD 13,RFC 1034,1987年11月。

[RFC1123] Braden, R., "Requirements for Internet Hosts - Application and Support", STD 3, RFC 1123, October 1989.

[RFC1123]Braden,R.,“互联网主机的要求-应用和支持”,STD 3,RFC 1123,1989年10月。

[RFC1930] Hawkinson, J. and T. Bates, "Guidelines for creation, selection, and registration of an Autonomous System (AS)", BCP 6, RFC 1930, March 1996.

[RFC1930]霍金森,J.和T.贝茨,“自主系统(AS)的创建、选择和注册指南”,BCP 6,RFC 1930,1996年3月。

[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998.

[RFC2460]Deering,S.和R.Hinden,“互联网协议,第6版(IPv6)规范”,RFC 2460,1998年12月。

[RFC2474] Nichols, K., Blake, S., Baker, F., and D. Black, "Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers", RFC 2474, December 1998.

[RFC2474]Nichols,K.,Blake,S.,Baker,F.,和D.Black,“IPv4和IPv6头中区分服务字段(DS字段)的定义”,RFC 2474,1998年12月。

[RFC2578] McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.

[RFC2578]McCloghrie,K.,Ed.,Perkins,D.,Ed.,和J.Schoenwaeld,Ed.“管理信息的结构版本2(SMIv2)”,STD 58,RFC 2578,1999年4月。

[RFC2579] McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999.

[RFC2579]McCloghrie,K.,Ed.,Perkins,D.,Ed.,和J.Schoenwaeld,Ed.“SMIv2的文本约定”,STD 58,RFC 2579,1999年4月。

[RFC2780] Bradner, S. and V. Paxson, "IANA Allocation Guidelines For Values In the Internet Protocol and Related Headers", BCP 37, RFC 2780, March 2000.

[RFC2780]Bradner,S.和V.Paxson,“互联网协议和相关报头中值的IANA分配指南”,BCP 37,RFC 2780,2000年3月。

[RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for specifying the location of services (DNS SRV)", RFC 2782, February 2000.

[RFC2782]Gulbrandsen,A.,Vixie,P.和L.Esibov,“用于指定服务位置(DNS SRV)的DNS RR”,RFC 2782,2000年2月。

[RFC2856] Bierman, A., McCloghrie, K., and R. Presuhn, "Textual Conventions for Additional High Capacity Data Types", RFC 2856, June 2000.

[RFC2856]Bierman,A.,McCloghrie,K.,和R.Presohn,“附加高容量数据类型的文本约定”,RFC 28562000年6月。

[RFC3289] Baker, F., Chan, K., and A. Smith, "Management Information Base for the Differentiated Services Architecture", RFC 3289, May 2002.

[RFC3289]Baker,F.,Chan,K.和A.Smith,“差异化服务体系结构的管理信息库”,RFC 3289,2002年5月。

[RFC3305] Mealling, M. and R. Denenberg, "Report from the Joint W3C/IETF URI Planning Interest Group: Uniform Resource Identifiers (URIs), URLs, and Uniform Resource Names (URNs): Clarifications and Recommendations", RFC 3305, August 2002.

[RFC3305]Mealling,M.和R.Denenberg,“W3C/IETF URI规划联合兴趣小组的报告:统一资源标识符(URI)、URL和统一资源名称(URN):澄清和建议”,RFC 33052002年8月。

[RFC3595] Wijnen, B., "Textual Conventions for IPv6 Flow Label", RFC 3595, September 2003.

[RFC3595]Wijnen,B.,“IPv6流标签的文本约定”,RFC 35952003年9月。

[RFC4001] Daniele, M., Haberman, B., Routhier, S., and J. Schoenwaelder, "Textual Conventions for Internet Network Addresses", RFC 4001, February 2005.

[RFC4001]Daniele,M.,Haberman,B.,Routhier,S.,和J.Schoenwaeld,“互联网网络地址的文本约定”,RFC 4001,2005年2月。

[RFC4271] Rekhter, Y., Li, T., and S. Hares, "A Border Gateway Protocol 4 (BGP-4)", RFC 4271, January 2006.

[RFC4271]Rekhter,Y.,Li,T.,和S.Hares,“边境网关协议4(BGP-4)”,RFC 42712006年1月。

[RFC4340] Kohler, E., Handley, M., and S. Floyd, "Datagram Congestion Control Protocol (DCCP)", RFC 4340, March 2006.

[RFC4340]Kohler,E.,Handley,M.和S.Floyd,“数据报拥塞控制协议(DCCP)”,RFC 43402006年3月。

[RFC4502] Waldbusser, S., "Remote Network Monitoring Management Information Base Version 2", RFC 4502, May 2006.

[RFC4502]Waldbusser,S.,“远程网络监控管理信息库版本2”,RFC4502,2006年5月。

[RFC4960] Stewart, R., "Stream Control Transmission Protocol", RFC 4960, September 2007.

[RFC4960]Stewart,R.,“流控制传输协议”,RFC 49602007年9月。

[RFC5017] McWalter, D., "MIB Textual Conventions for Uniform Resource Identifiers (URIs)", RFC 5017, September 2007.

[RFC5017]McWalter,D.“统一资源标识符(URI)的MIB文本约定”,RFC 5017,2007年9月。

[RFC5890] Klensin, J., "Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework", RFC 5890, August 2010.

[RFC5890]Klensin,J.,“应用程序的国际化域名(IDNA):定义和文档框架”,RFC 58902010年8月。

[RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 Address Text Representation", RFC 5952, August 2010.

[RFC5952]Kawamura,S.和M.Kawashima,“IPv6地址文本表示的建议”,RFC 59522010年8月。

[RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021, October 2010.

[RFC6021]Schoenwaeld,J.,“常见的杨氏数据类型”,RFC 602112010年10月。

[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, June 2011.

[RFC6241]Enns,R.,Ed.,Bjorklund,M.,Ed.,Schoenwaeld,J.,Ed.,和A.Bierman,Ed.“网络配置协议(NETCONF)”,RFC 62412011年6月。

[RFC6793] Vohra, Q. and E. Chen, "BGP Support for Four-Octet Autonomous System (AS) Number Space", RFC 6793, December 2012.

[RFC6793]Vohra,Q.和E.Chen,“BGP对四个八位组自治系统(AS)数字空间的支持”,RFC 6793,2012年12月。

[XSD-TYPES] Biron, P. and A. Malhotra, "XML Schema Part 2: Datatypes Second Edition", World Wide Web Consortium Recommendation REC-xmlschema-2-20041028, October 2004, <http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.

[XSD-TYPES]Biron,P.和A.Malhotra,“XML模式第2部分:数据类型第二版”,万维网联盟建议REC-xmlschema-2-20041028,2004年10月<http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.

Appendix A. Changes from RFC 6021
附录A.RFC 6021的变更

This version adds new type definitions to the YANG modules. The following new data types have been added to the ietf-yang-types module:

此版本向模块中添加了新的类型定义。以下新数据类型已添加到ietf yang types模块中:

o yang-identifier

o 阳标识符

o hex-string

o 十六进制字符串

o uuid

o uuid

o dotted-quad

o 点分

The following new data types have been added to the ietf-inet-types module:

以下新数据类型已添加到ietf inet类型模块:

o ip-address-no-zone

o ip地址无区域

o ipv4-address-no-zone

o ipv4地址无区域

o ipv6-address-no-zone

o ipv6地址无区域

Author's Address

作者地址

Juergen Schoenwaelder (editor) Jacobs University

雅各布斯大学Juergen Schoenwaeld(编辑)

   EMail: j.schoenwaelder@jacobs-university.de
        
   EMail: j.schoenwaelder@jacobs-university.de