Internet-Draft draft-ietf-ccamp-flexe-yang-cm-02 July 2023
Wang, et al. Expires 2 January 2024 [Page]
Workgroup:
CCAMP Working Group
Internet-Draft:
draft-ietf-ccamp-flexe-yang-cm-02
Published:
Intended Status:
Standards Track
Expires:
Authors:
M. Wang
China Mobile
L. Han
China Mobile
X. Geng
Huawei Technologies
X. Niu
ZTE
LM. Contreras
Telefonica
X. Liu
IBM Corporation

YANG Data Model for FlexE Management

Abstract

This document defines a service provider targeted YANG data model for the configuration and management of a Flex Ethernet (FlexE) network, including FlexE group and FlexE client. The YANG module in this document conforms to the Network Management Datastore Architecture (NMDA).

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 2 January 2024.

Table of Contents

1. Introduction

From a service provider's point of view, a transport network with Flex Ethernet (FlexE) support is usually deployed with all FlexE Groups configured at first, and then FlexE clients are added one by one at a later stage. This document defines a service provider targeted YANG data model for the configuration and management of FlexE, including FlexE groups and FlexE clients. It supports the configuration of FlexE client as an interface as the data model of FlexE client is augmented based on the generic interfaces data model as defined in [RFC8343]. Furthermore, when a FlexE transport network is used to backhaul 5G mobile services, synchronization channel can also be imbedded in a FlexE PHY. The specific PHY used for synchronization channel can be retrieved for management. Other FlexE attributes are based on the FlexE 2.1 Implementation Agreement as specified in [FLEXE].

Note that this document would only focus on the configuration and maintenance of the FlexE interfaces. Cross connection of FlexE timeslots in a network node is tentatively out of the scope of this document.

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

1.1. Conventions used in this document

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.

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

The terminology for describing YANG data models is found in [RFC6020].

1.2.1. FlexE terminology used in this document

The following terminologies used in this document are defined in [IEEE802.3] and [FLEXE]. The following terminologies are listed in alphabetical order.

  • Calendar
  • Ethernet PHY
  • Flex Ethernet (FlexE)
  • FlexE Client
  • FlexE Group
  • FlexE PHY

2. Requirements of FlexE configuration

In following sections, the requirements are summarized according to the descriptions in OIF FlexE Implementation Agreement and ITU-T FlexE related standards e.g. [ITU-T_G.8023]. FlexE YANG data model targets to provide the configurations of the functions, as well as to report the real states and verify the consistency between the configuration and the real states. The requirements of FlexE groups and FlexE clients are summarized and illustrated as follows.

Requirements of the FlexE group include,

Requirements of the FlexE client include,

3. Tree Diagram of FlexE YANG Model

This section describes the hierarchy and tree diagram of YANG modules for the FlexE management.

Configuration management of FlexE group includes:

Configuration management of a FlexE client includes:

YANG tree diagram [RFC8340] representing the data model is typically used by YANG modules. A simplified FlexE tree diagram defined in this document follows the syntax and notation defined in [RFC8340].

A tree diagram of IETF FlexE is depicted as the following:

   module: ietf-flexe
      +--rw flexe
        +--rw flexe-groups
          +--rw flexe-group* [index]
            +--rw index              uint32
            +--rw group-num          uint32
            +--rw negotiation-mode   negotiation-mode-type
            +--ro total-bandwidth    string
            +--ro free-bandwidth?    string
            +--ro sync-phy-number    uint32
            +--rw flexe-phys
            +--rw flexe-phy-list* [port-name]
              +--rw port-name        if:interface-ref
              +--rw phy-number       uint32
              +--ro free-timeslot-list  string
              +--ro used-timeslot-list  string
        +--rw flexe-client
          +--rw client-index         uint32
          +--rw group-index          -> /flexe/flexe-groups/flexe-group/index
          +--rw client-num           uint32
          +--rw timeslot-lists
            +--rw timeslot-list*    [port-name]
              +--rw port-name      if:interface-ref
              +--rw time-slot      string

