draft-ietf-tictoc-1588v2-yang-05.txt   draft-ietf-tictoc-1588v2-yang-06.txt 
Internet Working Group Y. Jiang, Ed. Internet Working Group Y. Jiang, Ed.
X. Liu
Internet-Draft J. Xu
Huawei Huawei
Intended status: Standards Track R. Cummings, Ed. Internet-Draft X. Liu
Independent
Intended status: Standards Track J. Xu
Huawei
R. Cummings, Ed.
National Instruments National Instruments
Expires: October 2017 April 20, 2017 Expires: April 2018 October 26, 2017
YANG Data Model for IEEE 1588v2 YANG Data Model for IEEE 1588-2008
draft-ietf-tictoc-1588v2-yang-05 draft-ietf-tictoc-1588v2-yang-06
Abstract Abstract
This document defines a YANG data model for the configuration of This document defines a YANG data model for the configuration of
IEEE 1588-2008 devices and clocks, and also retrieval of the IEEE 1588-2008 devices and clocks, and also retrieval of the
configuration information, data set and running states of IEEE configuration information, data set and running states of IEEE
1588-2008 clocks. 1588-2008 clocks.
Status of this Memo Status of this Memo
skipping to change at page 1, line 42 skipping to change at page 1, line 44
documents at any time. It is inappropriate to use Internet-Drafts documents at any time. It is inappropriate to use Internet-Drafts
as reference material or to cite them other than as "work in as reference material or to cite them other than as "work in
progress." progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html http://www.ietf.org/shadow.html
This Internet-Draft will expire on October 20, 2017. This Internet-Draft will expire on April 26, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 23 skipping to change at page 2, line 23
warranty as described in the Simplified BSD License. warranty as described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction .............................................. 2 1. Introduction .............................................. 2
1.1. Conventions used in this document ...................... 4 1.1. Conventions used in this document ...................... 4
1.2. Terminology ............................................ 4 1.2. Terminology ............................................ 4
2. IEEE 1588-2008 YANG Model hierarchy ....................... 5 2. IEEE 1588-2008 YANG Model hierarchy ....................... 5
2.1. Interpretations from IEEE 1588 Working Group ........... 8 2.1. Interpretations from IEEE 1588 Working Group ........... 8
2.2. Configuration and state ................................ 8 2.2. Configuration and state ................................ 8
3. IEEE 1588-2008 YANG Module ............................... 10 3. IEEE 1588-2008 YANG Module ................................ 9
4. Security Considerations .................................. 23 4. Security Considerations .................................. 22
5. IANA Considerations ...................................... 23 5. IANA Considerations ...................................... 23
6. References ............................................... 23 6. References ............................................... 23
6.1. Normative References .................................. 23 6.1. Normative References .................................. 23
6.2. Informative References ................................ 24 6.2. Informative References ................................ 23
7. Acknowledgments .......................................... 25 7. Acknowledgments .......................................... 24
Appendix A Transferring YANG Work to IEEE 1588 WG (Informational) Appendix A Transferring YANG Work to IEEE 1588 WG (Informational)
.............................................................. 26 ................................................................. 25
A.1. Assumptions for the Transfer .......................... 26 A.1. Assumptions for the Transfer .......................... 25
A.2. Intellectual Property Considerations .................. 27 A.2. Intellectual Property Considerations .................. 26
A.3. Namespace and Module Name ............................. 28 A.3. Namespace and Module Name ............................. 27
A.4. IEEE 1588 YANG Modules in ASCII Format ................ 29 A.4. IEEE 1588 YANG Modules in ASCII Format ................ 28
1. Introduction 1. Introduction
As a synchronization protocol, IEEE 1588-2008 (also known as IEEE As a synchronization protocol, IEEE 1588-2008 [IEEE1588] is widely
1588v2) [IEEE1588] is widely supported in the carrier networks, supported in the carrier networks, industrial networks, automotive
industrial networks, automotive networks, and many other networks, and many other applications. It can provide high
applications. It can provide high precision time synchronization as precision time synchronization as fine as nano-seconds. The
fine as nano-seconds. The protocol depends on a Precision Time protocol depends on a Precision Time Protocol (PTP) engine to
Protocol (PTP) engine to decide its own state automatically, and a decide its own state automatically, and a PTP transportation layer
PTP transportation layer to carry the PTP timing and various to carry the PTP timing and various quality messages. The
quality messages. The configuration parameters and state data sets configuration parameters and state data sets of IEEE 1588-2008 are
of IEEE 1588-2008 are numerous. numerous.
According to the concepts described in [RFC3444], IEEE 1588-2008 According to the concepts described in [RFC3444], IEEE 1588-2008
itself provides an information model in its normative itself provides an information model in its normative
specifications for the data sets (in IEEE 1588-2008 clause 8). Some specifications for the data sets (in IEEE 1588-2008 clause 8). Some
standardization organizations including the IETF have specified standardization organizations including the IETF have specified
data models in MIBs (Management Information Bases) for IEEE 1588- data models in MIBs (Management Information Bases) for IEEE 1588-
2008 data sets (e.g. [PTP-MIB], [IEEE8021AS]). These MIBs are 2008 data sets (e.g. [RFC8173], [IEEE8021AS]). These MIBs are
typically focused on retrieval of state data using the Simple typically focused on retrieval of state data using the Simple
Network Management Protocol (SNMP), furthermore, configuration of Network Management Protocol (SNMP), furthermore, configuration of
PTP data sets is not considered in [PTP-MIB]. PTP data sets is not considered in [RFC8173].
Some service providers and applications require that the management Some service providers and applications require that the management
of the IEEE 1588-2008 synchronization network be flexible and more of the IEEE 1588-2008 synchronization network be flexible and more
Internet-based (typically overlaid on their transport networks). Internet-based (typically overlaid on their transport networks).
Software Defined Network (SDN) is another driving factor, which Software Defined Network (SDN) is another driving factor, which
demands an improved configuration capability of synchronization demands an improved configuration capability of synchronization
networks. networks.
YANG [RFC6020] is a data modeling language used to model YANG [RFC6020] is a data modeling language used to model
configuration and state data manipulated by network management configuration and state data manipulated by network management
skipping to change at page 5, line 20 skipping to change at page 5, line 20
P2P Peer-to-Peer P2P Peer-to-Peer
PTP Precision Time Protocol PTP Precision Time Protocol
TAI International Atomic Time TAI International Atomic Time
TC Transparent Clock TC Transparent Clock
UTC Coordinated Universal Time UTC Coordinated Universal Time
PTP dataset Structured attributes of clocks (an OC, BC or TC) used
for PTP protocol decisions and for providing values for PTP message
fields, see Section 8 of [IEEE1588].
PTP instance A PTP implementation in the device (i.e., an OC or BC)
represented by a specific PTP dataset.
2. IEEE 1588-2008 YANG Model hierarchy 2. IEEE 1588-2008 YANG Model hierarchy
This section describes the hierarchy of an IEEE 1588-2008 YANG This section describes the hierarchy of an IEEE 1588-2008 YANG
module. Query and configuration of device wide or port specific module. Query and configuration of device wide or port specific
configuration information and clock data set is described for this configuration information and clock data set is described for this
version. version.
Query and configuration of clock information include: Query and configuration of clock information include:
- Clock data set attributes in a clock node, including: current-ds, - Clock data set attributes in a clock node, including: current-ds,
skipping to change at page 5, line 49 skipping to change at page 6, line 10
each of them in the YANG module. each of them in the YANG module.
A simplified graphical representation of the data model is A simplified graphical representation of the data model is
typically used by YANG modules as described in [RFC8040]. This typically used by YANG modules as described in [RFC8040]. This
document uses the same representation and the meaning of the document uses the same representation and the meaning of the
symbols in these diagrams is as follows: symbols in these diagrams is as follows:
o Brackets "[" and "]" enclose list keys. o Brackets "[" and "]" enclose list keys.
o Abbreviations before data node names: "rw" means configuration o Abbreviations before data node names: "rw" means configuration
data (read-write) and "ro" state data (read-only). data (read-write) and "ro" state data (read-only). For IEEE 1588-
2008, all data nodes are marked "rw" (see 2.2).
o Symbols after data node names: "?" means an optional node, "!" o Symbols after data node names: "?" means an optional node, "!"
means a presence container, and "*" denotes a list and leaf-list. means a presence container, and "*" denotes a list and leaf-list.
o Parentheses enclose choice and case nodes, and case nodes are o Parentheses enclose choice and case nodes, and case nodes are
also marked with a colon (":"). also marked with a colon (":").
o Ellipsis ("...") stands for contents of subtrees that are not o Ellipsis ("...") stands for contents of subtrees that are not
shown. shown.
o Arrow ("->") stands for a reference to a particular leaf o Arrow ("->") stands for a reference to a particular leaf
instance in the tree. instance in the tree.
module: ietf-ptp-dataset module: ietf-ptp
+--rw instance-list* [instance-number] +--rw ptp
| +--rw instance-number uint16 +--rw instance-list* [instance-number]
| +--rw default-ds | +--rw instance-number uint16
| | +--rw two-step-flag? boolean | +--rw default-ds
| | +--rw clock-identity? clock-identity-type | | +--rw two-step-flag? boolean
| | +--rw number-ports? uint16 | | +--rw clock-identity? clock-identity-type
| | +--rw clock-quality | | +--rw number-ports? uint16
| | | +--rw clock-class? uint8 | | +--rw clock-quality
| | | +--rw clock-accuracy? uint8 | | | +--rw clock-class? uint8
| | | +--rw offset-scaled-log-variance? uint16 | | | +--rw clock-accuracy? uint8
| | +--rw priority1? uint8 | | | +--rw offset-scaled-log-variance? uint16
| | +--rw priority2? uint8 | | +--rw priority1? uint8
| | +--rw domain-number? uint8 | | +--rw priority2? uint8
| | +--rw slave-only? boolean | | +--rw domain-number? uint8
| +--rw current-ds | | +--rw slave-only? boolean
| | +--rw steps-removed? uint16 | +--rw current-ds
| | +--rw offset-from-master? time-interval-type | | +--rw steps-removed? uint16
| | +--rw mean-path-delay? time-interval-type | | +--rw offset-from-master? time-interval-type
| +--rw parent-ds | | +--rw mean-path-delay? time-interval-type
| | +--rw parent-port-identity | +--rw parent-ds
| | | +--rw clock-identity? clock-identity-type | | +--rw parent-port-identity
| | | +--rw port-number? uint16 | | | +--rw clock-identity? clock-identity-type
| | +--rw parent-stats? boolean | | | +--rw port-number? uint16
| | +--rw observed-parent-offset-scaled-log-variance? uint16 | | +--rw parent-stats? boolean
| | +--rw observed-parent-clock-phase-change-rate? int32 | | +--rw observed-parent-offset-scaled-log-variance? uint16
| | +--rw grandmaster-identity? binary | | +--rw observed-parent-clock-phase-change-rate? int32
| | +--rw grandmaster-clock-quality | | +--rw grandmaster-identity? binary
| | | +--rw clock-class? uint8 | | +--rw grandmaster-clock-quality
| | | +--rw clock-accuracy? uint8 | | | +--rw clock-class? uint8
| | | +--rw offset-scaled-log-variance? uint16 | | | +--rw clock-accuracy? uint8
| | +--rw grandmaster-priority1? uint8 | | | +--rw offset-scaled-log-variance? uint16
| | +--rw grandmaster-priority2? uint8 | | +--rw grandmaster-priority1? uint8
| +--rw time-properties-ds | | +--rw grandmaster-priority2? uint8
| | +--rw current-utc-offset-valid? boolean | +--rw time-properties-ds
| | +--rw current-utc-offset? int16 | | +--rw current-utc-offset-valid? boolean
| | +--rw leap59? boolean | | +--rw current-utc-offset? int16
| | +--rw leap61? boolean | | +--rw leap59? boolean
| | +--rw time-traceable? boolean | | +--rw leap61? boolean
| | +--rw frequency-traceable? boolean | | +--rw time-traceable? boolean
| | +--rw ptp-timescale? boolean | | +--rw frequency-traceable? boolean
| | +--rw time-source? uint8 | | +--rw ptp-timescale? boolean
| +--rw port-ds-list* [port-number] | | +--rw time-source? uint8
| +--rw port-number -> ../port-identity/port-number | +--rw port-ds-list* [port-number]
| +--rw port-identity | +--rw port-number uint16
| | +--rw clock-identity? clock-identity-type | +--rw port-state? port-state-enumeration
| | +--rw port-number? uint16 | +--rw underlying-interface? if:interface-ref
| +--rw port-state? port-state-enumeration | +--rw log-min-delay-req-interval? int8
| +--rw underlying-interface? if:interface-ref | +--rw peer-mean-path-delay? time-interval-type
| +--rw log-min-delay-req-interval? int8 | +--rw log-announce-interval? int8
| +--rw peer-mean-path-delay? time-interval-type | +--rw announce-receipt-timeout? uint8
| +--rw log-announce-interval? int8 | +--rw log-sync-interval? int8
| +--rw announce-receipt-timeout? uint8 | +--rw delay-mechanism? delay-mechanism-enumeration
| +--rw log-sync-interval? int8 | +--rw log-min-pdelay-req-interval? int8
| +--rw delay-mechanism? delay-mechanism-enumeration | +--rw version-number? uint8
| +--rw log-min-pdelay-req-interval? int8 +--rw transparent-clock-default-ds
| +--rw version-number? uint8 | +--rw clock-identity? clock-identity-type
+--rw transparent-clock-default-ds | +--rw number-ports? uint16
| +--rw clock-identity? clock-identity-type | +--rw delay-mechanism? delay-mechanism-enumeration
| +--rw number-ports? uint16 | +--rw primary-domain? uint8
| +--rw delay-mechanism? delay-mechanism-enumeration +--rw transparent-clock-port-ds-list* [port-number]
| +--rw primary-domain? uint8 +--rw port-number uint16
+--rw transparent-clock-port-ds-list* [port-number] +--rw clock-identity? clock-identity-type
+--rw port-number -> ../port-identity/port-number +--rw log-min-pdelay-req-interval? int8
+--rw port-identity +--rw faulty-flag? boolean
| +--rw clock-identity? clock-identity-type +--rw peer-mean-path-delay? time-interval-type
| +--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. Interpretations from IEEE 1588 Working Group
The preceding model and the associated YANG module have some subtle The preceding model and the associated YANG module have some subtle
differences from the data set specifications of IEEE Std 1588-2008. differences from the data set specifications of IEEE Std 1588-2008.
These differences are based on interpretation from the IEEE 1588 These differences are based on interpretation from the IEEE 1588
Working Group, and are intended to provide compatibility with Working Group, and are intended to provide compatibility with
future revisions of the IEEE 1588 standard. future revisions of the IEEE 1588 standard.
In IEEE Std 1588-2008, a physical product can implement multiple In IEEE Std 1588-2008, a physical product can implement multiple
PTP clocks (i.e. ordinary, boundary, or transparent clock). As PTP clocks (i.e. ordinary, boundary, or transparent clock). As
specified in 1588-2008 subclause 7.1, each of the multiple clocks specified in 1588-2008 subclause 7.1, each of the multiple clocks
operates in an independent domain. However, the organization of operates in an independent domain. However, the organization of
multiple PTP domains was not clear in the data sets of IEEE Std multiple PTP domains was not clear in the data sets of IEEE Std
1588-2008. This document introduces the concept of PTP instance as 1588-2008. This document introduces the concept of PTP instance as
described in the new revision of IEEE 1588. The instance concept is described in the new revision of IEEE 1588. The instance concept is
used exclusively to allow for optional support of multiple domains. used exclusively to allow for optional support of multiple domains.
The instance number has no usage within PTP messages. The instance number has no usage within PTP messages.
Based on statements in IEEE 1588-2008 subclauses 8.3.1. and 10.1, Based on statements in IEEE 1588-2008 subclauses 8.3.1 and 10.1,
most transparent clock products have interpreted the transparent most transparent clock products have interpreted the transparent
clock data sets to reside as a singleton at the root level of the clock data sets to reside as a singleton at the root level of the
managed product. Since 1588-2008 transparent clocks are domain managed product, and this YANG model reflects that location.
independent, the instance concept is not applicable for domains.
2.2. Configuration and state 2.2. Configuration and state
The information model of IEEE Std 1588-2008 classifies each member The information model of IEEE Std 1588-2008 classifies each member
in PTP data sets as one of the following: in PTP data sets as one of the following:
- Configurable: Writable by management. - Configurable: Writable by management.
- Dynamic: Read-only to management, and the value is changed by - Dynamic: Read-only to management, and the value is changed by
1588 protocol operation. 1588 protocol operation.
- Static: Read-only to management, and the value typically does not - Static: Read-only to management, and the value typically does not
change. change.
Under certain circumstances, the classification of an IEEE 1588 Under certain circumstances, the classification of an IEEE 1588
data set member can change. For example, each PTP port's port-state data set member can change. For details on the classification of
is normally Dynamic, i.e., it is read-only to management and only each PTP data set member, refer to the IEEE Std 1588-2008
IEEE 1588 protocol determines its value. Nevertheless, some IEEE specification for that member.
1588-2008 products support a proprietary boolean attribute (e.g.,
leaf in a product-specific 1588 YANG augment) that allows the port-
state to be configured externally. When the proprietary boolean is
false, the port-state is Dynamic, representing YANG state data.
When the proprietary boolean is true, the port-state is
Configurable, representing YANG configuration data.
Future revisions of the IEEE 1588 standard are considering formal
standardization of this sort of proprietary feature, this will be
reflected in future 1588 YANG module revisions but out scope of
this document.
Due to the fact that the classification of 1588 members can change,
this model uses a single-tree of YANG hierarch rather than
separates it into a configuration data tree and a state data tree.
For details on the classification of each PTP data set member,
refer to the IEEE Std 1588-2008 specification for that member.
3. IEEE 1588-2008 YANG Module 3. IEEE 1588-2008 YANG Module
<CODE BEGINS> file "ietf-ptp-dataset@2017-04-20.yang" <CODE BEGINS> file "ietf-ptp@2017-10-20.yang"
module ietf-ptp-dataset{ module ietf-ptp {
namespace "urn:ietf:params:xml:ns:yang:ietf-ptp-dataset"; namespace "urn:ietf:params:xml:ns:yang:ietf-ptp";
prefix "ptp-dataset"; prefix "ptp";
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
} }
organization "IETF TICTOC Working Group"; organization "IETF TICTOC Working Group";
contact contact
"WG Web: http://tools.ietf.org/wg/tictoc/ "WG Web: http://tools.ietf.org/wg/tictoc/
WG List: <mailto:tictoc@ietf.org> WG List: <mailto:tictoc@ietf.org>
WG Chair: Karen O'Donoghue WG Chair: Karen O'Donoghue
<mailto:odonoghue@isoc.org> <mailto:odonoghue@isoc.org>
WG Chair: Yaakov Stein WG Chair: Yaakov Stein
<mailto: Yaakov_s@rad.com> <mailto: Yaakov_s@rad.com>
Editor: Yuanlong Jiang Editor: Yuanlong Jiang
<mailto:jiangyuanlong@huawei.com> <mailto:jiangyuanlong@huawei.com>
Editor: Rodney Cummings Editor: Rodney Cummings
<mailto:rodney.cummings@ni.com>"; <mailto:rodney.cummings@ni.com>";
description description
"This YANG module defines a data model for the configuration "This YANG module defines a data model for the configuration
of IEEE 1588-2008 clocks, and also for retrieval of the state of IEEE 1588-2008 clocks, and also for retrieval of the state
data of IEEE 1588-2008 clocks."; data of IEEE 1588-2008 clocks.";
revision "2017-04-20" { revision "2017-10-20" {
description "Version 5.0"; description "Version 6.0";
reference "draft-ietf-tictoc-1588v2-yang"; reference "draft-ietf-tictoc-1588v2-yang";
} }
typedef delay-mechanism-enumeration { typedef delay-mechanism-enumeration {
type enumeration { type enumeration {
enum E2E { enum e2e {
value 1; value 1;
description description
"The port uses the delay request-response "The port uses the delay request-response mechanism.";
mechanism.";
} }
enum P2P { enum p2p {
value 2; value 2;
description description
"The port uses the peer delay mechanism."; "The port uses the peer delay mechanism.";
} }
enum DISABLED { enum disabled {
value 254; value 254;
description description
"The port does not implement any delay "The port does not implement any delay mechanism.";
mechanism.";
} }
} }
description description
"The propagation delay measuring option used by the "The propagation delay measuring option used by the
port. Values for this enumeration are specified port. Values for this enumeration are specified
by the IEEE 1588 standard exclusively."; by the IEEE 1588 standard exclusively.";
reference reference
"IEEE Std 1588-2008: 8.2.5.4.4"; "IEEE Std 1588-2008: 8.2.5.4.4";
} }
typedef port-state-enumeration { typedef port-state-enumeration {
type enumeration { type enumeration {
enum INITIALIZING { enum initializing {
value 1; value 1;
description description
"The port is initializing its data sets, hardware, and "The port is initializing its data sets, hardware, and
communication facilities."; communication facilities.";
} }
enum FAULTY { enum faulty {
value 2; value 2;
description description
"The port is in the fault state."; "The port is in the fault state.";
} }
enum DISABLED { enum disabled {
value 3; value 3;
description description
"The port is disabled, and is not communicating PTP "The port is disabled, and is not communicating PTP
messages (other than possibly PTP management messages (other than possibly PTP management
messages)."; messages).";
} }
enum LISTENING { enum listening {
value 4; value 4;
description description
"The port is listening for an Announce message."; "The port is listening for an Announce message.";
} }
enum PRE_MASTER { enum pre-master {
value 5; value 5;
description description
"The port is in the pre-master state."; "The port is in the pre-master state.";
} }
enum MASTER { enum master {
value 6; value 6;
description description
"The port is behaving as a master port."; "The port is behaving as a master port.";
} }
enum PASSIVE { enum passive {
value 7; value 7;
description description
"The port is in the passive state."; "The port is in the passive state.";
} }
enum UNCALIBRATED { enum uncalibrated {
value 8; value 8;
description description
"A master port has been selected, but the port is still "A master port has been selected, but the port is still
in the uncalibrated state."; in the uncalibrated state.";
} }
enum SLAVE { enum slave {
value 9; value 9;
description description
"The port is synchronizing to the selected "The port is synchronizing to the selected master port.";
master port.";
} }
} }
description description
"The current state of the protocol engine associated "The current state of the protocol engine associated
with the port. Values for this enumeration are specified with the port. Values for this enumeration are specified
by the IEEE 1588 standard exclusively."; by the IEEE 1588 standard exclusively.";
reference reference
"IEEE Std 1588-2008: 8.2.5.3.1, 9.2.5"; "IEEE Std 1588-2008: 8.2.5.3.1, 9.2.5";
} }
typedef time-interval-type { typedef time-interval-type {
type int64; type int64;
description description
"Derived data type for time interval, "Derived data type for time interval, represented in units of
represented in units of nanoseconds and nanoseconds and multiplied by 2^16";
multipled by 2^16";
reference reference
"IEEE Std 1588-2008: 5.3.2"; "IEEE Std 1588-2008: 5.3.2";
} }
typedef clock-identity-type { typedef clock-identity-type {
type binary { type binary {
length "8"; length "8";
} }
description description
"Derived data type to identify a clock"; "Derived data type to identify a clock";
reference reference
"IEEE Std 1588-2008: 5.3.4"; "IEEE Std 1588-2008: 5.3.4";
}
grouping port-identity-grouping {
description
"Derived data type to identify a port, which 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";
}
} }
grouping clock-quality-grouping { grouping clock-quality-grouping {
description description
"Derived data type for quality of a clock, which contains "Derived data type for quality of a clock, which contains
clockClass, clockAccuracy and offsetScaledLogVariance."; clockClass, clockAccuracy and offsetScaledLogVariance.";
reference reference
"IEEE Std 1588-2008: 5.3.7"; "IEEE Std 1588-2008: 5.3.7";
leaf clock-class { leaf clock-class {
type uint8; type uint8;
default 248; default 248;
description description
"The clockClass denotes the traceability of the time "The clockClass denotes the traceability of the time
or frequency distributed by the clock."; or frequency distributed by the clock.";
} }
leaf clock-accuracy { leaf clock-accuracy {
type uint8; type uint8;
description description
"The clockAccuracy indicates the expected accuracy "The clockAccuracy indicates the expected accuracy
of the clock."; of the clock.";
} }
leaf offset-scaled-log-variance { leaf offset-scaled-log-variance {
type uint16; type uint16;
description description
"The offsetScaledLogVariance provides an "The offsetScaledLogVariance provides an estimate of
estimate of the variations of the clock the variations of the clock from a linear timescale
from a linear timescale when it is not synchronized when it is not synchronized to another clock
to another clock using the protocol."; using the protocol.";
} }
} }
grouping default-ds-entry { container ptp {
description description
"Collection of members of the default data set."; "The PTP struct containing all attributes of PTP Dataset,
other optional PTP attributes can be augmented as well.";
list instance-list {
key "instance-number";
leaf two-step-flag {
type boolean;
description description
"List of one or more PTP datasets in the device (see IEEE
Std 1588-2008 subclause 6.3).
Each PTP dataset represents a distinct instance of
PTP implementation in the device (i.e. distinct
Ordinary Clock or Boundary Clock).";
leaf instance-number {
type uint16;
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).";
leaf two-step-flag {
type boolean;
description
"When set, the clock is a two-step clock; otherwise, "When set, the clock is a two-step clock; otherwise,
the clock is a one-step clock."; the clock is a one-step clock.";
} }
leaf clock-identity { leaf clock-identity {
type clock-identity-type; type clock-identity-type;
description description
"The clockIdentity of the local clock"; "The clockIdentity of the local clock";
} }
leaf number-ports { leaf number-ports {
type uint16; type uint16;
description description
"The number of PTP ports on the device."; "The number of PTP ports on the instance.";
} }
container clock-quality { container clock-quality {
description description
"The clockQuality of the local clock."; "The clockQuality of the local clock.";
uses clock-quality-grouping; uses clock-quality-grouping;
} }
leaf priority1 { leaf priority1 {
type uint8; type uint8;
description description
"The priority1 attribute of the local clock."; "The priority1 attribute of the local clock.";
} }
leaf priority2{
type uint8;
description
"The priority2 attribute of the local clock. ";
}
leaf priority2{ leaf domain-number {
type uint8; type uint8;
description description
"The priority2 attribute of the local clock. "; "The domain number of the current syntonization
domain.";
}
} leaf slave-only {
type boolean;
description
"When set, the clock is a slave-only clock.";
}
leaf domain-number { }
type uint8;
description
"The domain number of the current syntonization
domain.";
}
leaf slave-only { container current-ds {
type boolean; description
description "The current data set of the clock (see IEEE Std
"When set, the clock is a slave-only clock."; 1588-2008 subclause 8.2.2).";
}
}
grouping current-ds-entry { leaf steps-removed {
description type uint16;
"Collection of members of current data set."; default 0;
description
"The number of communication paths traversed
between the local clock and the grandmaster clock.";
}
leaf steps-removed { leaf offset-from-master {
type uint16; type time-interval-type;
default 0; description
description "The current value of the time difference between
"The number of communication paths traversed a master and a slave clock as computed by the slave.";
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 { leaf mean-path-delay {
type time-interval-type; type time-interval-type;
description description
"The current value of the mean propagation time between "The current value of the mean propagation time between
a master and a slave clock as computed by the slave."; a master and a slave clock as computed by the slave.";
} }
}
grouping parent-ds-entry { }
description
"Collection of members of the parent data set."; container parent-ds {
description
"The parent data set of the clock (see IEEE Std 1588-2008
subclause 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, 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 binary {
length "8";
}
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 parent-port-identity {
description
"The portIdentity of the port on the master";
uses port-identity-grouping;
}
leaf parent-stats {
type boolean;
default false;
description
"When set, the values of
observedParentOffsetScaledLogVariance and
observedParentClockPhaseChangeRate of parentDS
have been measured and are valid.";
}
leaf observed-parent-offset-scaled-log-variance {
type uint16;
default 0xFFFF;
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 binary{
length "8";
} }
description container time-properties-ds {
"The clockIdentity attribute of the grandmaster clock."; description
"The timeProperties data set of the clock (see
IEEE Std 1588-2008 subclause 8.2.4).";
} leaf current-utc-offset-valid {
container grandmaster-clock-quality { type boolean;
description description
"The clockQuality of the grandmaster clock."; "When set, the current UTC offset is valid.";
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.";
}
} leaf current-utc-offset {
type int16;
description
"The offset between TAI and UTC when the epoch of the
PTP system is the PTP epoch, i.e., when ptp-timescale
is TRUE; otherwise, the value has no meaning.";
}
grouping time-properties-ds-entry { leaf leap59 {
description type boolean;
"Collection of members of the timeProperties data set."; description
leaf current-utc-offset-valid {
type boolean;
description
"When set, the current UTC offset is valid.";
}
leaf current-utc-offset {
type int16;
description
"The offset between TAI and UTC when the epoch of the
PTP system is the PTP epoch, i.e., when ptp-timescale
is TRUE; otherwise, the value has no meaning.";
}
leaf leap59 {
type boolean;
description
"When set, the last minute of the current UTC day
contains 59 seconds.";
}
leaf leap61 {
type boolean;
description
"When set, the last minute of the current UTC day "When set, the last minute of the current UTC day
contains 61 seconds."; contains 59 seconds.";
} }
leaf time-traceable {
type boolean;
description
"When set, the timescale and the currentUtcOffset are
traceable to a primary reference.";
}
leaf frequency-traceable {
type boolean;
description
"When set, the frequency determining the timescale
is traceable to a primary reference.";
}
leaf ptp-timescale {
type boolean;
description
"When set, 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.";
}
}
grouping port-ds-entry { leaf leap61 {
description type boolean;
"Collection of members of the port data set."; description
"When set, the last minute of the current UTC day
contains 61 seconds.";
}
container port-identity { leaf time-traceable {
description type boolean;
"The portIdentity attribute of the local port."; description
uses port-identity-grouping; "When set, the timescale and the currentUtcOffset are
} traceable to a primary reference.";
}
leaf port-state { leaf frequency-traceable {
type port-state-enumeration; type boolean;
default "INITIALIZING"; description
description "When set, the frequency determining the timescale
"Current state associated with the port."; is traceable to a primary reference.";
} }
leaf underlying-interface { leaf ptp-timescale {
type if:interface-ref; type boolean;
description description
"Reference to the configured underlying interface that is "When set, the clock timescale of the grandmaster
used by this PTP Port (see RFC 7223)."; clock is PTP; otherwise, the timescale is ARB
} (arbitrary).";
}
leaf log-min-delay-req-interval { leaf time-source {
type int8; type uint8;
description description
"The base-two logarithm of the minDelayReqInterval "The source of time used by the grandmaster clock.";
(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 { list port-ds-list {
type int8; key "port-number";
description description
"The base-two logarithm of the mean "List of port data sets of the clock (see IEEE Std
announceInterval (mean time interval between 1588-2008 subclause 8.2.5).";
successive Announce messages).";
}
leaf announce-receipt-timeout { leaf port-number{
type uint8; type uint16;
description description
"The number of announceInterval that have to pass "Port number.
without receipt of an Announce message before the The data sets (i.e. information model) of IEEE Std
occurrence of the event ANNOUNCE_RECEIPT_TIMEOUT_ 1588-2008 specify a member portDS.portIdentity, which
EXPIRES."; uses a typed struct with members clockIdentity and
} portNumber.
leaf log-sync-interval { In this YANG data model, portIdentity is not modeled
type int8; in the port-ds-list, however, its members are provided
description as follows:
"The base-two logarithm of the mean SyncInterval portIdentity.portNumber is provided as this port-
for multicast messages. The rates for unicast number leaf in port-ds-list; and
transmissions are negotiated separately on a per port portIdentity.clockIdentity is provided as the clock-
basis and are not constrained by this attribute."; identity leaf in default-ds of the instance
} (i.e. ../../default-ds /clock-identity).";
}
leaf delay-mechanism { leaf port-state {
type delay-mechanism-enumeration; type port-state-enumeration;
description default "initializing";
"The propagation delay measuring option used by the description
port in computing meanPathDelay."; "Current state associated with the port.";
} }
leaf log-min-pdelay-req-interval { leaf underlying-interface {
type int8; type if:interface-ref;
description description
"The base-two logarithm of the "Reference to the configured underlying interface that
minPdelayReqInterval (minimum permitted mean time is used by this PTP Port (see RFC 7223).";
interval between successive Pdelay_Req messages)."; }
} leaf log-min-delay-req-interval {
type int8;
description
"The base-two logarithm of the minDelayReqInterval
(the minimum permitted mean time interval between
successive Delay_Req messages).";
}
leaf version-number { leaf peer-mean-path-delay {
type uint8; type time-interval-type;
description default 0;
"The PTP version in use on the port."; description
} "An estimate of the current one-way propagation delay
} on the link when the delayMechanism is P2P; otherwise,
it is zero.";
}
grouping transparent-clock-default-ds-entry { leaf log-announce-interval {
description type int8;
"Collection of members of the transparentClockDefault data description
set (default data set for a transparent clock)."; "The base-two logarithm of the mean
announceInterval (mean time interval between
successive Announce messages).";
}
leaf clock-identity { leaf announce-receipt-timeout {
type clock-identity-type; type uint8;
description description
"The clockIdentity of the transparent clock."; "The number of announceInterval that have to pass
} without receipt of an Announce message before the
leaf number-ports { occurrence of the event ANNOUNCE_RECEIPT_TIMEOUT_
type uint16; EXPIRES.";
description }
"The number of PTP ports on the device.";
}
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.";
} leaf log-sync-interval {
} type int8;
description
"The base-two 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.";
}
grouping transparent-clock-port-ds-entry { leaf delay-mechanism {
description type delay-mechanism-enumeration;
"Collection of members of the transparentClockPort data description
set (port data set for a transparent clock)."; "The propagation delay measuring option used by the
port in computing meanPathDelay.";
}
container port-identity { leaf log-min-pdelay-req-interval {
description type int8;
"The portIdentity of the local port."; description
"The base-two logarithm of the
minPdelayReqInterval (minimum permitted mean time
interval between successive Pdelay_Req messages).";
uses port-identity-grouping; }
}
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, 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.";
}
}
list instance-list { leaf version-number {
type uint8;
description
"The PTP version in use on the port.";
}
key "instance-number"; }
}
description container transparent-clock-default-ds {
"List of one or more PTP datasets in the device, one for description
each domain (see IEEE 1588-2008 subclause 6.3). "The members of the transparentClockDefault Data Set (see
Each PTP dataset represents a distinct instance of IEEE Std 1588-2008 subclause 8.3.2).";
PTP implementation in the device (i.e. distinct
Ordinary Clock or Boundary Clock).";
leaf instance-number { leaf clock-identity {
type uint16; type clock-identity-type;
description
"The instance number of the current PTP instance";
}
container default-ds {
description description
"The default data set of the clock."; "The clockIdentity of the transparent clock.";
uses default-ds-entry;
} }
leaf number-ports {
container current-ds { type uint16;
description description
"The current data set of the clock."; "The number of PTP ports on the Transparent Clock.";
uses current-ds-entry;
} }
leaf delay-mechanism {
container parent-ds { type delay-mechanism-enumeration;
description description
"The parent data set of the clock."; "The propagation delay measuring option
uses parent-ds-entry; used by the transparent clock.";
} }
leaf primary-domain {
container time-properties-ds { type uint8;
default 0;
description description
"The timeProperties data set of the clock."; "The domainNumber of the primary syntonization domain.";
uses time-properties-ds-entry;
} }
list port-ds-list { }
key "port-number";
description list transparent-clock-port-ds-list {
"List of port data sets of the clock."; key "port-number";
leaf port-number{ description
type leafref{ "List of transparentClockPort data sets of the transparent
path "../port-identity/port-number"; clock (see IEEE Std 1588-2008 subclause 8.3.3).";
}
leaf port-number {
type uint16;
description description
"Refers to the portNumber memer of "Port number.
portDS.portIdentity."; The data sets (i.e. information model) of IEEE Std
} 1588-2008 specify a member
uses port-ds-entry; 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,
portIdentity.portNumber is provided as this leaf member
in transparent-clock-port-ds-list.";
} }
}
container transparent-clock-default-ds { leaf clock-identity {
description type clock-identity-type;
"The members of the transparentClockDefault Data Set"; description
uses transparent-clock-default-ds-entry; "clock-identity.
} 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.
list transparent-clock-port-ds-list { In this YANG data model, portIdentity is not modeled in
key "port-number"; the transparent-clock-port-ds-list, however,
description portIdentity.clockIdentity is provided as this leaf
"List of transparentClockPort data sets member in transparent-clock-port-ds-list.";
of the transparent clock."; }
leaf port-number { leaf log-min-pdelay-req-interval {
type leafref { type int8;
path "../port-identity/port-number";
}
description description
"Refers to the portNumber memer "The logarithm to the base 2 of the
of transparentClockPortDS.portIdentity."; minPdelayReqInterval (minimum permitted mean time
interval between successive Pdelay_Req messages).";
} }
uses transparent-clock-port-ds-entry; leaf faulty-flag {
} type boolean;
default false;
description
"When set, 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.";
}
}
}
} }
<CODE ENDS> <CODE ENDS>
4. Security Considerations 4. Security Considerations
YANG modules are designed to be accessed via the NETCONF protocol YANG modules are designed to be accessed via the NETCONF protocol
[RFC6241], thus security considerations in [RFC6241] apply here. [RFC6241], thus security considerations in [RFC6241] apply here.
Security measures such as using the NETCONF over SSH [RFC6242] and Security measures such as using the NETCONF over SSH [RFC6242] and
restricting its use with access control [RFC6536] can further restricting its use with access control [RFC6536] can further
improve its security, avoid injection attacks and misuse of the improve its security, avoid injection attacks and misuse of the
protocol. protocol. Furthermore, general security considerations of time
protocols are discussed in [RFC7384].
Some data nodes defined in this YANG module are writable, and any Some data nodes defined in this YANG module are writable, and an
changes to them may adversely impact a synchronization network. inappropriate use of them may adversely impact a 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.
5. IANA Considerations 5. IANA Considerations
This document registers a URI in the IETF XML registry, and the This document registers a URI in the IETF XML registry, and the
following registration is requested to be made: following registration is requested to be made:
URI: urn:ietf:params:xml:ns:yang:ietf-ptp-dataset URI: urn:ietf:params:xml:ns:yang:ietf-ptp-dataset
This document registers a YANG module in the YANG Module Names: This document registers a YANG module in the YANG Module Names:
name: ietf-ptp-dataset namespace: urn:ietf:params:xml:ns:yang:ietf- name: ietf-ptp-dataset namespace: urn:ietf:params:xml:ns:yang:ietf-
ptp-dataset ptp-dataset
skipping to change at page 24, line 21 skipping to change at page 23, line 42
[IEEE1588] IEEE, "IEEE Standard for a Precision Clock [IEEE1588] IEEE, "IEEE Standard for a Precision Clock
Synchronization Protocol for Networked Measurement and Synchronization Protocol for Networked Measurement and
Control Systems", IEEE Std 1588-2008, July 2008 Control Systems", IEEE Std 1588-2008, July 2008
6.2. Informative References 6.2. Informative References
[IEEE8021AS] IEEE, "Timing and Synchronizations for Time-Sensitive [IEEE8021AS] IEEE, "Timing and Synchronizations for Time-Sensitive
Applications in Bridged Local Area Networks", IEEE Applications in Bridged Local Area Networks", IEEE
802.1AS-2001, 2011 802.1AS-2001, 2011
[PTP-MIB] Shankarkumar, V., Montini, L., Frost, T., and Dowd, G.,
"Precision Time Protocol Version 2 (PTPv2) Management
Information Base", draft-ietf-tictoc-ptp-mib-12, Work in
progress
[RFC8040] Bierman, A., Bjorklund, M., and Watsen, K., "RESTCONF
protocol", RFC 8040, January 2017
[RFC3444] Pras, A. and J. Schoenwaelder, "On the Difference between [RFC3444] Pras, A. and J. Schoenwaelder, "On the Difference between
Information Models and Data Models", RFC 3444, January Information Models and Data Models", RFC 3444, January
2003 2003
[RFC4663] Harrington, D., "Transferring MIB Work from IETF Bridge [RFC4663] Harrington, D., "Transferring MIB Work from IETF Bridge
MIB WG to IEEE 802.1 WG", RFC 4663, September 2006 MIB WG to IEEE 802.1 WG", RFC 4663, September 2006
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A.
Bierman, "Network Configuration Protocol (NETCONF)", RFC Bierman, "Network Configuration Protocol (NETCONF)", RFC
6241, June 2011 6241, June 2011
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, June 2011 Shell (SSH)", RFC 6242, June 2011
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", RFC 6536, March Protocol (NETCONF) Access Control Model", RFC 6536, March
2012 2012
[RFC7384] Mizrahi, T., "Security Requirements of Time Protocols in
Packet Switched Networks", RFC 7384, October 2014
[RFC8040] Bierman, A., Bjorklund, M., and Watsen, K., "RESTCONF
protocol", RFC 8040, January 2017
[RFC8173] Shankarkumar, V., Montini, L., Frost, T., and Dowd, G.,
"Precision Time Protocol Version 2 (PTPv2) Management
Information Base", RFC 8173, June 2017
7. Acknowledgments 7. Acknowledgments
The authors would like to thank Joe Gwinn, Mahesh Jethanandani, Tal The authors would like to thank Joe Gwinn, Mahesh Jethanandani, Tal
Mizrahi, Opher Ronen and Liang Geng for their valuable reviews and Mizrahi, Opher Ronen, Liang Geng, Alex Campbell, and John Fletcher
suggestions, and thank Benoit Claise and Radek Krejci for their for their valuable reviews and suggestions, and thank Benoit Claise
validation of the YANG module. and Radek Krejci for their validation of the YANG module.
Appendix A Transferring YANG Work to IEEE 1588 WG (Informational) Appendix A Transferring YANG Work to IEEE 1588 WG (Informational)
This appendix describes a future plan to transition responsibility This appendix describes a future plan to transition responsibility
for IEEE 1588 YANG modules from the IETF TICTOC Working Group (WG) for IEEE 1588 YANG modules from the IETF TICTOC Working Group (WG)
to the IEEE 1588 WG, which develops the time synchronization to the IEEE 1588 WG, which develops the time synchronization
technology that the YANG modules are designed to manage. technology that the YANG modules are designed to manage.
This appendix is forward-looking with regard to future This appendix is forward-looking with regard to future
standardization roadmaps in IETF and IEEE. Since those roadmaps standardization roadmaps in IETF and IEEE. Since those roadmaps
skipping to change at page 31, line 14 skipping to change at page 30, line 14
Authors' Addresses Authors' Addresses
Yuanlong Jiang (Editor) Yuanlong Jiang (Editor)
Huawei Technologies Co., Ltd. Huawei Technologies Co., Ltd.
Bantian, Longgang district Bantian, Longgang district
Shenzhen 518129, China Shenzhen 518129, China
Email: jiangyuanlong@huawei.com Email: jiangyuanlong@huawei.com
Xian Liu Xian Liu
Huawei Technologies Co., Ltd. Independent
Bantian, Longgang district
Shenzhen 518129, China Shenzhen 518129, China
lene.liuxian@huawei.com lene.liuxian@foxmail.com
Jinchun Xu Jinchun Xu
Huawei Technologies Co., Ltd. Huawei Technologies Co., Ltd.
Bantian, Longgang district Bantian, Longgang district
Shenzhen 518129, China Shenzhen 518129, China
xujinchun@huawei.com xujinchun@huawei.com
Rodney Cummings (Editor) Rodney Cummings (Editor)
National Instruments National Instruments
11500 N. Mopac Expwy 11500 N. Mopac Expwy
 End of changes. 118 change blocks. 
567 lines changed or deleted 558 lines changed or added

This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/