Internet Engineering Task Force (IETF)                     Y. Jiang, Ed.
Request for Comments: 8575                                        Huawei
Category: Standards Track                                         X. Liu
ISSN: 2070-1721                                              Independent
                                                                   J. Xu
                                                                  Huawei
                                                        R. Cummings, Ed.
                                                    National Instruments
                                                                May 2019
        
Internet Engineering Task Force (IETF)                     Y. Jiang, Ed.
Request for Comments: 8575                                        Huawei
Category: Standards Track                                         X. Liu
ISSN: 2070-1721                                              Independent
                                                                   J. Xu
                                                                  Huawei
                                                        R. Cummings, Ed.
                                                    National Instruments
                                                                May 2019
        

YANG Data Model for the Precision Time Protocol (PTP)

精确时间协议(PTP)的YANG数据模型

Abstract

摘要

This document defines a YANG data model for the configuration of devices and clocks using the Precision Time Protocol (PTP) as specified in IEEE Std 1588-2008. It also defines the retrieval of the configuration information, the data sets and the running states of PTP clocks. The YANG module in this document conforms to the Network Management Datastore Architecture (NMDA).

本文件定义了使用IEEE Std 1588-2008中规定的精密时间协议(PTP)配置设备和时钟的数据模型。它还定义了对配置信息、数据集和PTP时钟运行状态的检索。本文件中的YANG模块符合网络管理数据存储体系结构(NMDA)。

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 7841.

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

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

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

Copyright Notice

版权公告

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

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

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://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文件的法律规定的约束(https://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。

Table of Contents

目录

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Conventions Used in This Document . . . . . . . . . . . .   4
     1.2.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   4
   2.  IEEE Std 1588-2008 YANG Data Model Hierarchy  . . . . . . . .   5
     2.1.  Interpretations from IEEE 1588 Working Group  . . . . . .   7
     2.2.  Configuration and State . . . . . . . . . . . . . . . . .   8
   3.  IEEE Std 1588-2008 YANG Module  . . . . . . . . . . . . . . .   9
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .  21
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  22
   6.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  22
     6.1.  Normative References  . . . . . . . . . . . . . . . . . .  22
     6.2.  Informative References  . . . . . . . . . . . . . . . . .  23
   Appendix A.  Transferring YANG Work to the IEEE 1588 WG . . . . .  25
     A.1.  Assumptions for the Transfer  . . . . . . . . . . . . . .  26
     A.2.  Intellectual Property Considerations  . . . . . . . . . .  26
     A.3.  Namespace and Module Name . . . . . . . . . . . . . . . .  27
     A.4.  IEEE 1588 YANG Modules in ASCII Format  . . . . . . . . .  28
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  29
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  30
        
   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Conventions Used in This Document . . . . . . . . . . . .   4
     1.2.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   4
   2.  IEEE Std 1588-2008 YANG Data Model Hierarchy  . . . . . . . .   5
     2.1.  Interpretations from IEEE 1588 Working Group  . . . . . .   7
     2.2.  Configuration and State . . . . . . . . . . . . . . . . .   8
   3.  IEEE Std 1588-2008 YANG Module  . . . . . . . . . . . . . . .   9
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .  21
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  22
   6.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  22
     6.1.  Normative References  . . . . . . . . . . . . . . . . . .  22
     6.2.  Informative References  . . . . . . . . . . . . . . . . .  23
   Appendix A.  Transferring YANG Work to the IEEE 1588 WG . . . . .  25
     A.1.  Assumptions for the Transfer  . . . . . . . . . . . . . .  26
     A.2.  Intellectual Property Considerations  . . . . . . . . . .  26
     A.3.  Namespace and Module Name . . . . . . . . . . . . . . . .  27
     A.4.  IEEE 1588 YANG Modules in ASCII Format  . . . . . . . . .  28
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  29
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  30
        
1. Introduction
1. 介绍

As a synchronization protocol, IEEE Std 1588-2008 [IEEE1588] is widely supported in the carrier networks, industrial networks, automotive networks, and many other applications. It can provide high precision time synchronization as fine as nanoseconds. The protocol depends on a Precision Time Protocol (PTP) engine to decide its own state automatically, and a PTP transportation layer to carry the PTP timing and various quality messages. The configuration parameters and state data sets of IEEE Std 1588-2008 are numerous.

作为一种同步协议,IEEE Std 1588-2008[IEEE1588]在载波网络、工业网络、汽车网络和许多其他应用中得到广泛支持。它可以提供高精度的时间同步,精确到纳秒。该协议依赖于一个精确时间协议(PTP)引擎来自动决定自己的状态,以及一个PTP传输层来承载PTP定时和各种质量消息。IEEE Std 1588-2008的配置参数和状态数据集众多。

According to the concepts described in [RFC3444], IEEE Std 1588-2008 itself provides an information model in its normative specifications for the data sets (in IEEE Std 1588-2008 clause 8). Some standardization organizations, including the IETF, have specified data models in MIBs (Management Information Bases) for IEEE Std 1588-2008 data sets (e.g., [RFC8173] and [IEEE8021AS]). These MIBs are typically focused on retrieval of state data using the Simple Network Management Protocol (SNMP); furthermore, configuration of PTP data sets is not considered in [RFC8173].

根据[RFC3444]中描述的概念,IEEE标准1588-2008本身在其数据集的规范性规范中提供了一个信息模型(在IEEE标准1588-2008第8条中)。一些标准化组织,包括IETF,已经在MIB(管理信息库)中为IEEE Std 1588-2008数据集(例如,[RFC8173]和[IEEE8021AS])指定了数据模型。这些MIB通常侧重于使用简单网络管理协议(SNMP)检索状态数据;此外,[RFC8173]中未考虑PTP数据集的配置。

Some service providers and applications require that the management of the IEEE Std 1588-2008 synchronization network be flexible and more Internet based (typically overlaid on their transport networks). Software-Defined Networking (SDN) is another driving factor, which demands an improved configuration capability of synchronization networks.

一些服务提供商和应用程序要求IEEE Std 1588-2008同步网络的管理灵活且更基于互联网(通常覆盖在其传输网络上)。软件定义网络(SDN)是另一个驱动因素,它要求改进同步网络的配置能力。

   YANG [RFC7950] is a data modeling language used to model
   configuration and state data manipulated by network management
   protocols like the Network Configuration Protocol (NETCONF)
   [RFC6241].  A small set of built-in data types is defined in
   [RFC7950]; a collection of common data types is also defined in
   [RFC6991].  Advantages of YANG include Internet-based configuration
   capabilities, validation, rollback, and so on.  All of these
   characteristics make it attractive to become another candidate
   modeling language for IEEE Std 1588-2008.
        
   YANG [RFC7950] is a data modeling language used to model
   configuration and state data manipulated by network management
   protocols like the Network Configuration Protocol (NETCONF)
   [RFC6241].  A small set of built-in data types is defined in
   [RFC7950]; a collection of common data types is also defined in
   [RFC6991].  Advantages of YANG include Internet-based configuration
   capabilities, validation, rollback, and so on.  All of these
   characteristics make it attractive to become another candidate
   modeling language for IEEE Std 1588-2008.
        

This document defines a YANG data model for the configuration of IEEE Std 1588-2008 devices and clocks as well as retrieval of the state data of IEEE Std 1588-2008 clocks. The data model is based on the PTP data sets as specified in [IEEE1588]. The technology-specific PTP information (e.g., those specifically implemented by a bridge, a router, or a telecom profile) is out of scope of this document.

本文件定义了用于配置IEEE Std 1588-2008设备和时钟以及检索IEEE Std 1588-2008时钟状态数据的YANG数据模型。数据模型基于[IEEE1588]中规定的PTP数据集。特定于技术的PTP信息(例如,由网桥、路由器或电信配置文件专门实现的信息)不在本文档的范围内。

The YANG module in this document conforms to the Network Management Datastore Architecture (NMDA) [RFC8342].

本文件中的YANG模块符合网络管理数据存储体系结构(NMDA)[RFC8342]。

When used in practice, network products in support of synchronization typically conform to one or more IEEE Std 1588-2008 profiles. Each profile specifies how IEEE Std 1588-2008 is used in a given industry (e.g., telecom or automotive) and application. A profile can require features that are optional in IEEE Std 1588-2008, and it can specify new features that use IEEE Std 1588-2008 as a foundation.

在实践中使用时,支持同步的网络产品通常符合一个或多个IEEE Std 1588-2008配置文件。每个配置文件都指定了IEEE Std 1588-2008在给定行业(如电信或汽车)和应用中的使用方式。配置文件可以要求在IEEE STD 15882008中是可选的,并且它可以指定使用IEEE STD 15882008作为基础的新特性。

The readers are assumed to be familiar with IEEE Std 1588-2008. It is expected that the IEEE Std 1588-2008 YANG module will be used as follows:

假定读者熟悉IEEE标准1588-2008。预计IEEE Std 1588-2008 YANG模块将按如下方式使用:

- The IEEE Std 1588-2008 YANG module can be used as is for products that conform to one of the default profiles specified in IEEE Std 1588-2008.

- IEEE Std 1588-2008 YANG模块可按原样用于符合IEEE Std 1588-2008中规定的默认配置文件之一的产品。

- When the IEEE Std 1588 standard is revised (e.g., the IEEE Std 1588 revision in progress at the time of writing this document), it will add some new optional features to its data sets. The YANG module of this document can be revised and extended to support these new features. Moreover, the YANG "revision" MUST be used to indicate changes to the YANG module under such a circumstance.

- 当IEEE Std 1588标准修订时(例如,在编写本文件时,IEEE Std 1588修订正在进行中),它将向其数据集添加一些新的可选功能。本文档的YANG模块可以修改和扩展,以支持这些新功能。此外,在这种情况下,必须使用YANG“修订”来表示YANG模块的更改。

- A profile standard based on IEEE Std 1588-2008 may create a dedicated YANG module for its profile. The profile's YANG module SHOULD use YANG "import" to import the IEEE Std 1588-2008 YANG module as its foundation. Then the profile's YANG module SHOULD use YANG "augment" to add any profile-specific enhancements.

- 基于IEEE Std 1588-2008的配置文件标准可为其配置文件创建专用的YANG模块。配置文件的杨氏模块应以阳“导入”为输入,以IEEE STD 15882008杨模块为基础。然后概要文件的YANG模块应该使用YANG“augment”来添加任何特定于概要文件的增强。