4. YANG Module of FlexE Management

The following YANG data module augments the interface container defined in [RFC8343] for a FlexE group interface. It imports ietf-interfaces [RFC8343].

module ietf-flexe {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-flexe";
  prefix "flexe";

  import ietf-interfaces {
    prefix if;
    reference
    "RFC 8343: A YANG Data Model For Interface Management";
  }

  organization "IETF CCAMP Working Group";
  contact
   "WG Web:   http://datatracker.ietf.org/wg/ccamp/
    WG List:  <mailto:ccamp@ietf.org>
    Author:   Minxue Wang
              <mailto: wangminxue@chinamobile.com>
    Author:   Liuyan Han
              <mailto: hanliuyan@chinamobile.com>
    Author:   Fan Yang
              <mailto:shirley.yangfan@huawei.com>
    Author:   Xiaobing Niu
              <mailto: niu.xiaobing@zte.com.cn>
    Author:   Luis M. Contreras
              <mailto:luismiguel.contrerasmurillo@telefonica.com>
    Author:   Xufeng Liu
              <mailto:xufeng.liu.ietf@gmail.com>";
  description
   "This YANG module defines a data model for the configuration
    of FlexE, which includes the configuration of FlexE group and
    FlexE client.

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

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

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

  revision "2022-06-09" {
    description "the fourth version";
    reference
    "RFC XXXX: YANG Data Model for FlexE Management";
  }

  typedef negotiation-mode-type {
    type enumeration {
      enum "dynamic" {
        value 1;
        description
          "Dynamic mode.";
      }
      enum "static" {
        value 2;
        description
          "Static mode.";
      }
    }
    description
      "Negotiation mode of a FlexE group.";
  }

