Internet DRAFT - draft-xiaobn-flexe-yang-mod
draft-xiaobn-flexe-yang-mod
Internet Engineering Task Force X. Niu, Ed.
Internet-Draft Q. Wang, Ed.
Intended status: Informational ZTE
Expires: April 25, 2019 October 22, 2018
A YANG Data Model for Flex Ethernet(FlexE)
draft-xiaobn-flexe-yang-mod-00
Abstract
Flex Ethernet(FlexE) implementation agreement have been published by
OIF. FlexE provides a generic mechanism for supporting a variety of
Ethernet MAC rates that may or may not correspond to any existing
Ethernet PHY rate.
This document describes a YANG data model for FlexE. It can be used
to manage and control devices supporting FlexE functions.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 25, 2019.
Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the
document authors. All rights reserved.
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
Niu & Wang Expires April 25, 2019 [Page 1]
Internet-Draft FlexE yang model October 2018
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1. Requirements Language . . . . . . . . . . . . . . . . . . 3
2.2. FlexE terminology used in this document . . . . . . . . . 3
3. FlexE Reference Configuration Model . . . . . . . . . . . . . 4
4. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 4
4.1. Requirements . . . . . . . . . . . . . . . . . . . . . . 4
5. YANG Data Model for FlexE (Tree Structure) . . . . . . . . . 5
6. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 7
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14
8. Authors (Full List) . . . . . . . . . . . . . . . . . . . . . 14
9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 15
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15
11. Security Considerations . . . . . . . . . . . . . . . . . . . 15
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 16
12.1. Normative References . . . . . . . . . . . . . . . . . . 16
12.2. Informative References . . . . . . . . . . . . . . . . . 16
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17
1. Introduction
Flex Ethernet (FlexE) implementation agreement version 1.0
[OIFFLEXE1] and 2.0 [OIFFLEXE2] have been published by OIF. FlexE
provides a generic mechanism for supporting a variety of Ethernet MAC
rates that may or may not correspond to any existing Ethernet PHY
rate. This includes MAC rates that are both greater than (through
bonding) and less than (through sub-rate and channelization) the
Ethernet PHY rates used to carry FlexE.
This document defines a date model of FlexE, using YANG[RFC7950].
This model mainly deals with the data model of the FlexE Group and
the FlexE client. It can be used by an application to configure and
modify the parameters of the FlexE Group and the FlexE client, and to
receive notifications, e.g. mismatch errors, from devices supporting
FlexE functions.
Requirements for the FlexE YANG model are considered. And FlexE YANG
tree and YANG files are given.
Niu & Wang Expires April 25, 2019 [Page 2]
Internet-Draft FlexE yang model October 2018
2. Terminology
A simplified graphical representation of the data model is used in
this document. The meaning of the symbols in the YANG data tree
presented later in this document is defined in [RFC8340]. They are
provided below for reference.
o Brackets "[" and "]" enclose list keys.
o Abbreviations before data node names: "rw" means configuration
(read-write) and "ro" state data (read-only).
o Symbols after data node names: "?" means an optional node, "!"
means a presence container, and "*" denotes a list and leaf-list.
o Parentheses enclose choice and case nodes, and case nodes are also
marked with a colon (":").
o Ellipsis ("...") stands for contents of subtrees that are not
shown.
o Some of the key terms used in this document are listed as follow.
2.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
2.2. FlexE terminology used in this document
a. CSG: Calendar Slot Granularity. It can be 5G or 25G.
b. FlexE Calendar: In FlexE IA v1.0, the total capacity of a FlexE
Group is represented as a collection of slots which have a
granularity of 5G. The calendar for a FlexE Group composed of n
100G PHYs is represented as an array of 20n slots (each
representing 5G of bandwidth). This calendar is partitioned into
sub-calendars, with 20 slots per 100G PHY. Each FlexE client is
mapped into one or more calendar slots (based on the bandwidth
the FlexE client flow will need). In FlexE IA v2.0[OIFFLEXE2],
the total capacity of a FlexE Group is represented as a
collection of slots which may have a granularity of 5G or 25G.
The calendar for a FlexE Group composed of n 100G FlexE instances
from m 100G/200G/400G PHYs is represented as an array of 20n
slots (each representing 5G of bandwidth) or 4n slots (25G
granularity).
Niu & Wang Expires April 25, 2019 [Page 3]
Internet-Draft FlexE yang model October 2018
c. FlexE Client: An Ethernet flow based on a MAC data rate that may
or may not correspond to any Ethernet PHY rate.
d. FlexE Group: A FlexE Group is composed of from 1 to n 100G FlexE
Instances that are carried by a group of from 1 to m bonded
Ethernet PHYs.
e. FlexE instance: A 100G FlexE Instance is a unit of information
consisting of 100G of capacity able to carry FlexE Client data,
together with its associated overhead.
Detailed description of these terms can be found in [OIFFLEXE1] and
[OIFFLEXE2] .
3. FlexE Reference Configuration Model
FlexE can be implemented between the FlexE mux and demux in two end
devices connected directly by the FlexE links. In this case, FlexE
is just a link connection technology.
FlexE can also be transported by transport networks. There are three
kinds of transport network mapping mechanisms for FlexE signals, that
is, FlexE unaware transport, FlexE termination in the transport
network and FlexE aware transport.
How to configure the ingress or egress of transport network about
FlexE mapping relationship may be application specific. In this
document, the part of YANG data model for the transport network
mapping for FlexE is not included at present.
4. Requirements
4.1. Requirements
This section summarizes the management requirements for the FlexE
Group and the FlexE Client.
Req-1 The model SHALL support the management of the FlexE Group,
consisting of one or more 100G FlexE instances which carried by one
or more 100GE, 200GE, 400GE Ethernet PHY(s).
The detailed management covers the CURD functions (create, update,
read and delete), and lock/unlock.
Req-2 The model SHOULD be able to verify that the collection of
Ethernet PHY(s) included in a FlexE Group have the same
characteristics (e.g. number of PHYs, rate of PHYs, etc.) at the
Niu & Wang Expires April 25, 2019 [Page 4]
Internet-Draft FlexE yang model October 2018
local FlexE shims. If inconsistency exists, notifications (e.g.
errors) SHOULD be invoked.
Req-3 The model SHOULD be able to verify that the collection of FlexE
instances included in a FlexE Group have the same characteristics
(e.g. calendar slot granularity, unequipped slots, etc.) at the local
FlexE shims. If inconsistency exists, notifications (e.g. errors)
SHOULD be invoked.
Req-4 The model SHALL allow the addition (or removal) of one or more
FlexE clients on a FlexE Group. The addition (or removal) of a FlexE
client flow SHALL NOT affect the services for the other FlexE client
signals.
Req-5 The model SHALL allow FlexE client signals to flexibly span the
set of FlexE instances which comprise the FlexE Group.
Req-6 The model SHALL support a FlexE client flow resizing without
affecting any existing FlexE clients within the same FlexE Group.
Req-7 The model SHALL support the switching of a calendar
configuration. There are two calendar configurations, A and B.
5. YANG Data Model for FlexE (Tree Structure)
Niu & Wang Expires April 25, 2019 [Page 5]
Internet-Draft FlexE yang model October 2018
module: ietf-flexe-yang
+--rw flexe-configuration
| +--rw flexe-groups
| | +--rw flexe-group* [group-name]
| | +--rw group-name string
| | +--rw group-attributes
| | +--rw group-number? uint32
| | +--rw calendar-slot-granularity? calendar-slot-granularity
| | +--rw flexe-phy-type? flexe-phy-type
| | +--rw bonded-phys
| | | +--rw flexe-phys* [phy-number-in-group]
| | | +--rw phy-number-in-group uint8
| | | +--rw local-phy-number? uint16
| | +--rw flexe-instances
| | | +--rw flexe-instance* [flexe-instance-number]
| | | | +--rw flexe-instance-number uint8
| | | +--rw uneqipped-flexe-instance* [flexe-instance-number]
| | | +--rw flexe-instance-number uint8
| | +--rw rx-calendar? calendar-AorB
| | +--rw tx-calendar? calendar-AorB
| | +--rw tx-calendar-neg? enumeration
| | +--rw reply-ca-mode? enumeration
| +--rw flexe-clients
| +--rw flexe-client* [client-name]
| +--rw client-name string
| +--rw client-attribute
| | +--rw client-number? uint32
| | +--rw bandwidth
| | +--rw signal-type? flexe-client-signal-rate
| | +--rw mac-rate? rt-types:bandwidth-ieee-float32
| +--rw used-flexe-resources
| +--rw used-rsc* [calendar flexe-group]
| +--rw calendar calendar-AorB
| +--rw flexe-group string
| +--rw flexe-instance? uint8
+--ro flexe-group-state
+--ro port-group
+--ro port-group* [port-group-id]
+--ro port-group-id uint32
+--ro intf-state? intf-state
Figure 1
Niu & Wang Expires April 25, 2019 [Page 6]
Internet-Draft FlexE yang model October 2018
6. YANG Module
<CODE BEGINS> file "ietf-flexe-yang@2018-10-12.yang"
module ietf-flexe-yang {
yang-version 1;
namespace "urn:ietf:params:xml:ns:yang:ietf-flexe-yang";
prefix "flexe";
import ietf-routing-types {
prefix rt-types;
}
organization
"Internet Engineering Task Force (IETF) CCAMP WG";
contact
"WG List: <mailto:ccamp@ietf.org>
ID-draft editor:
Xiaobing Niu (niu.xiaobing@zte.com.cn);
Qilei Wang (wang.qilei@zte.com.cn); ";
description
"This module defines a YANG data model for FlexE.";
revision 2018-10-12 {
description
"Initial version.";
reference
"draft-xiaobn-flexe-yang-mod-00.txt";
}
/* typedefs */
typedef calendar-slot-granularity {
type enumeration {
enum csg-5G {
value 1;
description "Calendar slot with a 5G granularity";
}
enum csg-25G {
value 2;
description "Calendar slot with a 25G granularity";
}
}
description
"Defines a type representing the granularity of a calendar slot.";
}
typedef flexe-client-signal-rate {
type enumeration {
enum flexe-client-signal-10Gbps{
value 1;
description
"FlexE Client signal rate of 10Gbps";
Niu & Wang Expires April 25, 2019 [Page 7]
Internet-Draft FlexE yang model October 2018
}
enum flexe-client-signal-40Gbps{
value 2;
description
"FlexE Client signal rate of 40Gbps";
}
enum flexe-client-signal-25mGbps{
value 3;
description
"FlexE Client signal rate of m*25Gbps";
}
}
description
"Defines FlexE Client signal rate, including 10, 40, m*25Gbps.";
}
typedef flexe-phy-type {
type enumeration {
enum flexe-phy-100GBASE-R {
value 1;
description "100GBASE-R PHY";
}
enum flexe-phy-200GBASE-R {
value 2;
description "200GBASE-R PHY";
}
enum flexe-phy-400GBASE-R {
value 3;
description "400GBASE-R PHY";
}
}
description
"Defines types of PHYs in a FlexE group";
}
typedef calendar-AorB {
type enumeration {
enum calendar-A {
value 0 ;
description
"Set the A calendar configuration.";
}
enum calendar-B {
value 1 ;
description
"Set the B calendar configuration.";
}
}
description
"Calendar configuration A or B";
Niu & Wang Expires April 25, 2019 [Page 8]
Internet-Draft FlexE yang model October 2018
}
/* interface states: OK, SF, SD */
typedef intf-state {
type enumeration {
enum ok {
value 0 ;
description
"The interface state of the FlexE Group is OK.";
}
enum sf {
value 1 ;
description
"The interface state of the FlexE Group is SF." ;
}
enum sd {
value 2 ;
description
"The interface state of the FlexE Group is SD.";
}
}
description
"Interface state of port group.";
}
/* grouping */
grouping flexe-client-bandwidth{
leaf signal-type{
type flexe-client-signal-rate;
description
"Client signal types: 10, 40, m*25 Gbps.";
}
leaf mac-rate {
type rt-types:bandwidth-ieee-float32;
description
"Bandwidth of clients.";
}
description
"The bandwidth of a FlexE client.";
}
/* Configuration of FlexE */
container flexe-configuration{
description
"FlexE configuration, including configuration of FlexE groups and FlexE clients.";
container flexe-groups {
description
"Container for the FlexE Group";
list flexe-group {
key group-name;
Niu & Wang Expires April 25, 2019 [Page 9]
Internet-Draft FlexE yang model October 2018
description
"List of FlexE Group";
leaf group-name {
type string ;
description
"The name of a FlexE Group";
}
container group-attributes {
description
"The attributes of a FlexE Group";
leaf group-number {
type uint32 {
range 1..1048574 ;
}
description
"The FlexE Group number is selected from the range 1~0xFFFFE.
The value of 0x00000 and 0xFFFFF may not be used to designate
a FlexE Group.";
}
leaf calendar-slot-granularity{
type calendar-slot-granularity;
description
"The granularity of calendar slot is 5G or 25G";
reference
"OIF FlexE IA 2.0";
}
leaf flexe-phy-type{
type flexe-phy-type;
description
"Types of PHYs, such as 100/200/400GBASE-R";
reference
"OIF FlexE IA 2.0";
}
container bonded-phys {
description
"PHYs bonded to form a FlexE Group";
list flexe-phys {
key phy-number-in-group;
description
"One of bonded PHYs in a FlexE Group";
leaf phy-number-in-group{
type uint8 ;
description
"Refer to the clause 6.1 in FlexE IA 2.0.
For 100GBASE-R, the FlxeE PHY number and the 100G FlexE instance
number are the same and in the range [1-254];
For 200GBASE-R, each PHY number is in the range [1-126].
For 400GBASE-R, each PHY number is in the range [1-62].";
Niu & Wang Expires April 25, 2019 [Page 10]
Internet-Draft FlexE yang model October 2018
}
leaf local-phy-number{
type uint16 ;
description
"Local PHY number related to the PHY number
in a FlexE group.( with uint16 while not uint8 )";
}
}
}
container flexe-instances {
description
"FlexE instances in a FlexE Group";
list flexe-instance {
key flexe-instance-number;
description
"List of a FlexE instance in a FlexE Group";
leaf flexe-instance-number{
type uint8 ;
description
"Logical FlexE instance number";
reference
"Clause 6.1 FlexE Group in FlexE IA 2.0.
For 100G, instance num=PHY num;
For 200G, 8-bit instance num consists of the PHY num in the upper
seven bits, and 0 or 1 in the lower order bit.
For 400G, 8-bit instance num consists of the PHY num in the upper
six bits, and 0,1,2, or 3 in the two lower order bits. ";
}
}
list uneqipped-flexe-instance {
key flexe-instance-number;
description
"Unquipped FlexE instance in a FlexE Group";
leaf flexe-instance-number{
type uint8 ;
description
"Clause 6.1 FlexE Group in FlexE IA 2.0";
}
}
}
leaf rx-calendar {
type calendar-AorB;
description
"Calendar configuration in the receive direction";
}
leaf tx-calendar {
type calendar-AorB;
Niu & Wang Expires April 25, 2019 [Page 11]
Internet-Draft FlexE yang model October 2018
description
"Calendar configuration in the transmit direction";
}
leaf tx-calendar-neg {
type enumeration {
enum manual {
value 1 ;
description
"Manually configured";
}
enum protocol-force {
value 2 ;
description
"Protocol forced";
}
enum protocol-normal {
value 3 ;
description
"Protocol normal";
}
}
description
"TX calendar negotiation methods";
}
leaf reply-ca-mode {
type enumeration {
enum never {
value 1 ;
description
"never reply CA (Configuration Ack)";
}
enum immediately {
value 2 ;
description
"immediately reply CA (Configuration Ack)";
}
enum ask-controller {
value 3 ;
description
"Ask controller for more control";
}
}
description
"Reply CA mode";
}
}
}
}
Niu & Wang Expires April 25, 2019 [Page 12]
Internet-Draft FlexE yang model October 2018
container flexe-clients {
description
"FlexE clients information";
list flexe-client {
key client-name ;
description
"Attributes of FlexE client" ;
leaf client-name {
type string ;
description
"FlexE client name";
}
container client-attribute {
description
"Attributes for specific client.";
leaf client-number {
type uint32 {
range 1..65534 ;
}
description
"Client number in the range of 1~0xFFFF";
}
container bandwidth {
description "Client bandwidth";
uses flexe-client-bandwidth;
}
}
container used-flexe-resources {
description
"Used FlexE resources to carry the FlexE client";
list used-rsc {
key "calendar flexe-group" ;
description
"List of used resources";
leaf calendar {
type calendar-AorB;
description
"Calendar configuration";
}
leaf flexe-group {
type string ;
description
"FlexE Group";
}
leaf flexe-instance {
type uint8 ;
description
"FlexE Instance";
Niu & Wang Expires April 25, 2019 [Page 13]
Internet-Draft FlexE yang model October 2018
}
}
}
}
} /* end of FlexE client */
}
/* states of FlexE Group */
container flexe-group-state {
config false ;
description "State info." ;
container port-group {
description "Port group state information.";
list port-group {
key port-group-id ;
description "The state information of port-group.";
leaf port-group-id {
type uint32 {
range 1..65536 {
description "Port group id.";
}
}
description "Port group id of port group.";
}
leaf intf-state {
type intf-state ;
description "Port state of port group.";
}
}
}
}
}
<CODE ENDS>
7. Acknowledgements
8. Authors (Full List)
Xiaobing NIU (editor)
ZTE
Beijing, China
Email: niu.xiaobing@zte.com.cn
Niu & Wang Expires April 25, 2019 [Page 14]
Internet-Draft FlexE yang model October 2018
Qilei Wang (editor)
ZTE
Nanjing, China
Email: wang.qilei@zte.com.cn
9. Contributors
10. IANA Considerations
This document registers the following namespace URIs in the IETF XML
registry[RFC3688]:
URI: urn:ietf:params:xml:ns:yang:ietf-flexe-yang
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace.
This document registers the following YANG modules in the YANG Module
Names registry[RFC6020] :
name: ietf-flexe-yang
namespace: urn:ietf:params:xml:ns:yang:ietf-flexe-yang
reference: RFC XXXX (TDB)
11. Security Considerations
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]. Proper standardized security measures should be
implemented.
There are a number of data nodes defined in this YANG module that are
writable/creatable/deletable. These data nodes may be considered
sensitive or vulnerable in some network environments. Write
operations (e.g., edit-config) to these data nodes without proper
protection can have a negative effect on network operations.
Niu & Wang Expires April 25, 2019 [Page 15]
Internet-Draft FlexE yang model October 2018
12. References
12.1. Normative References
[OIFFLEXE1]
OIF, "Flex Ethernet Implementation Agreement 1.0(OIF-
FLEXE-01.0); 03/2016", http://www.oiforum.com/wp-
content/uploads/OIF-FLEXE-01.0.pdf, March 2016.
[OIFFLEXE2]
OIF, "Flex Ethernet Implementation Agreement 2.0(OIF-
FLEXE-02.0); 06/2018", http://www.oiforum.com/wp-
content/uploads/OIF-FLEXE-02.0.pdf, June 2018.
[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>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004,
<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>.
[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>.
[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>.
[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>.
12.2. Informative References
[I-D.izh-ccamp-flexe-fwk]
Hussain, I., Valiveti, R., Wang, Q., Andersson, L., Chen,
M., and z. zhenghaomian@huawei.com, "GMPLS Routing and
Signaling Framework for Flexible Ethernet (FlexE)", draft-
izh-ccamp-flexe-fwk-05 (work in progress), March 2018.
Niu & Wang Expires April 25, 2019 [Page 16]
Internet-Draft FlexE yang model October 2018
Authors' Addresses
Xiaobing Niu (editor)
ZTE
Beijing
CN
Email: niu.xiaobing@zte.com.cn
Qilei Wang (editor)
ZTE
Nanjing
CN
Email: wang.qilei@zte.com.cn
Niu & Wang Expires April 25, 2019 [Page 17]