- A product that conforms to a profile standard may also create its own YANG module. The product's YANG module SHOULD "import" the profile's module, and then use YANG "augment" to add any product-specific enhancements.

- 符合外形标准的产品也可以创建自己的模块。产品的YANG模块应该“导入”配置文件的模块,然后使用YANG“增强”添加任何特定于产品的增强功能。

1.1. Conventions Used in This Document
1.1. 本文件中使用的公约

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] [RFC8174] when, and only when, they appear in all capitals, as shown here.

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可”和“可选”在所有大写字母出现时(如图所示)应按照BCP 14[RFC2119][RFC8174]所述进行解释。

1.2. Terminology
1.2. 术语

Most terminology used in this document is extracted from [IEEE1588].

本文件中使用的大多数术语摘自[IEEE1588]。

BC Boundary Clock, see Section 3.1.3 of [IEEE1588]

BC边界时钟,见[IEEE1588]第3.1.3节

DS Data Set, see Section 8.1.1 of [IEEE1588]

DS数据集,见[IEEE1588]第8.1.1节

E2E End-to-End, see Section 3.2 of [IEEE1588]

E2E端到端,见[IEEE1588]第3.2节

IANA Internet Assigned Numbers Authority

IANA互联网分配号码管理局

OC Ordinary Clock, see Section 3.1.22 of [IEEE1588]

OC普通时钟,见[IEEE1588]第3.1.22节

P2P Peer-to-Peer, see Section 3.2 of [IEEE1588]

P2P点对点,见[IEEE1588]第3.2节

PTP Precision Time Protocol, see Section 3.1.28 of [IEEE1588]

PTP精密时间协议,见[IEEE1588]第3.1.28节

TAI International Atomic Time, see Section 3.2 of [IEEE1588]

TAI国际原子时,见[IEEE1588]第3.2节

TC Transparent Clock, see Section 3.1.46 of [IEEE1588]

TC透明时钟,见[IEEE1588]第3.1.46节

UTC Coordinated Universal Time, see Section 3.2 of [IEEE1588]

UTC协调世界时,见[IEEE1588]第3.2节

PTP data set Structured attributes of clocks (an OC, BC, or TC) used for PTP decisions and for providing values for PTP message fields; see Section 8 of [IEEE1588].

PTP数据集用于PTP决策和提供PTP消息字段值的时钟(OC、BC或TC)的结构化属性;见[IEEE1588]第8节。

PTP instance A PTP implementation in the device (i.e., an OC or BC) represented by a specific PTP data set.

PTP实例由特定PTP数据集表示的设备(即OC或BC)中的PTP实现。

2. IEEE Std 1588-2008 YANG Data Model Hierarchy
2. IEEE标准1588-2008 YANG数据模型层次结构

This section describes the hierarchy of a YANG module for IEEE Std 1588-2008; specifically, query and configuration of device-wide or port-specific configuration information and clock data sets are described.

本节描述了IEEE Std 1588-2008的YANG模块的层次结构;具体地,描述了设备范围或端口特定的配置信息和时钟数据集的查询和配置。

Query and configuration of clock information include:

时钟信息的查询和配置包括:

(Note: The attribute names are consistent with IEEE Std 1588-2008, but changed to the YANG style, i.e., using all lowercase, with dashes between words.)

(注意:属性名称与IEEE Std 1588-2008一致,但改为YANG样式,即使用所有小写字母,单词之间带破折号。)

- Clock data set attributes in a clock node, including the following: current-ds, parent-ds, default-ds, time-properties-ds, and transparent-clock-default-ds.

- 时钟节点中的时钟数据集属性,包括以下内容:当前ds、父ds、默认ds、时间属性ds和透明时钟默认ds。

- Port-specific data set attributes, including the following: port-ds and transparent-clock-port-ds.

- 端口特定的数据集属性,包括以下内容:端口ds和透明时钟端口ds。

As all PTP terminology and PTP data set attributes are described in detail in IEEE Std 1588-2008, this document only outlines each of them in the YANG module.

由于所有PTP术语和PTP数据集属性在IEEE Std 1588-2008中有详细描述,因此本文件仅在模块中对它们进行了概述。

A simplified YANG tree diagram [RFC8340] representing the data model is typically used by YANG modules. This document uses the same tree diagram syntax as described in [RFC8340].

YANG模块通常使用表示数据模型的简化YANG树图[RFC8340]。本文档使用与[RFC8340]中所述相同的树形图语法。

   module: ietf-ptp
     +--rw ptp
        +--rw instance-list* [instance-number]
        |  +--rw instance-number      uint32
        |  +--rw default-ds
        |  |  +--rw two-step-flag?    boolean
        |  |  +--ro clock-identity?   clock-identity-type
        |  |  +--rw number-ports?     uint16
        |  |  +--rw clock-quality
        |  |  |  +--rw clock-class?                  uint8
        |  |  |  +--rw clock-accuracy?               uint8
        |  |  |  +--rw offset-scaled-log-variance?   uint16
        |  |  +--rw priority1?        uint8
        |  |  +--rw priority2?        uint8
        |  |  +--rw domain-number?    uint8
        |  |  +--rw slave-only?       boolean
        |  +--rw current-ds
        |  |  +--rw steps-removed?        uint16
        |  |  +--rw offset-from-master?   time-interval-type
        |  |  +--rw mean-path-delay?      time-interval-type
        |  +--rw parent-ds
        |  |  +--rw parent-port-identity
        |  |  |  +--rw clock-identity?   clock-identity-type
        |  |  |  +--rw port-number?      uint16
        |  |  +--rw parent-stats?                 boolean
        |  |  +--rw observed-parent-offset-scaled-log-variance? uint16
        |  |  +--rw observed-parent-clock-phase-change-rate?    int32
        |  |  +--rw grandmaster-identity?         clock-identity-type
        |  |  +--rw grandmaster-clock-quality
        |  |  |  +--rw clock-class?                  uint8
        |  |  |  +--rw clock-accuracy?               uint8
        |  |  |  +--rw offset-scaled-log-variance?   uint16
        |  |  +--rw grandmaster-priority1?           uint8
        |  |  +--rw grandmaster-priority2?           uint8
        |  +--rw time-properties-ds
        |  |  +--rw current-utc-offset-valid?   boolean
        |  |  +--rw current-utc-offset?         int16
        |  |  +--rw leap59?                     boolean
        |  |  +--rw leap61?                     boolean
        |  |  +--rw time-traceable?             boolean
        |  |  +--rw frequency-traceable?        boolean
        |  |  +--rw ptp-timescale?              boolean
        |  |  +--rw time-source?                uint8
        |  +--rw port-ds-list* [port-number]
        |     +--rw port-number              uint16
        |     +--rw port-state?              port-state-enumeration
        |     +--rw underlying-interface?         if:interface-ref
        |     +--rw log-min-delay-req-interval?   int8
        
   module: ietf-ptp
     +--rw ptp
        +--rw instance-list* [instance-number]
        |  +--rw instance-number      uint32
        |  +--rw default-ds
        |  |  +--rw two-step-flag?    boolean
        |  |  +--ro clock-identity?   clock-identity-type
        |  |  +--rw number-ports?     uint16
        |  |  +--rw clock-quality
        |  |  |  +--rw clock-class?                  uint8
        |  |  |  +--rw clock-accuracy?               uint8
        |  |  |  +--rw offset-scaled-log-variance?   uint16
        |  |  +--rw priority1?        uint8
        |  |  +--rw priority2?        uint8
        |  |  +--rw domain-number?    uint8
        |  |  +--rw slave-only?       boolean
        |  +--rw current-ds
        |  |  +--rw steps-removed?        uint16
        |  |  +--rw offset-from-master?   time-interval-type
        |  |  +--rw mean-path-delay?      time-interval-type
        |  +--rw parent-ds
        |  |  +--rw parent-port-identity
        |  |  |  +--rw clock-identity?   clock-identity-type
        |  |  |  +--rw port-number?      uint16
        |  |  +--rw parent-stats?                 boolean
        |  |  +--rw observed-parent-offset-scaled-log-variance? uint16
        |  |  +--rw observed-parent-clock-phase-change-rate?    int32
        |  |  +--rw grandmaster-identity?         clock-identity-type
        |  |  +--rw grandmaster-clock-quality
        |  |  |  +--rw clock-class?                  uint8
        |  |  |  +--rw clock-accuracy?               uint8
        |  |  |  +--rw offset-scaled-log-variance?   uint16
        |  |  +--rw grandmaster-priority1?           uint8
        |  |  +--rw grandmaster-priority2?           uint8
        |  +--rw time-properties-ds
        |  |  +--rw current-utc-offset-valid?   boolean
        |  |  +--rw current-utc-offset?         int16
        |  |  +--rw leap59?                     boolean
        |  |  +--rw leap61?                     boolean
        |  |  +--rw time-traceable?             boolean
        |  |  +--rw frequency-traceable?        boolean
        |  |  +--rw ptp-timescale?              boolean
        |  |  +--rw time-source?                uint8
        |  +--rw port-ds-list* [port-number]
        |     +--rw port-number              uint16
        |     +--rw port-state?              port-state-enumeration
        |     +--rw underlying-interface?         if:interface-ref
        |     +--rw log-min-delay-req-interval?   int8
        
        |     +--rw peer-mean-path-delay?         time-interval-type
        |     +--rw log-announce-interval?        int8
        |     +--rw announce-receipt-timeout?     uint8
        |     +--rw log-sync-interval?            int8
        |     +--rw delay-mechanism?       delay-mechanism-enumeration
        |     +--rw log-min-pdelay-req-interval?   int8
        |     +--rw version-number?                uint8
        +--rw transparent-clock-default-ds
        |  +--ro clock-identity?    clock-identity-type
        |  +--rw number-ports?      uint16
        |  +--rw delay-mechanism?   delay-mechanism-enumeration
        |  +--rw primary-domain?    uint8
        +--rw transparent-clock-port-ds-list* [port-number]
           +--rw port-number                    uint16
           +--rw log-min-pdelay-req-interval?   int8
           +--rw faulty-flag?                   boolean
           +--rw peer-mean-path-delay?          time-interval-type
        
        |     +--rw peer-mean-path-delay?         time-interval-type
        |     +--rw log-announce-interval?        int8
        |     +--rw announce-receipt-timeout?     uint8
        |     +--rw log-sync-interval?            int8
        |     +--rw delay-mechanism?       delay-mechanism-enumeration
        |     +--rw log-min-pdelay-req-interval?   int8
        |     +--rw version-number?                uint8
        +--rw transparent-clock-default-ds
        |  +--ro clock-identity?    clock-identity-type
        |  +--rw number-ports?      uint16
        |  +--rw delay-mechanism?   delay-mechanism-enumeration
        |  +--rw primary-domain?    uint8
        +--rw transparent-clock-port-ds-list* [port-number]
           +--rw port-number                    uint16
           +--rw log-min-pdelay-req-interval?   int8
           +--rw faulty-flag?                   boolean
           +--rw peer-mean-path-delay?          time-interval-type
        