  container flexe {
    description
      "Specify FlexE group configuration information.";
    reference
      "Flex Ethernet 2.1 Implementation Agreement";
    container flexe-groups {
      description
        "List of FlexE groups.";
      list flexe-group {
        key "index";
        description
          "Configure FlexE group.";
        leaf index {
          type uint32 {
            range "1..65535";
          }
          description
            "FlexE group index.";
        }
        leaf group-num {
          type uint32 {
            range "1..1048574";
          }
          mandatory true;
          description
            "FlexE group number, as specified in OIF FlexE 2.1.";
        }
        leaf negotiation-mode {
          type negotiation-mode-type;
          mandatory true;
          description
            "FlexE group calendar negotiation mode, the default
             value is 'dynamic'.";
        }
        leaf total-bandwidth {
          type string {
            length "1..9";
          }
          config false;
          mandatory true;
          description
            "FlexE group total bandwidth in Gbit/s, such as 10.";
        }
        leaf free-bandwidth {
          type string {
            length "1..9";
          }
          config false;
          description
            "FlexE group free bandwidth in Gbit/s, such as 100.";
        }
        leaf sync-phy-number {
          type uint32 {
            range "1..254";
          }
          config false;
          mandatory true;
          description
            "The FlexE PHY number used for synchronization management
             channel in a FlexE group, which is one of the PHY number
             value in a FlexE group.";
        }
        container flexe-phys {
          description
            "List of physical port information in a FlexE Group.";
          list flexe-phy {
            key "port-name";
            description
              "FlexE PHY port name.";
            leaf port-name {
              type if:interface-ref;
              description
                "Physical port name. ";
            }
            leaf phy-number {
              type uint32 {
                range "1..254";
              }
              mandatory true;
              description
                "Number of a FlexE physical port. The PHY number of
              a 100G port is an integer ranging from 1 to 254.
              The PHY number of a 50G port is an integer ranging
              from 1 to 126.";
            }
            leaf free-timeslot-list {
              type string {
                length "1..199";
              }
              config false;
              mandatory true;
              description
               "Free timeslots of a FlexE PHY. The string
               consists of one or more numbers separated by
               commas (,) or hyphens (-), e.g.'1-5' indicates
               1,2,3,4,5 timeslots, '0,5,7-10' indicates
               0,5,7,8,9,10 timeslots.";
            }
            leaf used-timeslot-list {
              type string {
                length "1..199";
              }
              config false;
              mandatory true;
              description
               "Used timeslots of a FlexE PHY. The string
               consists of one or more numbers separated by
               commas (,) or hyphens (-), e.g.'1-5' indicates
               1,2,3,4,5 timeslots, '0,5,7-10' indicates
               0,5,7,8,9,10 timeslots.";
            }
          }
        }
      }
    }


  container flexe-client {
      description
        "Specify FlexE client configuration information.";
      reference
        "Flex Ethernet 2.1 Implementation Agreement";
      leaf client-index {
        type uint32 {
          range "1..65535";
        }
        mandatory true;
        description
          "FlexE client index.";
      }
      leaf group-index {
        type leafref {
        path "/flexe:flexe/flexe:flexe-groups"
         + "/flexe:flexe-group/flexe:index";
        }
        mandatory true;
        description
          "A local FlexE group index configured for a client on one
           equipment for the sake of simplicity on configuration and
           management.";
      }
      leaf client-num {
        type uint32 {
          range "1..65534";
        }
        mandatory true;
        description
          "FlexE Client number.";
      }
      container timeslot-lists {
        description
          "List of binding timeslots.";
        list timeslot-list {
          key "port-name";
          description
            "Configure binding timeslots.";
          leaf port-name {
            type if:interface-ref;
            description
              "FlexE physical port name.";
          }
          leaf time-slot {
            type string {
              length "1..199";
            }
            mandatory true;
            description
              "Timeslot allocated for a FlexE client. The string
               consists of one or more numbers separated by
               commas (,) or hyphens (-), e.g.'1-5' indicates
               1,2,3,4,5 timeslots, '0,5,7-10' indicates
               0,5,7,8,9,10 timeslots.";
          }
        }
      }
  }
  }
}

5. 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] 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].

The NETCONF access control model [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.

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

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 cause an interrupt of a FlexE client flow, drop of all Ethernet frames of a FlexE client, or even break down of a whole FlexE group interface.

6. IANA Considerations

IANA is asked to assign new URIs from the "IETF XML Registry" [RFC3688] as follows:

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

The following YANG modules are requested to be registred in the IANA "YANG Module Names" [RFC6020] registry:

   Name: ietf-flexe
   Namespace: urn:ietf:params:xml:ns:yang:ietf-flexe
   Prefix: flexe
   Reference: this document

7. Acknowledgement

The authors would like to thank Weiqiang Cheng and Yuanlong Jiang for their valuable suggestions.

8. Normative References

[FLEXE]
OIF, "Flex Ethernet 2.1 Implementation Agreement", , .
[IEEE802.3]
ITU-T, "IEEE 802.3 IEEE Standard for Ethernet", https://ieeexplore.ieee.org/document/8457469, .
[ITU-T_G.8023]
ITU-T, "ITU-T G.8023: Characteristics of equipment functional blocks supporting Ethernet physical layer and Flex Ethernet interfaces; 11/2018", https://www.itu.int/rec/T-REC-G.8023, .
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC3688]
Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, , <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, , <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, , <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242]
Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, , <https://www.rfc-editor.org/info/rfc6242>.
[RFC8040]
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, , <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, , <https://www.rfc-editor.org/info/rfc8174>.
[RFC8340]
Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, , <https://www.rfc-editor.org/info/rfc8340>.
[RFC8341]
Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, , <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, , <https://www.rfc-editor.org/info/rfc8342>.
[RFC8343]
Bjorklund, M., "A YANG Data Model for Interface Management", RFC 8343, DOI 10.17487/RFC8343, , <https://www.rfc-editor.org/info/rfc8343>.
[RFC8407]
Bierman, A., "Guidelines for Authors and Reviewers of Documents Containing YANG Data Models", BCP 216, RFC 8407, DOI 10.17487/RFC8407, , <https://www.rfc-editor.org/info/rfc8407>.
[RFC8446]
Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, , <https://www.rfc-editor.org/info/rfc8446>.

