Network Working Group Y. Jiang Internet Draft X. He Intended status: Standards Track Huawei W. Cheng China Mobile J. Wang Y. Han Fiberhome Expires: May 2020 November 4, 2019 YANG Data Model for FlexE Interface Management draft-jiang-ccamp-flexe-yang-02 Abstract This document defines YANG data models for the configuration of Flex Ethernet (FlexE) interfaces, including a FlexE group and its FlexE clients. The YANG modules 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 May 4, 2020. Copyright Notice Copyright (c) 2019 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 (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this Jiang, et al Expires May 4, 2020 [Page 1] Internet-Draft FlexE YANG Model November 2019 document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction ................................... 2 1.1. Conventions used in this document ........... 3 1.2. Terminology ................................. 3 2. YANG model hierarchy for FlexE interfaces ...... 4 3. YANG Module for FlexE group interface .......... 7 4. YANG Module for FlexE client interface ........ 14 5. Security Considerations ....................... 16 6. IANA Considerations ........................... 18 7. References .................................... 18 7.1. Normative References ....................... 18 7.2. Informative References ..................... 19 8. Acknowledgments ............................... 20 1. Introduction The Flex Ethernet (FlexE) 2.0 Implementation Agreement [FLEXE] defined by the OIF provides the support of 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. Besides 100GBASE-R PHYs, FlexE 2.0 further supports the bonding of 200GBASE-R PHYs or 400GBASE-R PHYs respectively. In the FlexE, multiple Ethernet PHYs (each PHY can further consist of one or more FlexE Instances) are bonded into a FlexE Group, and the total capacity of the FlexE Group is represented as a collection of slots (e.g., each slot has a granularity of 5Gbps or 25Gbps). Based on their bandwidth needs, FlexE Clients are each mapped into one or more slots in a FlexE group. The FlexE mechanism operates using a calendar consisting of these slots. This calendar is partitioned into sub-calendars for each PHY (earlier than FlexE 2.0) or sub-calendars for each FlexE instance (FlexE 2.0 and above). For example, the calendar for a FlexE Group composed of n 100G PHYs is partitioned into 20n slots (each slot representing 5Gbps of bandwidth when the slot granularity is 5Gbps). Jiang, et al Expires May 4, 2020 [Page 2] Internet-Draft FlexE YANG Model November 2019 [FLEXE-PS] discusses the problem statements and requirements for FlexE interface management. This document defines a YANG data model for the configuration of a Flex Ethernet interface (i.e., FlexE Group). The data model is augmented based on the generic interfaces data model as defined in [RFC8343], the FlexE attributes are based on the FlexE 2.0 Implementation Agreement as specified in [FLEXE]. With the help of this YANG data module, the FlexE Groups can be managed conveniently as ordinary network interfaces on a network device (e.g., a router or bridge). This document also defines a YANG data model for the configuration of a Flex Ethernet client interface (i.e., FlexE Client). The data model is augmented based on the generic interfaces data model as defined in [RFC8343], currently it only includes mac-address and group-number attributes for a FlexE client. 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 Most terminologies used in this document are extracted from [FLEXE]. FlexE: Flex Ethernet. FlexE Client: An Ethernet flow based on a MAC data rate that may or may not correspond to any Ethernet PHY rate. FlexE Group: A FlexE Group is composed of from 1 to n Ethernet PHYs. FlexE Instance: A FlexE Instance is a unit of information consisting of 100G of capacity able to carry FlexE Client data, together with its associated overhead. Ethernet PHY: an entity representing Ethernet Physical Coding Sublayer (PCS), Physical Media Attachment (PMA), and Physical Media Jiang, et al Expires May 4, 2020 [Page 3] Internet-Draft FlexE YANG Model November 2019 Dependent (PMD) layers. Each PHY is consisted of one or more FlexE Instance (e.g., a 400GBASE-R PHY has four FlexE Instances). FlexE Calendar: The total capacity of a FlexE Group is represented as a collection of slots. The calendar for a FlexE Group composed of n PHYs is represented in each PHY as an array of slots (e.g., each representing 5Gbps of bandwidth), i.e., calendar-slot-list. 2. YANG model hierarchy for FlexE This section describes the hierarchy of the YANG modules for the FlexE interface management and the FlexE client interface. Configuration and status of FlexE group interface information include: - flexe-group specifies a management interface for configuration of a FlexE group. - flexe-phy-list specifies a list of PHYs in a Flex Group. - flexe-client-list specifies a list of FlexE client, each client is mapped to some slots in this FlexE group. flexe-client-if references to a FlexE client interface. flexe-client-status indicates whether there is any fault in local or remote for this client. Configuration and status of FlexE client interface information include: - flexe-group specifies the FlexE Group number of the FlexE group to which this FlexE client belongs. - mac-address specifies the MAC address for a FlexE client. A flag calendar-protocol-enable is added to indicate that whether FlexE calendar negotiation protocol as described in Section 7.3 of [FLEXE] is enabled or not. The readers are assumed to be familiar with FlexE 2.0, as all FlexE terminologies are described in details in [FLEXE]. In order to simplify the YANG module of the FlexE interface and to follow the YANG style of terminology, the full calendar in FlexE is not modelled explicitly. However, a calendar-slot-list per PHY is modeled which represents all the slots in a PHY (i.e., slots in all sub-calendars of the FlexE instances in this PHY), and the calendar Jiang, et al Expires May 4, 2020 [Page 4] Internet-Draft FlexE YANG Model November 2019 is actually a conglomerate of all the slots in calendar-slot-lists for all FlexE PHYs of this FlexE Group. From FlexE 2.0 on, concept of "FlexE Instance" is introduced, which is equivalent to 100GBASE-R PHY, and slots for each instance is used and carried in the overhead. However, we decide not to model the instance, for the following reasons: - instance numbers can be inferred from the FlexE PHY, and any slot in an instance is corresponding to a slot in a PHY; - instance is an internal logical construct, there is no benefit in exposing it for management; - instance is only introduced after FlexE 2.0, its construct will not be compatible with the early versions of FlexE.A simplified YANG tree diagram [RFC8340] representing the data model is typically used by YANG modules. This document uses the same tree diagram syntax as described in [RFC8340]. A tree diagram of the module for FlexE group interface is depicted as the following: module: ietf-flexe augment /if:interfaces/if:interface: +--rw flexe-group +--rw group-number? uint32 +--rw slot-granularity? slot-granularity-enumeration +--rw flexe-phy-type? flexe-phy-enumeration +--rw calendar-protocol-enable? boolean +--rw flexe-phy-list* [flexe-phy-if] | +--rw flexe-phy-if? if:interface-ref | +--rw phy-number uint8 | +--ro flexe-phy-status? phy-status-enumeration | +--rw calendar-slot-list* [slot-id] | +--rw slot-id uint8 | +--rw flexe-slot-status? slot-status-enumeration +--rw flexe-client-list* [client-id] | +--rw client-id uint16 | +--rw flexe-client-if? if:interface-ref | +--rw client-slot-list* [client-slot-id] | | +--rw client-slot-id uint8 | | +--rw mapped-phy-if? if:interface-ref | | +--rw mapped-slot-id uint8 | +--ro flexe-client-status? client-status-enumeration +--ro flexe-group-status? uint8 Jiang, et al Expires May 4, 2020 [Page 5] Internet-Draft FlexE YANG Model November 2019 A tree diagram of the module for FlexE client interface is depicted as the following: module: ietf-interfaces-flexe-client augment /if:interfaces/if:interface: +--rw flexe-client +--ro mac-address +--rw group-number? uint32 Jiang, et al Expires May 4, 2020 [Page 6] Internet-Draft FlexE YANG Model November 2019 3. YANG Module for FlexE group interface The following YANG data module augments the interface container defined in RFC 8343 for a FlexE group interface. It imports iana-if- type [RFC7224] and ietf-interfaces [RFC8343]. file "ietf-flexe@2019-10-30.yang" module ietf-flexe { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-flexe"; prefix "flexe"; import iana-if-type { prefix ianaift; } import ietf-interfaces { prefix if; reference "RFC8343: A YANG Data Model for Interface Management"; } organization "IETF CCAMP Working Group"; contact "WG Web: http://tools.ietf.org/wg/ccamp/ WG List: Author: Yuanlong Jiang Author: Xiang He Author: Weiqiang Cheng Author: Junfang Wang Author: Yalei Han "; description "This YANG module defines a data model for the configuration of FlexE interface."; revision "2019-10-30" { description "Initial version"; reference "draft-jiang-ccamp-flexe-yang-02: YANG Data Model for FlexE Interface Management "; } Jiang, et al Expires May 4, 2020 [Page 7] Internet-Draft FlexE YANG Model November 2019 identity flexEthernet { base ianaift:iana-interface-type; description "Flex Ethernet."; } typedef slot-granularity-enumeration { type enumeration { enum slot-5g { value 1; description "5Gbps per slot."; } enum slot-25g { value 2; description "25Gbps per slot."; } enum slot-others { value 254; description "Other type of granularities per slot."; } } description "The bandwidth granularity of a slot. Options for this enumeration are specified by the OIF standard, currently only 5G and 25G are defined."; reference "OIF Flex 2.0: Section 6.7"; } typedef slot-status-enumeration { type enumeration { enum unavailable { value 1; description "slot is unavailable for a FlexE client."; } enum unused { value 2; description "slot is unused."; } enum used { value 3; description Jiang, et al Expires May 4, 2020 [Page 8] Internet-Draft FlexE YANG Model November 2019 "slot is used."; } } description "The status of a slot in a PHY. Options for this enumeration are specified by the OIF standard, 'used' is implicit."; reference "OIF Flex 2.0: Section 7.3.4 and Section 7.6"; } typedef flexe-phy-enumeration { type enumeration { enum 'PHY-100GBASE-R' { value 1; description "100GBASE-R PHY, as defined in FlexE 1.0."; } enum 'PHY-200GBASE-R' { value 2; description "200GBASE-R PHY, as defined in FlexE 2.0."; } enum 'PHY-400GBASE-R' { value 3; description "400GBASE-R PHY, as defined in FlexE 2.0."; } enum 'PHY-50GBASE-R' { value 4; description "50GBASE-R PHY, as defined in FlexE 2.1."; } } description "The current type of PHYs bonded in a FlexE Group. Values for this enumeration are specified by the OIF standard."; reference "OIF Flex 2.0 and 2.1: Section 5.2.1.5"; } typedef phy-status-enumeration { type enumeration { enum phy-status-OK { value 0; description "The FlexE PHY status is ok"; Jiang, et al Expires May 4, 2020 [Page 9] Internet-Draft FlexE YANG Model November 2019 } enum phy-status-LOF { value 1; description "The FlexE PHY status is Loss of Frame"; } enum phy-status-RPF { value 2; description "The FlexE PHY status is Remote PHY Fault"; } enum phy-status-LPF { value 3; description "The FlexE PHY status is Local PHY Fault"; } } description "The current PHY status. RPF, LPF, LOF and OK are defined."; reference "OIF Flex 2.0: Section 7.3.8"; } typedef client-status-enumeration { type enumeration { enum flexe-client-status-OK { value 0; description "The FlexE client status is OK"; } enum flexe-client-status-LF { value 1; description "The FlexE client status is Local Fault"; } enum flexe-client-status-RF { value 2; description "The FlexE client status is Remote Fault"; } } description "The client status. RPF, LPF and OK are defined."; reference "OIF Flex 2.0: Section 7.3.8"; Jiang, et al Expires May 4, 2020 [Page 10] Internet-Draft FlexE YANG Model November 2019 } augment "/if:interfaces/if:interface" { when "if:type = 'ianaift:flexEthernet'" { description "Applies to Flex bonded Ethernet interfaces"; } description "Augment interface model with OIF Flex Ethernet interface specific configuration nodes. Each flexEthernet interface represents a FlexE Group configured in a device."; container flexe-group { description "The struct containing all FlexE related configuration (see OIF FlexE 2.0 Section 6.1). Note that max number of FlexE groups in a network is 63."; leaf group-number { type uint32 { range "1..1048574"; } description "FlexE Group Number as defined in Section 7.3.6 of FlexE 2.0."; } leaf slot-granularity { type slot-granularity-enumeration; default "slot-5g"; description "The granularity of a slot in a FlexE group."; } leaf flexe-phy-type { type flexe-phy-enumeration; default "PHY-100GBASE-R"; description "The type of PHYs bonded in a FlexE Group."; } leaf calendar-protocol-enable { type boolean; default true; description "Whether calendar negotiation protocol is enabled or Jiang, et al Expires May 4, 2020 [Page 11] Internet-Draft FlexE YANG Model November 2019 not."; reference "OIF Flex 2.0: Section 7.3.4"; } list flexe-phy-list { key "flexe-phy-if"; description "List of PHYs bonded in a FlexE group."; leaf flexe-phy-if { type if:interface-ref; description "Reference to a Flexe PHY interface."; } leaf phy-number { type uint8 { range "1 .. 254"; } description "PHY number of a FlexE PHY. If PHY type is 100GBASE-R, phy-number is [1,254]. If PHY type is 200GBASE-R, phy-number is [1,126]. If PHY type is 400GBASE-R, phy-number is [1, 62]."; } leaf flexe-phy-status { type phy-status-enumeration; default "phy-status-OK"; config false; description "The FlexE PHY status."; } list calendar-slot-list { key "slot-id"; leaf slot-id { type uint8; description "slot id of a slot in a PHY."; } description "List of slots in a FlexE PHY. Max elements of Jiang, et al Expires May 4, 2020 [Page 12] Internet-Draft FlexE YANG Model November 2019 slot-list for a FlexE PHY is dependent on the PHY bandwidth (X)G and the slot granularity (Y)G, i.e., X/Y. For example, for a 400GBASE-R PHY: If slot-granularity=slot-5g, max-elements is 80. If slot-granularity=slot-25g, max-elements is 16."; leaf flexe-slot-status { type slot-status-enumeration; default unused; config false; description "Slot status of a FlexE slot."; } } //calendar-slot-list } //flexe-phy-list list flexe-client-list { key "client-id"; description "List of FlexE clients in a FlexE Group."; leaf client-id { type uint16 { range "1..65534"; } description "FlexE Client field as defined in FlexE 2.0 Section 7.3.4."; } leaf flexe-client-if { type if:interface-ref; description "The type of a flexe client interface must be 'flexeClient'."; } list client-slot-list { key "client-slot-id"; min-elements 1; description "List of slots for a FlexE client."; leaf client-slot-id { type uint8; description "Client slot id of a client slot in sequence for a client."; Jiang, et al Expires May 4, 2020 [Page 13] Internet-Draft FlexE YANG Model November 2019 } leaf mapped-phy-if { type if:interface-ref; description "Mapped PHY interface of a client slot."; } leaf mapped-slot-id { type uint8; description "Mapped Slot id of a client slot in the mapped PHY. If a slot [i] is mapped, flexe-slot-status[i] in the Mapped PHY MUST be set to 'used' "; } } // client-slot-list leaf flexe-client-status { type client-status-enumeration; default flexe-client-status-OK; config false; description "The FlexE client status."; } } //flexe-client-list leaf flexe-group-status { type uint8; config false; description "Status for a FlexE Group. If any PHY is in fault, or any FlexE configuration is mismatched, the FlexE Group status is indicated in fault. Status includes: OK, Local Fault, Remote Fault, mismatch and etc."; } } //flexe-group } //augment } 4. YANG Module for FlexE client interface The following YANG data module augments the interface container defined in RFC 8343 for a FlexE client interface. file "ietf-interfaces-flexe-client@2019-10-30.yang" Jiang, et al Expires May 4, 2020 [Page 14] Internet-Draft FlexE YANG Model November 2019 module ietf-interfaces-flexe-client { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces-flexe-client"; prefix flexcl; import ietf-interfaces { prefix if; } import ietf-yang-types { prefix yang; } import iana-if-type { prefix ianaift; } organization "IETF CCAMP Working Group"; contact "WG Web: http://tools.ietf.org/wg/ccamp/ WG List: Author: Yuanlong Jiang Author: Xiang He Author: Weiqiang Cheng Author: Junfang Wang Author: Yalei Han "; description "This module contains YANG definitions for configuration of 'FlexE client' interfaces. FlexE Client is defined in OIF Flexible Ethernet 2.0 Implementation Agreement."; revision 2019-10-30 { description "Initial revision"; reference "Internet draft: draft-jiang-ccamp-flexe-yang-02"; } Jiang, et al Expires May 4, 2020 [Page 15] Internet-Draft FlexE YANG Model November 2019 identity flexeClient { base ianaift:iana-interface-type; description "FlexE Client."; } /* * Configuration parameters for FlexE client interfaces. */ augment "/if:interfaces/if:interface" { when "derived-from-or-self(if:type, 'ianaift:flexeClient')" { description "Applies to FlexE client interfaces"; } description "Augment the interface model with parameters for FlexE client interfaces"; container flexe-client { description "Contains parameters for FlexE client interfaces which expose an Ethernet MAC layer."; leaf mac-address { type yang:mac-address; config false; description "The MAC address of the FlexE client."; } leaf group-number { type uint32 { range "1..1048574"; } description "FlexE Group Number of the FlexE group to which this Client belongs."; } // statistics can further be defined for the MAC layer } } } 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 Jiang, et al Expires May 4, 2020 [Page 16] Internet-Draft FlexE YANG Model November 2019 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: /flexe/flexe-group/flexe-phy-list specifies a list of FlexE PHYs. /flexe/flexe-group/flexe-client-list specifies a list of FlexE Client, and each client is mapped to some slots in a FlexE PHY. /flexcl/mac-address specifies a MAC address for a FlexE client. /flexcl/group-number specifies the group number of a FlexE Group to which a FlexE client belongs. 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. Jiang, et al Expires May 4, 2020 [Page 17] Internet-Draft FlexE YANG Model November 2019 6. IANA Considerations It is proposed that IANA register the following URI in the "IETF XML registry" [RFC3688]: URI: urn:ietf:params:xml:ns:yang:ietf-flexe Registrant Contact: The IESG XML: N/A; the requested URI is an XML namespace It is proposed that IANA register the following URI in the "IETF XML registry" [RFC3688]: URI: urn:ietf:params:xml:ns:yang:ietf-interfaces-flexe-client Registrant Contact: The IESG XML: N/A; the requested URI is an XML namespace It is proposed that IANA register the following YANG module in the "YANG Module Names" registry: Name: ietf-flexe Namespace: urn:ietf:params:xml:ns:yang:ietf-flexe Prefix: flexe Reference: this document It is proposed that IANA register the following YANG module in the "YANG Module Names" registry: Name: ietf-interfaces-flexe-client Namespace: urn:ietf:params:xml:ns:yang:ietf-interfaces-flexe- client Prefix: flexcl Reference: this document It is proposed that IANA register a new IANAifType TBD for the interface type of Flex Ethernet group in the "IANA Interface Type YANG Module" [RFC7224]. It is proposed that IANA register a new IANAifType TBD for the interface type of Flex Ethernet client in the "IANA Interface TypeYANG Module" [RFC7224]. 7. References 7.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997 Jiang, et al Expires May 4, 2020 [Page 18] Internet-Draft FlexE YANG Model November 2019 [RFC3688] Mealling, M., "The IETF XML Registry", RFC 3688, January 2004 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and Bierman, A., "Network Configuration Protocol (NETCONF)", RFC 6241, June 2011 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, June 2011 [RFC7224] Bjorklund, M., "IANA Interface Type YANG Module", RFC 7224, May 2014 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, January 2017 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, May 2017 [RFC8341] Bierman, A. and Bjorklund, M., "Network Configuration Protocol (NETCONF) Access Control Model", RFC 8341, March 2018 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture (NMDA)", RFC 8342, March 2018 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface Management", RFC 8343, March 2018 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, August 2018 7.2. Informative References [FLEXE] OIF, "Flex Ethernet 2.0 Implementation Agreement", FlexE 2.0, June 2018 [FLEXE2.1]OIF, "Flex Ethernet 2.1 Implementation Agreement", FlexE 2.1, July 2019 [RFC8340] Bjorklund, M., and Berger, L., "YANG Tree Diagrams", RFC 8340, March 2018 [FLEXE-PS] Jiang, Y., Yang, F., Busi, I., Cheng., W, Wang, J., "Problem Statements of FlexE Interface Management", draft-jiang-ccamp-flexe-ifmps-00, Work in Progress Jiang, et al Expires May 4, 2020 [Page 19] Internet-Draft FlexE YANG Model November 2019 8. Acknowledgments The authors would like to thank Yongjian Hu, Zitao Wang and Zhongjian Zhang for discussions on YANG. Jiang, et al Expires May 4, 2020 [Page 20] Internet-Draft FlexE YANG Model November 2019 Authors' Addresses Yuanlong Jiang Huawei Technologies Co., Ltd. Bantian, Longgang district Shenzhen 518129, China Email: jiangyuanlong@huawei.com Xiang He Huawei Technologies Co., Ltd. Huawei Campus, No. 156 Beiqing Rd. Beijing 100095 Email: hexiang9@huawei.com Weiqiang Cheng China Mobile No.32 Xuanwumen West Street Beijing 100053, China Email: chengweiqiang@chinamobile.com Junfang Wang Fiberhome Email: wjf@fiberhome.com Yalei Han Fiberhome Email: ylhan@fiberhome.com Jiang, et al Expires May 4, 2020 [Page 21]