2.1. Interpretations from IEEE 1588 Working Group
2.1. IEEE 1588工作组的解释

The preceding model and the associated YANG module have some subtle differences from the data set specifications of IEEE Std 1588-2008. These differences are based on interpretation from the IEEE 1588 Working Group, and they are intended to provide compatibility with future revisions of the IEEE Std 1588 standard.

前面的模型和相关的YANG模块与IEEE Std 1588-2008的数据集规范有一些细微的差异。这些差异基于IEEE 1588工作组的解释,旨在提供与IEEE Std 1588标准未来版本的兼容性。

In IEEE Std 1588-2008, a physical product can implement multiple PTP clocks (i.e., an ordinary, boundary, or transparent clock). As specified in IEEE Std 1588-2008 subclause 7.1, each of the multiple clocks operates in an independent domain. However, the organization of multiple PTP domains was not clear in the data sets of IEEE Std 1588-2008. This document introduces the concept of a PTP instance, which is a PTP implementation in a device (i.e., an OC or BC) represented by a specific PTP data set. Each instance operates in exactly one domain. The instance concept is used exclusively to allow for optional support of multiple domains. The instance number has no usage within PTP messages.

在IEEE Std 1588-2008中,物理产品可以实现多个PTP时钟(即普通、边界或透明时钟)。按照IEEE Std 1588-2008第7.1款的规定,多个时钟中的每一个都在一个独立的域中运行。然而,在IEEE Std 1588-2008的数据集中,多个PTP域的组织并不清楚。本文档介绍了PTP实例的概念,它是由特定PTP数据集表示的设备(即OC或BC)中的PTP实现。每个实例只在一个域中运行。实例概念专门用于允许可选地支持多个域。实例号在PTP消息中没有用途。

Based on statements in IEEE Std 1588-2008 subclauses 8.3.1 and 10.1, most transparent clock products have interpreted the transparent clock data sets to reside as a singleton at the root level of the managed product, and this YANG data model reflects that location.

根据IEEE Std 1588-2008第8.3.1款和第10.1款中的陈述,大多数透明时钟产品已将透明时钟数据集解释为驻留在托管产品的根级别上的单个数据集,该数据模型反映了该位置。

2.2. Configuration and State
2.2. 配置和状态

The information model of IEEE Std 1588-2008 classifies each member in PTP data sets as one of the following:

IEEE Std 1588-2008的信息模型将PTP数据集中的每个成员分类为以下类别之一:

Configurable: Writable by management.

可配置:可由管理层写入。

Dynamic: Read-only to management, and the value is changed by PTP protocol operation.

动态:只读到管理,值由PTP协议操作更改。

Static: Read-only to management, and the value typically does not change.

静态:只读到管理,值通常不会更改。

For details on the classification of each PTP data set member, refer to the specification of that member in IEEE Std 1588-2008.

有关每个PTP数据集成员分类的详细信息,请参阅IEEE Std 1588-2008中该成员的规范。

Under certain circumstances, the classification of an IEEE Std 1588 data set member may change for a YANG implementation, for example, a configurable member needs to be changed to read-only. In such a case, an implementation SHOULD choose to return a warning upon writing to a read-only member or use the deviation mechanism to develop a new deviation model as described in Section 7.20.3 of [RFC7950].

在某些情况下,IEEE Std 1588数据集成员的分类可能会因YANG实现而改变,例如,需要将可配置成员更改为只读。在这种情况下,实现应选择在写入只读成员时返回警告,或使用偏差机制开发新的偏差模型,如[RFC7950]第7.20.3节所述。

3. IEEE Std 1588-2008 YANG Module
3. IEEE标准1588-2008杨氏模块

This module imports typedef "interface-ref" from [RFC8343]. Most attributes are based on the information model defined in [IEEE1588], but their names are adapted to the YANG style of naming.