Appendix A. Appendix: FlexE configuration model illustration

A FlexE group must be configured first before any client signals are carried over it. The initial configuration commands could be from external management system, SDN controller etc.

Currently, the FlexE configuration model shows the necessary parameters about the FlexE group and the FlexE client. That is the base model for further augments or extensions.

In this section, more details about parameters in the model are elaborated, and some examples are illustrated based on following figure.



              +--------+                      +---------+
              |        | 1    FlexE group   1 |         |
FlexE client1-|        +----------------------+         |-FlexE client1
              |  FlexE | 2                  2 | FlexeE  |
FlexE client2-|   mux  +----------------------+  demux  |-FlexE client2
              |        | 3                  3 |         |
              |        +----------------------+         |
              |        | 4                  4 |         |
              |        +----------------------+         |
              +--------+                      +---------+


Figure 1

A.1. Configuration Example of the FlexE group

The FlexE group YANG tree is shown in section 4. More explanations for the flexe-group data node include,

  1. The leaf index provides an index to the FlexE group. The value of the index may be generated by local network device or network management system, so the values in FlexE mux and demux may be different.
  2. The leaf group-num is transported between FlexE mux and FlexE demux.
  3. The leaf negotiation-mode includes dynamic mode and static mode, and the default value is dynamic mode. For the dynamic mode, the calendar slot information for the FlexE client is only sent to the FlexE mux. While for the static mode, the calendar slot information for the FlexE client is configured both to the FlexE mux and demux.
  4. The leaf sync-phy-number is used for the synchronization management channel.
  5. The list flexe-phys includes all the PHYs bonded in a FlexE group. Each of the PHYs is identified by the port-name and phy-number in the group. Both ends of each PHY in the FlexE group should use the same PHY number.


    <flexe-group>
        <index>20221</index>
        <group-num>2222</group-num>
        <negotiation-mode>static</negotiation-mode>
        <flexe-phys>
            <flexe-phy>
                <port-name>ifa001</port-name>
                <phy-number>1</phy-number>
            </flexe-phy>
            <flexe-phy>
                <port-name>ifa002</port-name>
                <phy-number>2</phy-number>
            </flexe-phy>
            <flexe-phy>
                <port-name>ifa003</port-name>
                <phy-number>3</phy-number>
            </flexe-phy>
            <flexe-phy>
                <port-name>ifa004</port-name>
                <phy-number>4</phy-number>
            </flexe-phy>
        </flexe-phys>
    </flexe-group>

Figure 2

While in the FlexE demux, part of the configuration for FlexE group is shown as follows,


    <flexe-group>
        <index>3001</index>
        <group-num>2222</group-num>
        <negotiation-mode>static</negotiation-mode>
        <flexe-phys>
            <flexe-phy>
                <port-name>ifb001</port-name>
                <phy-number>1</phy-number>
            </flexe-phy>
            <flexe-phy>
                <port-name>ifb002</port-name>
                <phy-number>2</phy-number>
            </flexe-phy>
            <flexe-phy>
                <port-name>ifb003</port-name>
                <phy-number>3</phy-number>
            </flexe-phy>
            <flexe-phy>
                <port-name>ifb004</port-name>
                <phy-number>4</phy-number>
            </flexe-phy>
        </flexe-phys>
    </flexe-group>

Figure 3

Based on the configuration above, the running states in the FlexE device can be gotten by using NETCONF Get command. To FlexE group, the running states include total-bandwidth and free-bandwidth of the FlexE group, and free-timeslot-list and used-timeslot-list of each PHY in the FlexE group.