此模块从[RFC8343]导入typedef“interface ref”。大多数属性都基于[IEEE1588]中定义的信息模型,但它们的名称适用于杨式命名。

  <CODE BEGINS> file "ietf-ptp@2019-05-07.yang"
  module ietf-ptp {
    yang-version 1.1;
    namespace "urn:ietf:params:xml:ns:yang:ietf-ptp";
    prefix ptp;
        
  <CODE BEGINS> file "ietf-ptp@2019-05-07.yang"
  module ietf-ptp {
    yang-version 1.1;
    namespace "urn:ietf:params:xml:ns:yang:ietf-ptp";
    prefix ptp;
        
    import ietf-interfaces {
      prefix if;
      reference
        "RFC 8343: A YANG Data Model for Interface Management";
    }
        
    import ietf-interfaces {
      prefix if;
      reference
        "RFC 8343: A YANG Data Model for Interface Management";
    }
        
    organization
      "IETF TICTOC Working Group";
    contact
      "WG Web:   https://datatracker.ietf.org/wg/tictoc/
       WG List:  <mailto:tictoc@ietf.org>
       Editor:   Yuanlong Jiang
                 <mailto:jiangyuanlong@huawei.com>
       Editor:   Rodney Cummings
                 <mailto:rodney.cummings@ni.com>";
    description
      "This YANG module defines a data model for the configuration
       of IEEE Std 1588-2008 clocks, and also for retrieval of the state
       data of IEEE Std 1588-2008 clocks.";
        
    organization
      "IETF TICTOC Working Group";
    contact
      "WG Web:   https://datatracker.ietf.org/wg/tictoc/
       WG List:  <mailto:tictoc@ietf.org>
       Editor:   Yuanlong Jiang
                 <mailto:jiangyuanlong@huawei.com>
       Editor:   Rodney Cummings
                 <mailto:rodney.cummings@ni.com>";
    description
      "This YANG module defines a data model for the configuration
       of IEEE Std 1588-2008 clocks, and also for retrieval of the state
       data of IEEE Std 1588-2008 clocks.";
        
    revision 2019-05-07 {
      description
        "Initial version";
      reference
        "RFC 8575: YANG Data Model for the Precision Time Protocol";
    }
        
    revision 2019-05-07 {
      description
        "Initial version";
      reference
        "RFC 8575: YANG Data Model for the Precision Time Protocol";
    }
        
    typedef delay-mechanism-enumeration {
      type enumeration {
        enum e2e {
          value 1;
          description
            "The port uses the delay request-response mechanism.";
        }
        enum p2p {
          value 2;
        
    typedef delay-mechanism-enumeration {
      type enumeration {
        enum e2e {
          value 1;
          description
            "The port uses the delay request-response mechanism.";
        }
        enum p2p {
          value 2;
        
          description
            "The port uses the peer delay mechanism.";
        }
        enum disabled {
          value 254;
          description
            "The port does not implement any delay mechanism.";
        }
      }
      description
        "The propagation-delay measuring option used by the
         port.  Values for this enumeration are specified
         by the IEEE Std 1588 standard exclusively.";
      reference
        "IEEE Std 1588-2008: 8.2.5.4.4";
    }
        
          description
            "The port uses the peer delay mechanism.";
        }
        enum disabled {
          value 254;
          description
            "The port does not implement any delay mechanism.";
        }
      }
      description
        "The propagation-delay measuring option used by the
         port.  Values for this enumeration are specified
         by the IEEE Std 1588 standard exclusively.";
      reference
        "IEEE Std 1588-2008: 8.2.5.4.4";
    }
        
    typedef port-state-enumeration {
      type enumeration {
        enum initializing {
          value 1;
          description
            "The port is initializing its data sets, hardware, and
             communication facilities.";
        }
        enum faulty {
          value 2;
          description
            "The port is in the fault state.";
        }
        enum disabled {
          value 3;
          description
            "The port is disabled and is not communicating PTP
             messages (other than possibly PTP management
             messages).";
        }
        enum listening {
          value 4;
          description
            "The port is listening for an Announce message.";
        }
        enum pre-master {
          value 5;
          description
            "The port is in the pre-master state.";
        }
        enum master {
        
    typedef port-state-enumeration {
      type enumeration {
        enum initializing {
          value 1;
          description
            "The port is initializing its data sets, hardware, and
             communication facilities.";
        }
        enum faulty {
          value 2;
          description
            "The port is in the fault state.";
        }
        enum disabled {
          value 3;
          description
            "The port is disabled and is not communicating PTP
             messages (other than possibly PTP management
             messages).";
        }
        enum listening {
          value 4;
          description
            "The port is listening for an Announce message.";
        }
        enum pre-master {
          value 5;
          description
            "The port is in the pre-master state.";
        }
        enum master {
        
          value 6;
          description
            "The port is behaving as a master port.";
        }
        enum passive {
          value 7;
          description
            "The port is in the passive state.";
        }
        enum uncalibrated {
          value 8;
          description
            "A master port has been selected, but the port is still
             in the uncalibrated state.";
        }
        enum slave {
          value 9;
          description
            "The port is synchronizing to the selected master port.";
        }
      }
      description
        "The current state of the protocol engine associated
         with the port.  Values for this enumeration are specified
         by the IEEE Std 1588 standard exclusively.";
      reference
        "IEEE Std 1588-2008: 8.2.5.3.1, 9.2.5";
    }
        
          value 6;
          description
            "The port is behaving as a master port.";
        }
        enum passive {
          value 7;
          description
            "The port is in the passive state.";
        }
        enum uncalibrated {
          value 8;
          description
            "A master port has been selected, but the port is still
             in the uncalibrated state.";
        }
        enum slave {
          value 9;
          description
            "The port is synchronizing to the selected master port.";
        }
      }
      description
        "The current state of the protocol engine associated
         with the port.  Values for this enumeration are specified
         by the IEEE Std 1588 standard exclusively.";
      reference
        "IEEE Std 1588-2008: 8.2.5.3.1, 9.2.5";
    }
        
    typedef time-interval-type {
      type int64;
      description
        "Derived data type for time interval, represented in units of
          nanoseconds and multiplied by 2^16";
      reference
        "IEEE Std 1588-2008: 5.3.2";
    }
        
    typedef time-interval-type {
      type int64;
      description
        "Derived data type for time interval, represented in units of
          nanoseconds and multiplied by 2^16";
      reference
        "IEEE Std 1588-2008: 5.3.2";
    }
        
    typedef clock-identity-type {
      type binary {
        length "8";
      }
      description
        "Derived data type to identify a clock";
      reference
        "IEEE Std 1588-2008: 5.3.4";
    }
        
    typedef clock-identity-type {
      type binary {
        length "8";
      }
      description
        "Derived data type to identify a clock";
      reference
        "IEEE Std 1588-2008: 5.3.4";
    }
        
    grouping clock-quality-grouping {
      description
        "Derived data type for quality of a clock, which contains
         clockClass, clockAccuracy, and offsetScaledLogVariance.";
      reference
        "IEEE Std 1588-2008: 5.3.7";
      leaf clock-class {
        type uint8;
        default "248";
        description
          "The clockClass denotes the traceability of the time
           or frequency distributed by the clock.";
      }
      leaf clock-accuracy {
        type uint8;
        description
          "The clockAccuracy indicates the expected accuracy
           of the clock.";
      }
      leaf offset-scaled-log-variance {
        type uint16;
        description
          "The offsetScaledLogVariance provides an estimate of
           the variations of the clock from a linear timescale
           when it is not synchronized to another clock
           using the protocol.";
      }
    }
        
    grouping clock-quality-grouping {
      description
        "Derived data type for quality of a clock, which contains
         clockClass, clockAccuracy, and offsetScaledLogVariance.";
      reference
        "IEEE Std 1588-2008: 5.3.7";
      leaf clock-class {
        type uint8;
        default "248";
        description
          "The clockClass denotes the traceability of the time
           or frequency distributed by the clock.";
      }
      leaf clock-accuracy {
        type uint8;
        description
          "The clockAccuracy indicates the expected accuracy
           of the clock.";
      }
      leaf offset-scaled-log-variance {
        type uint16;
        description
          "The offsetScaledLogVariance provides an estimate of
           the variations of the clock from a linear timescale
           when it is not synchronized to another clock
           using the protocol.";
      }
    }
        
    container ptp {
      description
        "The PTP struct containing all attributes of PTP data set,
          other optional PTP attributes can be augmented as well.";
      list instance-list {
        key "instance-number";
        description
          "List of one or more PTP data sets in the device (see IEEE
           Std 1588-2008 subclause 6.3).
           Each PTP data set represents a distinct instance of
           PTP implementation in the device (i.e., distinct
           Ordinary Clock or Boundary Clock).";
        leaf instance-number {
          type uint32;
          description
            "The instance number of the current PTP instance.
             This instance number is used for management purposes
             only.  This instance number does not represent the PTP
             domain number and is not used in PTP messages.";
        
    container ptp {
      description
        "The PTP struct containing all attributes of PTP data set,
          other optional PTP attributes can be augmented as well.";
      list instance-list {
        key "instance-number";
        description
          "List of one or more PTP data sets in the device (see IEEE
           Std 1588-2008 subclause 6.3).
           Each PTP data set represents a distinct instance of
           PTP implementation in the device (i.e., distinct
           Ordinary Clock or Boundary Clock).";
        leaf instance-number {
          type uint32;
          description
            "The instance number of the current PTP instance.
             This instance number is used for management purposes
             only.  This instance number does not represent the PTP
             domain number and is not used in PTP messages.";
        
        }
        container default-ds {
          description
            "The default data set of the clock (see IEEE Std
             1588-2008 subclause 8.2.1).  This data set represents
             the configuration/state required for operation
             of Precision Time Protocol (PTP) state machines.";
          reference
            "IEEE Std 1588-2008: 8.2.1";
          leaf two-step-flag {
            type boolean;
            description
              "When set to true, the clock is a two-step clock;
               otherwise,the clock is a one-step clock.";
          }
          leaf clock-identity {
            type clock-identity-type;
            config false;
            description
              "The clockIdentity of the local clock.";
          }
          leaf number-ports {
            type uint16;
            description
              "The number of PTP ports on the instance.";
          }
          container clock-quality {
            description
              "The clockQuality of the local clock.";
            uses clock-quality-grouping;
          }
          leaf priority1 {
            type uint8;
            description
              "The priority1 attribute of the local clock.";
          }
          leaf priority2 {
            type uint8;
            description
              "The priority2 attribute of the local clock.";
          }
          leaf domain-number {
            type uint8;
            description
              "The domain number of the current syntonization
               domain.";
          }
          leaf slave-only {
        
        }
        container default-ds {
          description
            "The default data set of the clock (see IEEE Std
             1588-2008 subclause 8.2.1).  This data set represents
             the configuration/state required for operation
             of Precision Time Protocol (PTP) state machines.";
          reference
            "IEEE Std 1588-2008: 8.2.1";
          leaf two-step-flag {
            type boolean;
            description
              "When set to true, the clock is a two-step clock;
               otherwise,the clock is a one-step clock.";
          }
          leaf clock-identity {
            type clock-identity-type;
            config false;
            description
              "The clockIdentity of the local clock.";
          }
          leaf number-ports {
            type uint16;
            description
              "The number of PTP ports on the instance.";
          }
          container clock-quality {
            description
              "The clockQuality of the local clock.";
            uses clock-quality-grouping;
          }
          leaf priority1 {
            type uint8;
            description
              "The priority1 attribute of the local clock.";
          }
          leaf priority2 {
            type uint8;
            description
              "The priority2 attribute of the local clock.";
          }
          leaf domain-number {
            type uint8;
            description
              "The domain number of the current syntonization
               domain.";
          }
          leaf slave-only {
        
            type boolean;
            description
              "When set to true, the clock is a slave-only clock.";
          }
        }
        container current-ds {
          description
            "The current data set of the clock (see IEEE Std
             1588-2008 subclause 8.2.2).  This data set represents
             local states learned from the exchange of
             Precision Time Protocol (PTP) messages.";
          reference
            "IEEE Std 1588-2008: 8.2.2";
          leaf steps-removed {
            type uint16;
            default "0";
            description
              "The number of communication paths traversed
               between the local clock and the grandmaster clock.";
          }
          leaf offset-from-master {
            type time-interval-type;
            description
              "The current value of the time difference between
               a master and a slave clock as computed by the slave.";
          }
          leaf mean-path-delay {
            type time-interval-type;
            description
              "The current value of the mean propagation time between
               a master and a slave clock as computed by the slave.";
          }
        }
        container parent-ds {
          description
            "The parent data set of the clock (see IEEE Std 1588-2008
             subclause 8.2.3).";
          reference
            "IEEE Std 1588-2008: 8.2.3";
          container parent-port-identity {
            description
              "The portIdentity of the port on the master, it
               contains two members: clockIdentity and portNumber.";
            reference
              "IEEE Std 1588-2008: 5.3.5";
            leaf clock-identity {
              type clock-identity-type;
        
            type boolean;
            description
              "When set to true, the clock is a slave-only clock.";
          }
        }
        container current-ds {
          description
            "The current data set of the clock (see IEEE Std
             1588-2008 subclause 8.2.2).  This data set represents
             local states learned from the exchange of
             Precision Time Protocol (PTP) messages.";
          reference
            "IEEE Std 1588-2008: 8.2.2";
          leaf steps-removed {
            type uint16;
            default "0";
            description
              "The number of communication paths traversed
               between the local clock and the grandmaster clock.";
          }
          leaf offset-from-master {
            type time-interval-type;
            description
              "The current value of the time difference between
               a master and a slave clock as computed by the slave.";
          }
          leaf mean-path-delay {
            type time-interval-type;
            description
              "The current value of the mean propagation time between
               a master and a slave clock as computed by the slave.";
          }
        }
        container parent-ds {
          description
            "The parent data set of the clock (see IEEE Std 1588-2008
             subclause 8.2.3).";
          reference
            "IEEE Std 1588-2008: 8.2.3";
          container parent-port-identity {
            description
              "The portIdentity of the port on the master, it
               contains two members: clockIdentity and portNumber.";
            reference
              "IEEE Std 1588-2008: 5.3.5";
            leaf clock-identity {
              type clock-identity-type;
        
              description
                "Identity of the clock.";
            }
            leaf port-number {
              type uint16;
              description
                "Port number.";
            }
          }
          leaf parent-stats {
            type boolean;
            default "false";
            description
              "When set to true, the values of
               observedParentOffsetScaledLogVariance and
               observedParentClockPhaseChangeRate of parentDS
               have been measured and are valid.";
          }
          leaf observed-parent-offset-scaled-log-variance {
            type uint16;
            default "65535";
            description
              "An estimate of the parent clock's PTP variance
               as observed by the slave clock.";
          }
          leaf observed-parent-clock-phase-change-rate {
            type int32;
            description
              "An estimate of the parent clock's phase change rate
               as observed by the slave clock.";
          }
          leaf grandmaster-identity {
            type clock-identity-type;
            description
              "The clockIdentity attribute of the grandmaster clock.";
          }
          container grandmaster-clock-quality {
            description
              "The clockQuality of the grandmaster clock.";
            uses clock-quality-grouping;
          }
          leaf grandmaster-priority1 {
            type uint8;
            description
              "The priority1 attribute of the grandmaster clock.";
          }
          leaf grandmaster-priority2 {
            type uint8;
        
              description
                "Identity of the clock.";
            }
            leaf port-number {
              type uint16;
              description
                "Port number.";
            }
          }
          leaf parent-stats {
            type boolean;
            default "false";
            description
              "When set to true, the values of
               observedParentOffsetScaledLogVariance and
               observedParentClockPhaseChangeRate of parentDS
               have been measured and are valid.";
          }
          leaf observed-parent-offset-scaled-log-variance {
            type uint16;
            default "65535";
            description
              "An estimate of the parent clock's PTP variance
               as observed by the slave clock.";
          }
          leaf observed-parent-clock-phase-change-rate {
            type int32;
            description
              "An estimate of the parent clock's phase change rate
               as observed by the slave clock.";
          }
          leaf grandmaster-identity {
            type clock-identity-type;
            description
              "The clockIdentity attribute of the grandmaster clock.";
          }
          container grandmaster-clock-quality {
            description
              "The clockQuality of the grandmaster clock.";
            uses clock-quality-grouping;
          }
          leaf grandmaster-priority1 {
            type uint8;
            description
              "The priority1 attribute of the grandmaster clock.";
          }
          leaf grandmaster-priority2 {
            type uint8;
        
            description
              "The priority2 attribute of the grandmaster clock.";
          }
        }
        container time-properties-ds {
          description
            "The timeProperties data set of the clock (see
             IEEE Std 1588-2008 subclause 8.2.4).";
          reference
            "IEEE Std 1588-2008: 8.2.4";
          leaf current-utc-offset-valid {
            type boolean;
            description
              "When set to true, the current UTC offset is valid.";
          }
          leaf current-utc-offset {
            when "../current-utc-offset-valid='true'";
            type int16;
            description
              "The offset between TAI and UTC when the epoch of the
               PTP system is the PTP epoch in units of seconds, i.e.,
               when ptp-timescale is TRUE; otherwise, the value has
               no meaning.";
          }
          leaf leap59 {
            type boolean;
            description
              "When set to true, the last minute of the current UTC
               day contains 59 seconds.";
          }
          leaf leap61 {
            type boolean;
            description
              "When set to true, the last minute of the current UTC
               day contains 61 seconds.";
          }
          leaf time-traceable {
            type boolean;
            description
              "When set to true, the timescale and the
               currentUtcOffset are traceable to a primary
               reference.";
          }
          leaf frequency-traceable {
            type boolean;
            description
              "When set to true, the frequency determining the
               timescale is traceable to a primary reference.";
        
            description
              "The priority2 attribute of the grandmaster clock.";
          }
        }
        container time-properties-ds {
          description
            "The timeProperties data set of the clock (see
             IEEE Std 1588-2008 subclause 8.2.4).";
          reference
            "IEEE Std 1588-2008: 8.2.4";
          leaf current-utc-offset-valid {
            type boolean;
            description
              "When set to true, the current UTC offset is valid.";
          }
          leaf current-utc-offset {
            when "../current-utc-offset-valid='true'";
            type int16;
            description
              "The offset between TAI and UTC when the epoch of the
               PTP system is the PTP epoch in units of seconds, i.e.,
               when ptp-timescale is TRUE; otherwise, the value has
               no meaning.";
          }
          leaf leap59 {
            type boolean;
            description
              "When set to true, the last minute of the current UTC
               day contains 59 seconds.";
          }
          leaf leap61 {
            type boolean;
            description
              "When set to true, the last minute of the current UTC
               day contains 61 seconds.";
          }
          leaf time-traceable {
            type boolean;
            description
              "When set to true, the timescale and the
               currentUtcOffset are traceable to a primary
               reference.";
          }
          leaf frequency-traceable {
            type boolean;
            description
              "When set to true, the frequency determining the
               timescale is traceable to a primary reference.";
        
          }
          leaf ptp-timescale {
            type boolean;
            description
              "When set to true, the clock timescale of the
               grandmaster clock is PTP; otherwise, the timescale is
               ARB (arbitrary).";
          }
          leaf time-source {
            type uint8;
            description
              "The source of time used by the grandmaster clock.";
          }
        }
        list port-ds-list {
          key "port-number";
          description
            "List of port data sets of the clock (see IEEE Std
             1588-2008 subclause 8.2.5).";
          reference
            "IEEE Std 1588-2008: 8.2.5";
          leaf port-number {
            type uint16;
            description
              "Port number.
               The data sets (i.e., information model) of IEEE Std
               1588-2008 specify a member portDS.portIdentity, which
               uses a typed struct with members clockIdentity and
               portNumber.
        
          }
          leaf ptp-timescale {
            type boolean;
            description
              "When set to true, the clock timescale of the
               grandmaster clock is PTP; otherwise, the timescale is
               ARB (arbitrary).";
          }
          leaf time-source {
            type uint8;
            description
              "The source of time used by the grandmaster clock.";
          }
        }
        list port-ds-list {
          key "port-number";
          description
            "List of port data sets of the clock (see IEEE Std
             1588-2008 subclause 8.2.5).";
          reference
            "IEEE Std 1588-2008: 8.2.5";
          leaf port-number {
            type uint16;
            description
              "Port number.
               The data sets (i.e., information model) of IEEE Std
               1588-2008 specify a member portDS.portIdentity, which
               uses a typed struct with members clockIdentity and
               portNumber.
        
               In this YANG data model, portIdentity is not modeled
               in the port-ds-list.  However, its members are provided
               as follows:
               portIdentity.portNumber is provided as this
               port-number leaf in port-ds-list, and
               portIdentity.clockIdentity is provided as the
               clock-identity leaf in default-ds of the instance
               (i.e., ../../default-ds/clock-identity).";
          }
          leaf port-state {
            type port-state-enumeration;
            default "initializing";
            description
              "Current state associated with the port.";
          }
          leaf underlying-interface {
            type if:interface-ref;
        
               In this YANG data model, portIdentity is not modeled
               in the port-ds-list.  However, its members are provided
               as follows:
               portIdentity.portNumber is provided as this
               port-number leaf in port-ds-list, and
               portIdentity.clockIdentity is provided as the
               clock-identity leaf in default-ds of the instance
               (i.e., ../../default-ds/clock-identity).";
          }
          leaf port-state {
            type port-state-enumeration;
            default "initializing";
            description
              "Current state associated with the port.";
          }
          leaf underlying-interface {
            type if:interface-ref;
        
            description
              "Reference to the configured underlying interface that
               is used by this PTP port (see RFC 8343).";
            reference
              "RFC 8343: A YANG Data Model for Interface Management";
          }
          leaf log-min-delay-req-interval {
            type int8;
            description
              "The base-2 logarithm of the minDelayReqInterval
               (the minimum permitted mean time interval between
               successive Delay_Req messages).";
          }
          leaf peer-mean-path-delay {
            type time-interval-type;
            default "0";
            description
              "An estimate of the current one-way propagation delay
               on the link when the delayMechanism is P2P; otherwise,
               it is zero.";
          }
          leaf log-announce-interval {
            type int8;
            description
              "The base-2 logarithm of the mean
               announceInterval (mean time interval between
               successive Announce messages).";
          }
          leaf announce-receipt-timeout {
            type uint8;
            description
              "The number of announceIntervals that have to pass
               without receipt of an Announce message before the
               occurrence of the event ANNOUNCE_RECEIPT_TIMEOUT_
               EXPIRES.";
          }
          leaf log-sync-interval {
            type int8;
            description
              "The base-2 logarithm of the mean SyncInterval
               for multicast messages.  The rates for unicast
               transmissions are negotiated separately on a per-port
               basis and are not constrained by this attribute.";
          }
          leaf delay-mechanism {
            type delay-mechanism-enumeration;
        
            description
              "Reference to the configured underlying interface that
               is used by this PTP port (see RFC 8343).";
            reference
              "RFC 8343: A YANG Data Model for Interface Management";
          }
          leaf log-min-delay-req-interval {
            type int8;
            description
              "The base-2 logarithm of the minDelayReqInterval
               (the minimum permitted mean time interval between
               successive Delay_Req messages).";
          }
          leaf peer-mean-path-delay {
            type time-interval-type;
            default "0";
            description
              "An estimate of the current one-way propagation delay
               on the link when the delayMechanism is P2P; otherwise,
               it is zero.";
          }
          leaf log-announce-interval {
            type int8;
            description
              "The base-2 logarithm of the mean
               announceInterval (mean time interval between
               successive Announce messages).";
          }
          leaf announce-receipt-timeout {
            type uint8;
            description
              "The number of announceIntervals that have to pass
               without receipt of an Announce message before the
               occurrence of the event ANNOUNCE_RECEIPT_TIMEOUT_
               EXPIRES.";
          }
          leaf log-sync-interval {
            type int8;
            description
              "The base-2 logarithm of the mean SyncInterval
               for multicast messages.  The rates for unicast
               transmissions are negotiated separately on a per-port
               basis and are not constrained by this attribute.";
          }
          leaf delay-mechanism {
            type delay-mechanism-enumeration;
        
            description
              "The propagation delay measuring option used by the
               port in computing meanPathDelay.";
          }
          leaf log-min-pdelay-req-interval {
            type int8;
            description
              "The base-2 logarithm of the
               minPdelayReqInterval (minimum permitted mean time
               interval between successive Pdelay_Req messages).";
          }
          leaf version-number {
            type uint8;
            description
              "The PTP version in use on the port.";
          }
        }
      }
      container transparent-clock-default-ds {
        description
          "The members of the transparentClockDefault data set (see
           IEEE Std 1588-2008 subclause 8.3.2).";
        reference
          "IEEE Std 1588-2008: 8.3.2";
        leaf clock-identity {
          type clock-identity-type;
          config false;
          description
            "The clockIdentity of the transparent clock.";
        }
        leaf number-ports {
          type uint16;
          description
            "The number of PTP ports on the transparent clock.";
        }
        leaf delay-mechanism {
          type delay-mechanism-enumeration;
          description
            "The propagation delay measuring option
             used by the transparent clock.";
        }
        leaf primary-domain {
          type uint8;
          default "0";
          description
            "The domainNumber of the primary syntonization domain (see
             IEEE Std 1588-2008 subclause 10.1).";
        
            description
              "The propagation delay measuring option used by the
               port in computing meanPathDelay.";
          }
          leaf log-min-pdelay-req-interval {
            type int8;
            description
              "The base-2 logarithm of the
               minPdelayReqInterval (minimum permitted mean time
               interval between successive Pdelay_Req messages).";
          }
          leaf version-number {
            type uint8;
            description
              "The PTP version in use on the port.";
          }
        }
      }
      container transparent-clock-default-ds {
        description
          "The members of the transparentClockDefault data set (see
           IEEE Std 1588-2008 subclause 8.3.2).";
        reference
          "IEEE Std 1588-2008: 8.3.2";
        leaf clock-identity {
          type clock-identity-type;
          config false;
          description
            "The clockIdentity of the transparent clock.";
        }
        leaf number-ports {
          type uint16;
          description
            "The number of PTP ports on the transparent clock.";
        }
        leaf delay-mechanism {
          type delay-mechanism-enumeration;
          description
            "The propagation delay measuring option
             used by the transparent clock.";
        }
        leaf primary-domain {
          type uint8;
          default "0";
          description
            "The domainNumber of the primary syntonization domain (see
             IEEE Std 1588-2008 subclause 10.1).";
        
          reference
            "IEEE Std 1588-2008: 10.1";
        }
      }
      list transparent-clock-port-ds-list {
        key "port-number";
        description
          "List of transparentClockPort data sets of the transparent
           clock (see IEEE Std 1588-2008 subclause 8.3.3).";
        reference
          "IEEE Std 1588-2008: 8.3.3";
        leaf port-number {
          type uint16;
          description
            "Port number.
             The data sets (i.e., information model) of IEEE Std
             1588-2008 specify a member
             transparentClockPortDS.portIdentity, which uses a typed
             struct with members clockIdentity and portNumber.
        
          reference
            "IEEE Std 1588-2008: 10.1";
        }
      }
      list transparent-clock-port-ds-list {
        key "port-number";
        description
          "List of transparentClockPort data sets of the transparent
           clock (see IEEE Std 1588-2008 subclause 8.3.3).";
        reference
          "IEEE Std 1588-2008: 8.3.3";
        leaf port-number {
          type uint16;
          description
            "Port number.
             The data sets (i.e., information model) of IEEE Std
             1588-2008 specify a member
             transparentClockPortDS.portIdentity, which uses a typed
             struct with members clockIdentity and portNumber.
        
             In this YANG data model, portIdentity is not modeled in
             the transparent-clock-port-ds-list.  However, its
             members are provided as follows:
             portIdentity.portNumber is provided as this leaf member
             in transparent-clock-port-ds-list and
             portIdentity.clockIdentity is provided as the
             clock-identity leaf in transparent-clock-default-ds
             (i.e., ../../transparent-clock-default-ds/clock-
             identity).";
        }
        leaf log-min-pdelay-req-interval {
          type int8;
          description
            "The logarithm to the base 2 of the
             minPdelayReqInterval (minimum permitted mean time
             interval between successive Pdelay_Req messages).";
        }
        leaf faulty-flag {
          type boolean;
          default "false";
          description
            "When set to true, the port is faulty.";
        }
        leaf peer-mean-path-delay {
          type time-interval-type;
          default "0";
        
             In this YANG data model, portIdentity is not modeled in
             the transparent-clock-port-ds-list.  However, its
             members are provided as follows:
             portIdentity.portNumber is provided as this leaf member
             in transparent-clock-port-ds-list and
             portIdentity.clockIdentity is provided as the
             clock-identity leaf in transparent-clock-default-ds
             (i.e., ../../transparent-clock-default-ds/clock-
             identity).";
        }
        leaf log-min-pdelay-req-interval {
          type int8;
          description
            "The logarithm to the base 2 of the
             minPdelayReqInterval (minimum permitted mean time
             interval between successive Pdelay_Req messages).";
        }
        leaf faulty-flag {
          type boolean;
          default "false";
          description
            "When set to true, the port is faulty.";
        }
        leaf peer-mean-path-delay {
          type time-interval-type;
          default "0";
        
          description
            "An estimate of the current one-way propagation delay
             on the link when the delayMechanism is P2P; otherwise,
             it is zero.";
        }
      }
    }
  }
        
          description
            "An estimate of the current one-way propagation delay
             on the link when the delayMechanism is P2P; otherwise,
             it is zero.";
        }
      }
    }
  }
        