A.2. Configuration Example of the FlexE client

he FlexE client YANG tree is shown in section 4. More explanations for the flexe-client data node include,

  1. The leaf client-index provides an index to the FlexE client. The value of the client-index may be configured by the network device or network management system or controller, and the values in FlexE mux and demux may be different.
  2. The leafref group-index references the FlexE group with the specific group index. It means that the FlexE group should be created before configuring the FlexE client, and the FlexE client will be transported by the specific FlexE group.
  3. The leaf client-num is used to indicate the FlexE client. The value of the client-num should be configured by the network management system or controller, and the values in FlexE mux and demux should be the same.
  4. The container timeslot-lists shows all the calendar slots assigned to the FlexE client. In the list timeslot-list, the total assignment of slots in each PHY, which is indicated by the leaf port-name, are indicated by the slots in the leaf time-slot.

For example, two FlexE clients are configured to be transported by the FlexE group in section 4.1.

The bandwidth of the first FlexE client is 10Gb/s, and the assigned calendar slots include two 5G slots.

The bandwidth of the second FlexE client is 200Gb/s, and the assigned calendar slots include 40 5G slots, exactly located in two 100G PHYs. This configuration shows the capability of FlexE bonding.

Part of the configuration for the first and second FlexE client in FlexE mux is shown as follows,


    <flexe-client>
        <client-index>6001</client-index>
        <group-index>20221</group-index>
        <client-num>1001</client-num>
        <timeslot-lists>
            <timeslot-list>
                <port-num>ifa001</port-num>
                <time-slot>1-2</time-slot>
            </timeslot-list>
        </timeslot-lists>
    </flexe-client>

    <flexe-client>
        <client-index>6002</client-index>
        <group-index>20221</group-index>
        <client-num>1002</client-num>
        <timeslot-lists>
            <timeslot-list>
                <port-num>ifa002</port-num>
                <time-slot>1-20</time-slot>
            </timeslot-list>
            <timeslot-list>
                <port-num>ifa003</port-num>
                <time-slot>1-20</time-slot>
            </timeslot-list>
        </timeslot-lists>
    </flexe-client>


Figure 4

Part of the configuration for the first and second FlexE client in FlexE demux is shown as follows,


    <flexe-client>
        <client-index>7001</client-index>
        <group-index>3001</group-index>
        <client-num>1001</client-num>
        <timeslot-lists>
            <timeslot-list>
                <port-num>ifb001</port-num>
                <time-slot>1-2</time-slot>
            </timeslot-list>
        </timeslot-lists>
    </flexe-client>

    <flexe-client>
        <client-index>7002</client-index>
        <group-index>3001</group-index>
        <client-num>1002</client-num>
         <timeslot-lists>
            <timeslot-list>
                <port-num>ifb002</port-num>
                <time-slot>1-20</time-slot>
            </timeslot-list>
            <timeslot-list>
                <port-num>ifb003</port-num>
                <time-slot>1-20</time-slot>
            </timeslot-list>
        </timeslot-lists>
    </flexe-client>


Figure 5

Authors' Addresses

Minxue Wang
China Mobile
No.32 Xuanwumen west street
Beijing, 100053
China
Liuyan Han
China Mobile
No.32 Xuanwumen west street
Beijing, 100053
China
Xuesong Geng
Huawei Technologies
Huawei Campus, No. 156 Beiqing Rd.
Beijing
100095
China
Xiaobing Niu
ZTE
ZTE, No.5 Anding Road.
Beijing
100029
China
Luis M. Contreras
Telefonica
Ronda de la Comunicacion, s/n
Sur-3 building, 3rd floor
28050 Madrid
Spain
Xufeng Liu
IBM Corporation
2300 Dulles Station Blvd.
Herndon, VA 20171,
United States of America