<CODE ENDS>

<代码结束>

4. Security Considerations
4. 安全考虑

The YANG module specified in this document defines a schema for data that is designed to be accessed via network management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS [RFC8446]. Furthermore, general security considerations of time protocols are discussed in [RFC7384].

本文档中指定的模块为数据定义了一个模式,该模式旨在通过网络管理协议(如NETCONF[RFC6241]或restcconf[RFC8040])进行访问。最低的NETCONF层是安全传输层,实现安全传输的强制要求是安全Shell(SSH)[RFC6242]。最低的RESTCONF层是HTTPS,实现安全传输的强制层是TLS[RFC8446]。此外,时间协议的一般安全注意事项在[RFC7384]中进行了讨论。

The Network Configuration Access Control Model (NACM) [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.

网络配置访问控制模型(NACM)[RFC8341]提供了将特定NETCONF或RESTCONF用户的访问限制为所有可用NETCONF或RESTCONF协议操作和内容的预配置子集的方法。

There are a number of data nodes defined in this YANG module that are writable, and the involved subtrees that are sensitive include:

此模块中定义了许多可写的数据节点,涉及的敏感子树包括:

/ptp/instance-list specifies an instance (i.e., PTP data sets) for an OC or BC.

/ptp/实例列表指定OC或BC的实例(即ptp数据集)。

/ptp/transparent-clock-default-ds specifies a default data set for a TC.

/ptp/透明时钟默认ds指定TC的默认数据集。

/ptp/transparent-clock-port-ds-list specifies a list of port data sets for a TC.

/ptp/透明时钟端口ds列表指定TC的端口数据集列表。

Write operations (e.g., edit-config) to these data nodes without proper protection can have a negative effect on network operations. Specifically, an inappropriate configuration of them may adversely impact a PTP synchronization network. For example, loss of synchronization on a clock, accuracy degradation on a set of clocks, or even break down of a whole synchronization network.

对这些数据节点的写入操作(如编辑配置)如果没有适当的保护,可能会对网络操作产生负面影响。具体地说,它们的不适当配置可能对PTP同步网络产生不利影响。例如,一个时钟的同步丢失、一组时钟的精度降低,甚至整个同步网络崩溃。

5. IANA Considerations
5. IANA考虑

This document registers the following URI in the "IETF XML Registry" [RFC3688]:

本文档在“IETF XML注册表”[RFC3688]中注册以下URI:

   URI: urn:ietf:params:xml:ns:yang:ietf-ptp
   Registrant Contact: The IESG
   XML: N/A; the requested URI is an XML namespace
        
   URI: urn:ietf:params:xml:ns:yang:ietf-ptp
   Registrant Contact: The IESG
   XML: N/A; the requested URI is an XML namespace
        

This document registers the following YANG module in the "YANG Module Names" registry [RFC6020]:

本文件在“YANG模块名称”注册表[RFC6020]中注册以下YANG模块:

   Name:         ietf-ptp
   Namespace:    urn:ietf:params:xml:ns:yang:ietf-ptp
   Prefix:       ptp
   Reference:    RFC 8575
        
   Name:         ietf-ptp
   Namespace:    urn:ietf:params:xml:ns:yang:ietf-ptp
   Prefix:       ptp
   Reference:    RFC 8575
        
6. References
6. 工具书类
6.1. Normative References
6.1. 规范性引用文件

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,DOI 10.17487/RFC2119,1997年3月<https://www.rfc-editor.org/info/rfc2119>.

[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, <https://www.rfc-editor.org/info/rfc3688>.

[RFC3688]Mealling,M.,“IETF XML注册表”,BCP 81,RFC 3688,DOI 10.17487/RFC3688,2004年1月<https://www.rfc-editor.org/info/rfc3688>.

[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, October 2010, <https://www.rfc-editor.org/info/rfc6020>.

[RFC6020]Bjorklund,M.,Ed.“YANG-网络配置协议的数据建模语言(NETCONF)”,RFC 6020,DOI 10.17487/RFC6020,2010年10月<https://www.rfc-editor.org/info/rfc6020>.

[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, <https://www.rfc-editor.org/info/rfc6241>.

[RFC6241]Enns,R.,Ed.,Bjorklund,M.,Ed.,Schoenwaeld,J.,Ed.,和A.Bierman,Ed.,“网络配置协议(NETCONF)”,RFC 6241,DOI 10.17487/RFC6241,2011年6月<https://www.rfc-editor.org/info/rfc6241>.

[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, <https://www.rfc-editor.org/info/rfc6242>.

[RFC6242]Wasserman,M.“在安全外壳上使用NETCONF协议(SSH)”,RFC 6242,DOI 10.17487/RFC6242,2011年6月<https://www.rfc-editor.org/info/rfc6242>.

[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, DOI 10.17487/RFC6991, July 2013, <https://www.rfc-editor.org/info/rfc6991>.

[RFC6991]Schoenwaeld,J.,Ed.,“常见杨数据类型”,RFC 6991,DOI 10.17487/RFC69911913年7月<https://www.rfc-editor.org/info/rfc6991>.

[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, August 2016, <https://www.rfc-editor.org/info/rfc7950>.

[RFC7950]Bjorklund,M.,Ed.“YANG 1.1数据建模语言”,RFC 7950,DOI 10.17487/RFC7950,2016年8月<https://www.rfc-editor.org/info/rfc7950>.

[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, <https://www.rfc-editor.org/info/rfc8040>.

[RFC8040]Bierman,A.,Bjorklund,M.,和K.Watsen,“RESTCONF协议”,RFC 8040,DOI 10.17487/RFC8040,2017年1月<https://www.rfc-editor.org/info/rfc8040>.

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8174]Leiba,B.,“RFC 2119关键词中大写与小写的歧义”,BCP 14,RFC 8174,DOI 10.17487/RFC8174,2017年5月<https://www.rfc-editor.org/info/rfc8174>.

[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, March 2018, <https://www.rfc-editor.org/info/rfc8341>.

[RFC8341]Bierman,A.和M.Bjorklund,“网络配置访问控制模型”,STD 91,RFC 8341,DOI 10.17487/RFC8341,2018年3月<https://www.rfc-editor.org/info/rfc8341>.

[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, <https://www.rfc-editor.org/info/rfc8342>.

[RFC8342]Bjorklund,M.,Schoenwaeld,J.,Shafer,P.,Watsen,K.,和R.Wilton,“网络管理数据存储体系结构(NMDA)”,RFC 8342,DOI 10.17487/RFC8342,2018年3月<https://www.rfc-editor.org/info/rfc8342>.

[RFC8343] Bjorklund, M., "A YANG Data Model for Interface Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, <https://www.rfc-editor.org/info/rfc8343>.

[RFC8343]Bjorklund,M.,“用于接口管理的YANG数据模型”,RFC 8343,DOI 10.17487/RFC8343,2018年3月<https://www.rfc-editor.org/info/rfc8343>.

[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, <https://www.rfc-editor.org/info/rfc8446>.

[RFC8446]Rescorla,E.“传输层安全(TLS)协议版本1.3”,RFC 8446,DOI 10.17487/RFC8446,2018年8月<https://www.rfc-editor.org/info/rfc8446>.

[IEEE1588] IEEE, "IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems", IEEE Std 1588-2008, DOI 10.1109/IEEESTD.2008.4579760, July 2008.

[IEEE1588]IEEE,“网络测量和控制系统精密时钟同步协议的IEEE标准”,IEEE标准1588-2008,DOI 10.1109/IEEESTD.2008.4579760,2008年7月。

6.2. Informative References
6.2. 资料性引用

[IEEE8021AS] IEEE, "IEEE Standard for Local and Metropolitan Area Networks - Timing and Synchronizations for Time-Sensitive Applications in Bridged Local Area Networks", IEEE 802.1AS-2001.

[IEEE8021AS]IEEE,“局域网和城域网的IEEE标准-桥接局域网中时间敏感应用的定时和同步”,IEEE 802.1AS-2001。

[RFC3444] Pras, A. and J. Schoenwaelder, "On the Difference between Information Models and Data Models", RFC 3444, DOI 10.17487/RFC3444, January 2003, <https://www.rfc-editor.org/info/rfc3444>.

[RFC3444]Pras,A.和J.Schoenwaeld,“关于信息模型和数据模型之间的差异”,RFC 3444,DOI 10.17487/RFC3444,2003年1月<https://www.rfc-editor.org/info/rfc3444>.

[RFC4663] Harrington, D., "Transferring MIB Work from IETF Bridge MIB WG to IEEE 802.1 WG", RFC 4663, DOI 10.17487/RFC4663, September 2006, <https://www.rfc-editor.org/info/rfc4663>.

[RFC4663]Harrington,D.,“将MIB工作从IETF桥接MIB工作组转移到IEEE 802.1工作组”,RFC 4663,DOI 10.17487/RFC4663,2006年9月<https://www.rfc-editor.org/info/rfc4663>.

[RFC7384] Mizrahi, T., "Security Requirements of Time Protocols in Packet Switched Networks", RFC 7384, DOI 10.17487/RFC7384, October 2014, <https://www.rfc-editor.org/info/rfc7384>.

[RFC7384]Mizrahi,T.,“分组交换网络中时间协议的安全要求”,RFC 7384,DOI 10.17487/RFC7384,2014年10月<https://www.rfc-editor.org/info/rfc7384>.

[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, <https://www.rfc-editor.org/info/rfc8340>.

[RFC8340]Bjorklund,M.和L.Berger,编辑,“杨树图”,BCP 215,RFC 8340,DOI 10.17487/RFC8340,2018年3月<https://www.rfc-editor.org/info/rfc8340>.

[RFC8173] Shankarkumar, V., Montini, L., Frost, T., and G. Dowd, "Precision Time Protocol Version 2 (PTPv2) Management Information Base", RFC 8173, DOI 10.17487/RFC8173, June 2017, <https://www.rfc-editor.org/info/rfc8173>.

[RFC8173]Shankarkumar,V.,Montini,L.,Frost,T.,和G.Dowd,“精确时间协议版本2(PTPv2)管理信息库”,RFC 8173,DOI 10.17487/RFC8173,2017年6月<https://www.rfc-editor.org/info/rfc8173>.

Appendix A. Transferring YANG Work to the IEEE 1588 WG
附录A.将工作移交给IEEE 1588工作组

This Appendix is informational.

本附录仅供参考。

This appendix describes a future plan to transition responsibility for IEEE Std 1588 YANG modules from the IETF TICTOC Working Group (WG) to the IEEE 1588 WG, which develops the time synchronization technology that the YANG modules are designed to manage.

本附录描述了将IEEE Std 1588 YANG模块的责任从IETF TICTOC工作组(WG)转移到IEEE 1588 WG的未来计划,该工作组开发了YANG模块设计用于管理的时间同步技术。

This appendix is forward-looking with regard to future standardization roadmaps in the IETF and IEEE. Since those roadmaps cannot be predicted with significant accuracy, this appendix is informational, and it does not specify imperatives or normative specifications of any kind.

本附录是关于IETF和IEEE未来标准化路线图的前瞻性附录。由于这些路线图无法准确预测,因此本附录仅供参考,未规定任何类型的要求或规范性规范。

The IEEE Std 1588-2008 YANG module of this standard represents a cooperation between the IETF (for YANG) and IEEE (for 1588). For the initial standardization of IEEE-1588 YANG modules, the information model is relatively clear (i.e., IEEE Std 1588 data sets), but expertise in YANG is required, making IETF an appropriate location for the standards. The TICTOC WG has expertise with IEEE Std 1588, making it the appropriate location within the IETF.

本标准的IEEE Std 1588-2008 YANG模块代表IETF(针对YANG)和IEEE(针对1588)之间的合作。对于IEEE-1588 YANG模块的初始标准化,信息模型相对清晰(即IEEE Std 1588数据集),但需要YANG方面的专业知识,使IETF成为标准的适当位置。TICTOC工作组拥有IEEE标准1588的专业知识,使其成为IETF内的适当位置。

The IEEE 1588 WG anticipates future changes to its standard on an ongoing basis. As IEEE 1588 WG members gain practical expertise with YANG, the IEEE 1588 WG will become more appropriate for standardization of its YANG modules. As the IEEE 1588 standard is revised and/or amended, IEEE 1588 members can more effectively synchronize the revision of this YANG module with future versions of the IEEE 1588 standard.

IEEE 1588工作组预计未来将持续对其标准进行更改。随着IEEE1588工作组成员获得YANG的实际专业知识,IEEE1588工作组将更适合其YANG模块的标准化。随着IEEE 1588标准的修订和/或修订,IEEE 1588成员可以更有效地将该模块的修订与IEEE 1588标准的未来版本同步。

This appendix is meant to establish some clear expectations between IETF and IEEE about the future transfer of IEEE 1588 YANG modules to the IEEE 1588 WG. The goal is to assist in making the future transfer as smooth as possible. As the transfer takes place, some case-by-case situations are likely to arise, which can be handled by discussion on the IETF TICTOC WG mailing lists and/or appropriate liaisons.

本附录旨在确定IETF和IEEE之间关于未来将IEEE 1588 YANG模块转移至IEEE 1588 WG的明确预期。目标是协助使未来的转移尽可能顺利。随着转移的发生,可能会出现一些个案情况,可以通过讨论IETF TICTOC WG邮件列表和/或适当的联络来处理。

This appendix obtained insight from [RFC4663], an informational memo that described a similar transfer of MIB work from the IETF Bridge MIB WG to the IEEE 802.1 WG.

本附录从[RFC4663]中获得了见解,这是一份信息备忘录,描述了从IETF桥接MIB工作组到IEEE 802.1工作组的类似MIB工作转移。

A.1. Assumptions for the Transfer
A.1. 转让的假设

For the purposes of discussion in this appendix, assume that the IESG has approved the publication of an RFC containing a YANG module for a published IEEE 1588 standard. As of this writing, this is IEEE Std 1588-2008, but it is possible that YANG modules for subsequent 1588 revisions could be published from the IETF TICTOC WG. For discussion in this appendix, we use the phrase "last IETF 1588 YANG" to refer to the most recently published 1588 YANG module from the IETF TICTOC WG.

出于本附录讨论的目的,假设IESG已批准发布包含已发布IEEE 1588标准的YANG模块的RFC。在撰写本文时,这是IEEE Std 1588-2008,但后续1588修订版的YANG模块可能会从IETF TICTOC工作组发布。为了在本附录中进行讨论,我们使用短语“last IETF 1588 YANG”指的是IETF TICTOC工作组最近发布的1588 YANG模块。

The IEEE-SA Standards Board New Standards Committee (NesCom) handles new Project Authorization Requests (PARs) (see <http://standards.ieee.org/board/nes/>). PARs are roughly the equivalent of IETF Working Group Charters and include information concerning the scope, purpose, and justification for standardization projects.

IEEE-SA标准委员会新标准委员会(NesCom)处理新的项目授权请求(PAR)(参见<http://standards.ieee.org/board/nes/>). PAR大致相当于IETF工作组章程,包括有关标准化项目的范围、目的和理由的信息。

Assume that IEEE 1588 has an approved PAR that explicitly specifies development of a YANG module. The transfer of YANG work will occur in the context of this IEEE 1588 PAR. For discussion in this appendix, we use the phrase "first IEEE 1588 YANG" to refer to the first IEEE 1588 standard for YANG.

假设IEEE 1588具有明确指定杨氏模块的开发的批准PAR。YANG工作的转移将发生在IEEE 1588标准的背景下。为了在本附录中进行讨论,我们使用短语“首个IEEE 1588 YANG”来指代首个IEEE 1588 YANG标准。

Assume that as part of the transfer of YANG work, the IETF TICTOC WG agrees to cease all work on standard YANG modules for IEEE 1588.

假设作为YANG工作转移的一部分,IETF TICTOC工作组同意停止IEEE 1588标准YANG模块的所有工作。

Assume that the IEEE 1588 WG has participated in the development of the last IETF 1588 YANG module, such that the first IEEE 1588 YANG module will effectively be a revision of it. In other words, the transfer of YANG work will be relatively clean.

假设IEEE 1588工作组参与了最后一个IETF 1588 YANG模块的开发,因此第一个IEEE 1588 YANG模块将有效地对其进行修订。也就是说,杨某的转移工作会比较干净。

The actual conditions for the future transfer can be such that the preceding assumptions do not hold. Exceptions to the assumptions will need to be addressed on a case-by-case basis at the time of the transfer. This appendix describes topics that can be addressed based on the preceding assumptions.

未来转让的实际情况可能不符合上述假设。假设的例外情况需要在转让时逐案处理。本附录描述了基于上述假设可以解决的主题。

A.2. Intellectual Property Considerations
A.2. 知识产权考虑

During review of the legal issues associated with transferring Bridge MIB WG documents to the IEEE 802.1 WG (Sections 3.1 and 9 of [RFC4663]), it was concluded that the IETF does not have sufficient legal authority to make the transfer to the IEEE without the consent of the document authors.

在审查与将桥接MIB工作组文件传输至IEEE 802.1工作组(RFC4663第3.1节和第9节)相关的法律问题期间,得出结论认为,IETF没有足够的法律权限在未经文件作者同意的情况下将文件传输至IEEE。

If the last IETF 1588 YANG is published as an RFC, the work is required to be transferred from the IETF to the IEEE, so that IEEE 1588 WG can begin working on the first IEEE 1588 YANG.

如果最后一个IETF 1588 YANG作为RFC发布,则需要将工作从IETF转移到IEEE,以便IEEE 1588 WG可以开始第一个IEEE 1588 YANG的工作。

When work on the first IEEE YANG module begins in the IEEE 1588 WG, that work derives from the last IETF YANG module of this RFC, requiring a transfer of that work from the IETF to the IEEE. In order to avoid having the transfer of that work be dependent on the availability of this RFC's authors at the time of its publication, the IEEE Standards Association department of Risk Management and Licensing provided the appropriate forms and mechanisms for this document's authors to assign a non-exclusive license for IEEE to create derivative works from this document. Those IEEE forms and mechanisms will be updated as needed for any future IETF YANG modules for IEEE 1588 (the signed forms are held by the IEEE Standards Association department of Risk Management and Licensing.). This will help to make the future transfer of work from the IETF to the IEEE occur as smoothly as possible.

在IEEE 1588工作组中,当第一个IEEE YANG模块的工作开始时,该工作源自本RFC的最后一个IETF YANG模块,需要将该工作从IETF转移到IEEE。为了避免该作品的转让取决于本RFC出版时作者的可用性,IEEE标准协会风险管理和许可部为本文件的作者提供了适当的表格和机制,以便为IEEE分配非排他性许可证,以根据本文件创建衍生作品。这些IEEE表格和机制将根据需要为IEEE 1588的任何未来IETF模块进行更新(签名表格由IEEE标准协会风险管理和许可部持有)。这将有助于使未来从IETF到IEEE的工作转移尽可能顺利进行。

As stated in the initial "Status of this Memo", the YANG module in this document conforms to the provisions of BCP 78. The IETF will retain all the rights granted at the time of publication in the published RFCs.

如初始“本备忘录状态”中所述,本文件中的YANG模块符合BCP 78的规定。IETF将保留在发布的RFC中发布时授予的所有权利。

A.3. Namespace and Module Name
A.3. 名称空间和模块名

As specified in Section 5 "IANA Considerations", the YANG module in this document uses IETF as the root of its URN namespace and YANG module name.

如第5节“IANA注意事项”所述,本文档中的YANG模块使用IETF作为其URN名称空间和YANG模块名称的根。

Use of IETF as the root of these names implies that the YANG module is standardized in a Working Group of IETF, using the IETF processes. If the IEEE 1588 Working Group were to continue using these names rooted in IETF, the IEEE 1588 YANG standardization would need to continue in the IETF. The goal of transferring the YANG work is to avoid this sort of dependency between standards organizations.

使用IETF作为这些名称的根表示YANG模块在IETF工作组中使用IETF流程进行标准化。如果IEEE1588工作组继续使用这些源于IETF的名称,IEEE1588 YANG标准化将需要在IETF中继续。转移YANG工作的目的是避免标准组织之间的这种依赖。

IEEE 802 has an active PAR (IEEE P802d) for creating a URN namespace for IEEE use (see <http://standards.ieee.org/develop/ project/802d.html>). It is likely that this IEEE 802 PAR will be approved and published prior to the transfer of YANG work to the IEEE 1588 WG. If so, the IEEE 1588 WG can use the IEEE URN namespace for the first IEEE 1588 YANG module, such as:

IEEE 802具有用于创建用于IEEE使用的URN命名空间的活动PAR(IEEE P802D)(参见http://standards.ieee.org/develop/ project/802d.html>)。这可能是IEEE 802 PAR将被批准和公布之前,转让YANG工作到IEEE 1588 WG。如果是这样,IEEE 1588 WG可以为第一个IEEE 1588模块使用IEEE URN名称空间,例如:

      urn:ieee:Std:1588:yang:ieee1588-ptp
        
      urn:ieee:Std:1588:yang:ieee1588-ptp
        

where "ieee1588-ptp" is the registered YANG module name in the IEEE.

其中,“ieee1588 ptp”是IEEE中注册的模块名称。

Under the assumptions of Appendix A.1, the first IEEE 1588 YANG module's prefix will be the same as the last IETF 1588 YANG module's prefix (i.e., "ptp"). Consequently, other YANG modules can preserve

根据附录A.1的假设,第一个IEEE 1588 YANG模块的前缀将与最后一个IETF 1588 YANG模块的前缀相同(即“ptp”)。因此,其他阳模块可以保存

the same import prefix "ptp" to access PTP nodes during the migration from the last IETF 1588 YANG module to the first IEEE 1588 YANG module.

在从最后一个IETF 1588 YANG模块迁移到第一个IEEE 1588 YANG模块的过程中,使用相同的导入前缀“ptp”访问ptp节点。

The result of these name changes are that for complete compatibility, a server (i.e., IEEE 1588 node) can choose to implement a YANG module for the last IETF 1588 YANG module (with IETF root) as well as the first IEEE 1588 YANG module (with IEEE root). Since the content of the YANG module transferred are the same, the server implementation is effectively common for both.

这些名称更改的结果是,为了完全兼容,服务器(即IEEE 1588节点)可以选择为最后一个IETF 1588 YANG模块(具有IETF根)以及第一个IEEE1588 YANG模块(具有IEEE根)实现YANG模块。由于传输的模块的内容是相同的,因此服务器实现实际上对两者都是通用的。

From a client's perspective, a client of the last IETF 1588 YANG module (or earlier) looks for the IETF-rooted module name; and a client of the first IEEE 1588 YANG module (or later) looks for the IEEE-rooted module name.

从客户机的角度来看,最后一个IETF1588模块(或更早版本)的客户机查找IETF根模块名称;第一个IEEE 1588 YANG模块(或更高版本)的客户机查找IEEE根模块名称。

A.4. IEEE 1588 YANG Modules in ASCII Format
A.4. ASCII格式的IEEE 1588模块

Although IEEE 1588 can certainly decide to publish YANG modules only in the PDF format that they use for their standard documents, without publishing an ASCII version, most network management systems cannot import the YANG module directly from the PDF. Thus, not publishing an ASCII version of the YANG module would negatively impact implementers and deployers of YANG modules and would make potential IETF reviews of YANG modules more difficult.

尽管IEEE 1588可以确定只以标准文档使用的PDF格式发布YANG模块,而不发布ASCII版本,但大多数网络管理系统无法直接从PDF导入YANG模块。因此,不发布YANG模块的ASCII版本将对YANG模块的实施者和部署者产生负面影响,并使潜在的IETF审查YANG模块变得更加困难。

This appendix recommends that the IEEE 1588 WG consider future plans for:

本附录建议IEEE 1588 WG考虑未来的计划:

- Public availability of the ASCII YANG modules during project development. These ASCII files allow IETF participants to access these documents for pre-standard review purposes.

- 项目开发期间ASCII模块的公共可用性。这些ASCII文件允许IETF参与者访问这些文件,以进行标准前审查。

- Public availability of the YANG portion of published IEEE 1588 standards, provided as an ASCII file for each YANG module. These ASCII files are intended for use of the published IEEE 1588 standard.

- 公开发布的IEEE 1588标准的YANG部分,作为每个YANG模块的ASCII文件提供。这些ASCII文件旨在使用已发布的IEEE 1588标准。

As an example of public availability during project development, IEEE 802 uses the same repository that IETF uses for YANG module development (see <https://github.com/YangModels/yang>). IEEE branches are provided for experimental work (i.e., pre-PAR) as well as standard work (post-PAR drafts). IEEE-SA has approved use of this repository for project development, but not for published standards.

作为项目开发期间的公共可用性示例,IEEE 802使用IETF用于模块开发的相同存储库(参见<https://github.com/YangModels/yang>). IEEE分支机构用于实验工作(即PAR前)和标准工作(PAR后草案)。IEEE-SA已批准将此存储库用于项目开发,但不用于已发布的标准。

As an example of public availability of YANG modules for published standards, IEEE 802.1 provides a public list of ASCII files for MIB (see <http://www.ieee802.org/1/files/public/MIBs/> and <http://www.ieee802.org/1/pages/MIBS.html>), and analogous lists are planned for IEEE 802.1 YANG files.

IEEE 802.1提供了用于MIB的ASCII文件的公共列表(参见<http://www.ieee802.org/1/files/public/MIBs/>及<http://www.ieee802.org/1/pages/MIBS.html>),并计划为IEEE 802.1文件提供类似列表。

Acknowledgments

致谢

The authors would like to thank Tom Petch, Radek Krejci, Mahesh Jethanandani, Tal Mizrahi, Opher Ronen, Liang Geng, Alex Campbell, Joe Gwinn, John Fletcher, William Zhao, and Dave Thaler for their valuable reviews and suggestions. They would like to thank Benoit Claise and Radek Krejci for their validation of the YANG module, and thank Jingfei Lv and Zitao Wang for their discussions on IEEE 1588 and YANG, respectively.

作者要感谢Tom Petch、Radek Krejci、Mahesh Jethanandani、Tal Mizrahi、Opher Ronen、梁庚、Alex Campbell、Joe Gwinn、John Fletcher、William Zhao和Dave Thaler的宝贵评论和建议。他们要感谢Benoit Claise和Radek Krejci对YANG模块的验证,并感谢Lv Jingfei和Zitao Wang分别就IEEE 1588和YANG进行的讨论。

Authors' Addresses

作者地址

Yuanlong Jiang (editor) Huawei Bantian, Longgang district Shenzhen 518129 China

姜元龙(编辑)中国深圳市龙岗区华为坂田518129

   Email: jiangyuanlong@huawei.com
        
   Email: jiangyuanlong@huawei.com
        

Xian Liu Independent Shenzhen 518129 China

西安刘独立中国深圳518129

   Email: lene.liuxian@foxmail.com
        
   Email: lene.liuxian@foxmail.com
        

Jinchun Xu Huawei Bantian, Longgang district Shenzhen 518129 China

中国深圳市龙岗区华为银行金春徐518129

   Email: xujinchun@huawei.com
        
   Email: xujinchun@huawei.com
        

Rodney Cummings (editor) National Instruments 11500 N. Mopac Expwy Bldg. C Austin, TX 78759-3504 United States of America

罗德尼·卡明斯(编辑)美国德克萨斯州奥斯汀市C区北莫帕克Expwy大厦11500号国家仪器公司78759-3504

   Email: Rodney.Cummings@ni.com
        
   Email: Rodney.Cummings@ni.com