bbf-xpon

This module contains a collection of YANG definitions for supporting the Broadband Forum requirements on management of ITU-T Pas...

  • Version: 2023-06-21

    bbf-xpon@2023-06-21


    
      module bbf-xpon {
    
        yang-version 1.1;
    
        namespace "urn:bbf:yang:bbf-xpon";
    
        prefix bbf-xpon;
    
        include bbf-xpon-base;
        include bbf-xpon-wavelength-profile-body;
        include bbf-xpon-multicast-gemport-body;
        include bbf-xpon-channel-group-body;
        include bbf-xpon-channel-partition-body;
        include bbf-xpon-channel-pair-body;
        include bbf-xpon-channel-termination-body;
        include bbf-xpon-multicast-distribution-set-body;
    
        organization
          "Broadband Forum <https://www.broadband-forum.org>
    Fiber Access Networks Work Area";
    
        contact
          "Comments or questions about this Broadband Forum YANG module
    should be directed to <mailto:info@broadband-forum.org>.
    
    Editor:      Robert Peschi, Nokia
    
    Editor:      Kevin Noll, Vecima
    
    PS Leader:   Joey Boyd, Adtran
    
    WA Director: Marta Seda, Calix";
    
        description
          "This module contains a collection of YANG definitions for
    supporting the Broadband Forum requirements on management of
    ITU-T Passive Optical Network (PON) interfaces as defined in
    ITU-T G.984.x, G.987.x, ITU-T G.989.x and ITU-T G.9807.x. As
    such, this module is specific to access network equipment (e.g.,
    BBF-specified Access Nodes and FTTdp DPUs).
    
    Copyright (c) 2018-2023, Broadband Forum
    
    Redistribution and use in source and binary forms, with or
    without modification, are permitted provided that the following
    conditions are met:
    
    1. Redistributions of source code must retain the above copyright
       notice, this list of conditions and the following disclaimer.
    
    2. Redistributions in binary form must reproduce the above
       copyright notice, this list of conditions and the following
       disclaimer in the documentation and/or other materials
       provided with the distribution.
    
    3. Neither the name of the copyright holder nor the names of its
       contributors may be used to endorse or promote products
       derived from this software without specific prior written
       permission.
    
    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
    CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
    NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
    ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
    The above license is used as a license under copyright only.
    Please reference the Forum IPR Policy for patent licensing terms
    <https://www.broadband-forum.org/ipr-policy>.
    
    Any moral rights which are necessary to exercise under the above
    license grant are also deemed granted under this license.
    
    This version of this YANG module is part of TR-385i2a1; see
    the TR itself for full legal notices.";
    
        revision "2023-06-21" {
          description
            "Issue 2 Amendment 1.
    * Approval Date:    2023-06-21.
    * Publication Date: 2023-06-21.";
          reference
            "TR-385i2a1: ITU-T PON YANG Modules
            	<https://www.broadband-forum.org/technical/download/
            		 TR-385_Issue-2_Amendment-1.pdf>";
    
        }
    
        revision "2020-10-13" {
          description
            "Issue 2.
    * Approval Date:    2020-10-13.
    * Publication Date: 2020-10-13.";
          reference
            "TR-385i2: ITU-T PON YANG Modules
            	<https://www.broadband-forum.org/technical/download/
            		 TR-385_Issue-2.pdf>";
    
        }
    
        revision "2019-02-25" {
          description
            "Initial revision.
    * Approval Date:    2019-02-25.
    * Publication Date: 2019-02-25.";
          reference
            "TR-385: ITU-T PON YANG Modules
            	<https://www.broadband-forum.org/technical/download/
            		 TR-385.pdf>";
    
        }
    
    
        // features
    
        feature ictp-support {
          description
            "Indicates that the Optical Line Termination (OLT) supports
    Inter Channel Termination Protocol (ICTP).";
        }
    
        feature configurable-ictp-proxy-tcp-port {
          if-feature ictp-support;
          description
            "Indicates support for the configuration of the TCP port
    used by an Inter Channel Termination Protocol (ICTP) proxy.";
        }
    
        feature pon-pools {
          description
            "Indicates support of assignable PON resources (Allocation
    Identifier (Alloc-ID), GPON Encapsulation Method port
    Identifier (GEM port-ID), Optical Network Unit Identifier
    (ONU-ID) into PON pools.";
        }
    
        feature onu-phase-drift-monitoring-control {
          description
            "Indicates support for the configuration of Optical Network
    Unit (ONU) phase drift monitoring.";
        }
    
        feature channel-termination-defects {
          description
            "Indicates support for reporting defects observed at the channel
    termination.";
        }
    
        feature channel-termination-defect-notifications {
          description
            "Indicates support for reporting state changes of the defects
    observed at the channel termination.";
        }
    
        // typedefs
        typedef wavelength-prof-ref {
          type leafref {
            path "/bbf-xpon:xpon/bbf-xpon:wavelength-profiles/bbf-xpon:wavelength-profile/bbf-xpon:name";
          }
          description
            "A reference to a wavelength profile.";
        }
    
        typedef multicast-gemport-ref {
          type leafref {
            path "/bbf-xpon:xpon/bbf-xpon:multicast-gemports/bbf-xpon:multicast-gemport/bbf-xpon:name";
          }
          description
            "Reference to a multicast GPON Encapsulation Method (GEM)
    port.";
        }
    
        typedef alloc-id-values {
          type string {
            pattern
              '((25[6-9]|2[6-9][0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|1[0-6][0-3][0-8][0-3])([,-](25[6-9]|2[6-9][0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|1[0-6][0-3][0-8][0-3]))*)?';
          }
          description
            "A list of non-overlapping Allocation Identifier (Alloc-ID)
    values in ascending order, between 1024 to 16383 for G.9807.1
    XGS-PON/G.989.3 NG-PON2 compliant Optical Line Terminations
    (OLT) and 256 to 4095 for G.984.3 GPON-compliant Optical Line
    Terminations (OLT).
    
    The format of this string can be any of the following:
    
      single value
        Example: '1024'
      comma separated list of values
        Example: '1024,1030,16000'
      range of values
        Example: '1024-1300'
      comma separated list of ranges
        Example: '1025-1300,1301-1400,1500-1600'
      comma separated list of values and ranges
        Example: '1024-1300,1301,1303-1310'.";
        }
    
        typedef gemport-values {
          type string {
            pattern
              '((25[4-9]|2[6-9][0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-6][0-5][0-5][0-3][0-4])([,-](25[4-9]|2[6-9][0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-6][0-5][0-5][0-3][0-4]))*)?';
          }
          description
            "A list of non-overlapping xGEM/GPON Encapsulation Method (GEM)
    port-ID values in ascending order, between 1021 to 65534 for
    G.9807.1 XGS-PON/G.989.3 NG-PON2 compliant Optical Line
    Terminations (OLT) and 254 to 4095 for G.984.3 GPON-compliant
    Optical Line Terminations (OLT).
    
    The format of this string can be any of the following:
    
      single value
        Example: '1024'
      comma separated list of values
        Example: '1024,1030,16000'
      range of values
        Example: '1024-1300'
      comma separated list of ranges
        Example: '1025-1300,1301-1400,1500-1600'
      comma separated list of values and ranges
        Example: '1024-1300,1301,1303-1310'.";
        }
    
        typedef onu-id-values {
          type string {
            pattern
              '(([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|10[0-2]0)([,-]([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|10[0-2]0))*)?';
          }
          description
            "A list of non-overlapping Optical Network Unit Identifier
    (ONU-ID) values in ascending order, between 0 to 1020 for
    G.9807.1 XGS-PON/G.989.3 NG-PON2 compliant Optical Line
    Terminations (OLT) and 0 to 253 for G.984.3 GPON-compliant
    Optical Line Terminations (OLT).
    
    The format of this string can be any of the following:
    
      single value
        Example: '1020'
      comma separated list of values
        Example: '1,30,600'
      range of values
        Example: '30-60'
      comma separated list of ranges
        Example: '30-60,80-90'
      comma separated list of values and ranges
        Example: '1,30-60,70,90-100'.";
        }
    
        // groupings
        grouping wavelength-profile-data {
          description
            "Configuration data data for wavelength profiles.";
          list wavelength-profile {
            key "name";
            description "A wavelength profile.";
            leaf name {
              type bbf-yang:string-ascii64;
              description
                "Wavelength profile name.";
            }
    
            leaf upstream-channel-id {
              type uint8 {
                range "0..15";
              }
              default "0";
              description "Upstream channel ID.";
              reference
                "ITU-T G.989.3 clause 6.1.5.5.";
    
            }
    
            leaf downstream-channel-id {
              type uint8 {
                range "0..15";
              }
              default "0";
              description
                "Downstream channel ID.";
              reference
                "ITU-T G.989.3 clause 6.1.5.4.";
    
            }
    
            leaf downstream-wavelength {
              type uint32 {
                range "0 | 156000..161000";
              }
              units "0.01 nanometers";
              default "0";
              description
                "Downstream wavelength.";
              reference
                "ITU-T G.989.2";
    
            }
          }  // list wavelength-profile
        }  // grouping wavelength-profile-data
    
        grouping multicast-gemports-config-data {
          description
            "The configuration data of multicast GPON Encapsulation Method
    (GEM) ports. Multicast GEM ports can be used for multicast or
    broadcast.";
          list multicast-gemport {
            key "name";
            description
              "A multicast GPON Encapsulation Method (GEM) port.";
            leaf name {
              type bbf-yang:string-ascii64;
              description
                "The name of the multicast GPON Encapsulation Method (GEM)
    port.";
            }
    
            leaf gemport-id {
              type uint32;
              description
                "The ID of the multicast GPON Encapsulation Method (GEM)
    port.";
            }
    
            leaf interface {
              type if:interface-ref;
              must
                "/if:interfaces/if:interface[if:name=current()]
    /if:type='bbf-xponift:channel-pair'" {
                error-message
                  "Must reference a channel pair.";
              }
              description
                "Each channel pair has in general one or several multicast
    GPON Encapsulation Method (GEM) ports.";
            }
    
            leaf traffic-class {
              type uint8 {
                range "0..7";
              }
              description "Traffic class value.";
            }
    
            leaf is-broadcast {
              type boolean;
              default "false";
              description
                "If 'true', this multicast GPON Encapsulation Method (GEM)
    port is used for broadcast traffic.";
            }
          }  // list multicast-gemport
        }  // grouping multicast-gemports-config-data
    
        grouping channel-partition-config-data {
          description
            "All configuration data for a channel partition.";
          leaf channel-group-ref {
            type if:interface-ref;
            must
              "derived-from-or-self(/if:interfaces/if:interface[if:name=current()]/if:type,'bbf-xponift:channel-group')" {
              error-message
                "Must reference a channel group.";
            }
            mandatory true;
            description
              "Reference to a channel group.";
          }
    
          leaf channel-partition-index {
            type uint8 {
              range "0..15";
            }
            description
              "This attribute identifies the partition inside the channel
    group.";
            reference
              "ITU-T G.989.3 clause 6.1.5.9 and clause 11.3.3.14.";
    
          }
    
          leaf downstream-fec {
            type boolean;
            default "true";
            description
              "Enable/Disable downstream Forward Error Correciton (FEC).
    Note that downstream FEC is always enabled for XG-PON and
    XGS-PON and thus a value of 'false' is ignored.";
            reference
              "ITU-T G.984.3 clause 13.1.2.1
              ITU-T G.987.3 clause 10.1
              ITU-T G.9807.1 clause C.10.1.1.1.3
              ITU-T G.989.3 clause 10.1.1.1.3";
    
          }
    
          leaf closest-onu-distance {
            type uint16 {
              range "0..40";
            }
            units "kilometers";
            default "0";
            description
              "Establishes the distance of the closest Optical Network Unit
    (ONU). Used to determine how to equalize delay between the
    ONUs.";
          }
    
          leaf maximum-differential-xpon-distance {
            type uint16 {
              range "20 | 40";
            }
            units "kilometers";
            default "20";
            description
              "This attribute provides the ability to set the maximum
    differential logical reach for a channel partition.";
            reference
              "ITU-T G.989.1 clause 8.2
              ITU-T G.989.3 clause 13.1.";
    
          }
    
          leaf authentication-method {
            type bbf-xpon-types:auth-method-type;
            default "serial-number";
            description
              "Optical Network Unit (ONU) Authentication mode option for
    this channel partition.";
            reference
              "ITU-T G.984.3, section VI.1.";
    
          }
    
          leaf multicast-aes-indicator {
            type boolean;
            default "false";
            description
              "If 'true', enables Advanced Encryption Standard (AES) for
    multicast GPON Encapsulation Method (GEM) ports.";
            reference
              "ITU-T G.984.3, section 12.2. and 9.2.3.8
              ITU-T G.987.3, section 15.5.1 and 15.5.4
              ITU-T G.9807.1, section C.15.5.1 and C.15.5.4
              ITU-T G.989.3, section 15.5.1 and 5.5.4.";
    
          }
        }  // grouping channel-partition-config-data
    
        grouping channel-group-config-data {
          description
            "All configuration data for a channel group.";
          leaf polling-period {
            type uint32 {
              range "1..864000";
            }
            units "0.1 seconds";
            default "100";
            description
              "The period between two consecutive times the auto-detection
    procedure on each pair in the group is executed.
    Used in NG-PON2 for quiet window control.
    Value represents tenths of seconds.
    (e.g., 1 = 0.1 second, 864000 = 24 hours).";
          }
    
          leaf raman-mitigation {
            type bbf-xpon-types:raman-mitigation-type;
            default "raman-none";
            description
              "NG-PON2 Raman mitigation coding schemes when using Radio
    Frequency (RF) video overlay.";
            reference
              "ITU-T G.989.2 Appendix IX";
    
          }
    
          leaf system-id {
            type string {
              pattern '[0-9a-fA-F]{5}';
            }
            description
              "A 20-bit number that identifies a specific NG-PON2 system
    (typically a channel group) among multiple NG-PON2 systems
    under a common administation.
    It is defined as NGSYS ID in G.989.3 clause 6.1.5.2 and may
    be coded to support administration such as name, geographical
    location, servie profile (see also G.989.3 table VIII.2).";
            reference
              "ITU-T G.989.3 clause 6.1.5.2;
              ITU-T G.989.3 table VIII.2";
    
          }
    
          container pon-pools {
            if-feature bbf-xpon:pon-pools;
            description
              "Manages per channel termination PON resources allocation.
    A channel termination can only be a member of a
    single channel group. Within a channel group, PON resources
    should not overlap and only be assigned to a single
    channel termination.";
            list pon-pool {
              key "name";
              min-elements 1;
              max-elements 8;
              description
                "The allocated PON pools of Allocation Identifiers
    (Alloc-ID), GPON Encapsulation Method port Identifiers
    (GEM port-ID) and Optical Network Unit Identifiers
    (ONU-ID).";
              leaf name {
                type bbf-yang:string-ascii64;
                description
                  "Name of the PON pool.";
              }
    
              leaf channel-termination-ref {
                type if:interface-ref;
                must
                  "derived-from-or-self(/if:interfaces/if:interface[if:name = current()]/if:type,'bbf-xponift:channel-termination')" {
                  error-message
                    "Referenced interface must be of type 'channel-termination'.";
                }
                description
                  "Reference to a channel termination to which PON resource
    pools will be assigned.";
              }
    
              leaf alloc-id-values {
                type alloc-id-values;
                description
                  "The list of assignable Allocation Identifiers (Alloc-ID)
    between 1024 to 16383 for G.9807.1 XGS-PON/G.989.3
    NG-PON2 compliant Optical Line Terminations (OLT) and
    256 to 4095 for G.984.3 GPON-compliant Optical Line
    Terminations (OLT). A single value or range of values
    can be specified.
    
    The format of this string can be any of the following:
     single value
       Example: '1024'
     comma separated list of values
       Example: '1024,1030,16000'
     range of values
       Example: '1024-1300'
     comma separated list of ranges
       Example: '1025-1300,1301-1400,1500-1600'
     comma separated list of values and ranges
       Example: '1024-1300,1301,1303-1310'.";
              }
    
              leaf gemport-values {
                type gemport-values;
                description
                  "The list of assignable GPON Encapsulation Method (GEM)
    port Identifiers (IDs) between 1021 to 65534 for G.9807.1
    XGS-PON/G.989.3 NG-PON2 compliant Optical Line
    Terminations (OLT) and 254 to 4095 for G.984.3
    GPON-compliant Optical Line Terminations (OLT).
    
    A single value or range of values can be specified.
    
      single value
        Example: '1024'
      comma separated list of values
        Example: '1024,1030,16000'
      range of values
        Example: '1024-1300'
      comma separated list of ranges
        Example: '1025-1300,1301-1400,1500-1600'
      comma separated list of values and ranges
        Example: '1024-1300,1301,1303-1310'.";
              }
    
              leaf onu-id-values {
                type onu-id-values;
                description
                  "The list of assignable Optical Network Unit Identifier
    (ONU-ID) values between 0 to 1020 for G.9807.1 XGS-PON/
    G.989.3 NG-PON2 compliant Optical Line Terminations (OLT)
    and 0 to 253 for G.984.3 GPON-compliant Optical Line
    Terminations (OLT).
    
    The format of this string can be any of the following:
     single value
      Example: '1020'
    comma separated list of values
      Example: '1,30,600'
    range of values
      Example: '30-60'
    comma separated list of ranges
      Example: '30-60,80-90'
    comma separated list of values and ranges
      Example: '1,30-60,70,90-100'.";
              }
            }  // list pon-pool
          }  // container pon-pools
        }  // grouping channel-group-config-data
    
        grouping channel-group-state-data {
          description
            "All state data for a channel group.";
          container allocated-upstream-channel-ids {
            description
              "The list maintained by the system of all the upstream
    channel-id's which are already allocated to the channel
    group. For NG-PON2, the applicable values are [0..7], for
    XGS-PON a dedicated value 'xgs' is applicable rather than
    value '0': this is to allow the coexistence of XGS-PON
    with NG-PON2 using channel-id=0. This list is a helper
    to avoid upstream channel-id conflicts when allocating
    channel pairs to a channel group.";
            leaf-list channel-id {
              type bbf-xpon-types:composite-channel-id-type;
              description
                "An upstream channel-id in use on the channel group.
    For NG-PON2, value must be in [0..7].
    For XGS-PON, value must be 'xgs'.";
            }
          }  // container allocated-upstream-channel-ids
    
          container allocated-downstream-channel-ids {
            description
              "The list maintained by the system of all the downstream
    channel-id's which are already allocated to the
    channel group. For NG-PON2, the applicable values are
    in [0..7], for XGS-PON a dedicated value 'xgs' is
    applicable rather than value '0': this is to allow the
    coexistence of XGS-PON with NG-PON2 using channel-id=0. This
    list is a helper to avoid downstream channel-id conflicts
    when allocating channel pairs to a channel group.";
            leaf-list downstream-channel-id {
              type bbf-xpon-types:composite-channel-id-type;
              description
                "A downstream channel-id in use on the channel group.
    For NG-PON2, value must be in [0..7].
    For XGS-PON, value must be 'xgs'.";
            }
          }  // container allocated-downstream-channel-ids
    
          container allocated-downstream-wavelengths {
            description
              "The list maintained by the system of all the downstream
    wavelengths already allocated to the channel group
    including all of the NG-PON2, XGS-PON, XG-PON and GPON
    cases.
    This list is a helper to avoid wavelength conflicts
    when allocating channel pairs to a channel group.";
            leaf-list wavelength {
              type bbf-xpon-types:composite-downstream-wavelength-type;
              description
                "A downstream wavelength already allocated to the
    channel group. For NG-PON2 it must be a value in
    [156000..161000] expressed in hundredths of nm to fit
    ITU-T precision requirements. For the XGS-PON, XG-PON
    and GPON cases, it must have resp. the value 'xgs',
    'xgpon' or 'gpon'.";
            }
          }  // container allocated-downstream-wavelengths
    
          container pon-pools {
            if-feature bbf-xpon:pon-pools;
            description
              "Reports the available and consumed per channel termination
    PON resources allocation.";
            list pon-pool {
              key "name";
              min-elements 1;
              max-elements 8;
              description
                "A channel termination's current pool
    of Allocation Identifiers (Alloc-ID), GPON
    Encapsulation Method port Identifiers (GEM port-ID) and
    Optical Network Unit Identifiers (ONU-ID).";
              leaf name {
                type bbf-yang:string-ascii64;
                description
                  "Name of the PON pool.";
              }
    
              leaf channel-termination-ref {
                type if:interface-state-ref;
                must
                  "derived-from-or-self(/if:interfaces-state/if:interface[if:name = current()]/if:type,'bbf-xponift:channel-termination')";
                description
                  "Reference the configured channel termination
    that is being reported against.";
              }
    
              container consumed-resources {
                description
                  "The consumed PON resources.";
                leaf alloc-id-values {
                  type alloc-id-values;
                  description
                    "The list of consumed Allocation Identifiers (Alloc-ID).
    For example: '1024-1300,1301,1303-1310'.";
                }
    
                leaf gemport-values {
                  type gemport-values;
                  description
                    "The list of consumed GPON Encapsulation Method port
    Identifiers (GEM port-ID).
    For example: '1024-1300,1301,1303-1310'.";
                }
    
                leaf onu-ids {
                  type onu-id-values;
                  description
                    "The list of consumed Optical Network Unit Identifiers
    (ONU-ID).
    For example: '1,30-60,70,90-100'.";
                }
              }  // container consumed-resources
    
              container available-resources {
                description
                  "The available/unused PON resources.";
                leaf alloc-id-values {
                  type alloc-id-values;
                  description
                    "The list of available Allocation Identifiers
    (Alloc-ID).
    For example: '1024-1300,1301,1303-1310'.";
                }
    
                leaf gemport-values {
                  type gemport-values;
                  description
                    "The list of available GPON Encapsulation Method port
    Identifiers (GEM port-IDs).
    For example: '1024-1300,1301,1303-1310'.";
                }
    
                leaf onu-ids {
                  type onu-id-values;
                  description
                    "The list of available Optical Network Unit Identifiers
    (ONU-ID).
    For example: '1,30-60,70,90-100'.";
                }
              }  // container available-resources
            }  // list pon-pool
          }  // container pon-pools
        }  // grouping channel-group-state-data
    
        grouping channel-pair-config-data {
          description
            "All configuration data for a channel pair.";
          leaf channel-group-ref {
            type if:interface-ref;
            must
              "derived-from-or-self(/if:interfaces/if:interface[if:name=current()]/if:type,'bbf-xponift:channel-group')" {
              error-message
                "Must reference a channel group.";
            }
            description
              "Reference to channel group. Note that it is not allowed
    to have several channel-pairs with identical downstream
    channel-ID or upstream channel-ID or transmit wavelength
    simultaneously active on the same chnanel-group.
    In particular there may be only a maximum of one XGS-PON,
    one XG-PON and one GPON active on the same channel group.
    The YANG model does not enforce these constraints which are
    assumed to be enforced or verified by the OLT network
    element software.";
          }
    
          leaf channel-partition-ref {
            type if:interface-ref;
            must
              "derived-from-or-self(/if:interfaces/if:interface[if:name=current()]/if:type,'bbf-xponift:channel-partition') and /if:interfaces/if:interface[if:name=current()]/channel-partition/channel-group-ref=../channel-group-ref" {
              error-message
                "Must reference a channel partition associated with the same channel group this pair is associated with.";
            }
            description
              "Reference to channel partition.";
          }
    
          leaf wavelength-prof-ref {
            when
              "derived-from-or-self(../channel-pair-type,'bbf-xpon-types:ngpon2-twdm') or derived-from-or-self(../channel-pair-type, 'bbf-xpon-types:ngpon2-ptp') or derived-from-or-self(../channel-pair-type,'bbf-xpon-types:xgs')" {
              description
                "Only applicable for Time Wavelength Division Multiplexing
    (TWDM) NG-PON2, Point-to-Point (PtP) NG-PON2 or XGS-PON
    channel pairs.";
            }
            type wavelength-prof-ref;
            description
              "An NG-PON2 channel pair needs to point to an existing
    wavelength profile. Similar for XGS-PON (ref: ITU-T G.9807.1
    A.8.2: Basic Wavelength and Optional Wavelength sets). The
    wavelength for XG-PON and GPON is fixed per ITU-T standards
    and needs not be configured via a wavelength profile.";
          }
    
          leaf channel-pair-type {
            type identityref {
              base bbf-xpon-types:channel-pair-type-base;
            }
            mandatory true;
            description
              "Represents the type of channel pair
    (e.g., TWDM NG-PON2, PtP NG-PON2, XGS-PON, XG-PON,
    GPON).";
          }
    
          leaf channel-pair-line-rate {
            when
              "derived-from-or-self(../channel-pair-type,'bbf-xpon-types:ngpon2-twdm') or derived-from-or-self(../channel-pair-type, 'bbf-xpon-types:ngpon2-ptp')" {
              description
                "Only applicable for Time Wavelength Division
    Multiplexing (TWDM) NG-PON2 or Point-to-Point (PtP)
    NG-PON2 channel pairs.";
            }
            type identityref {
              base bbf-xpon-types:channel-pair-line-rate-profile-base;
            }
            default
              "bbf-xpon-types:unplanned-cp-line-rate";
            description
              "Represents the planned downstream/upstream channel pair
    speed for NG-PON2. The line rates for
        XGS-PON (downstream 10Gbps/upstream 10Gbps),
        XG-PON(downstream 10Gbps/upstream 2.5Gbps) and
        GPON (downstream 2.5Gbps/upstream 1.2Gbps)
    are fixed per ITU-T standards and need not be configured.";
          }
    
          leaf gpon-pon-id-interval {
            when
              "derived-from-or-self(../channel-pair-type, 'bbf-xpon-types:gpon')";
            type uint16 {
              range "0..60";
            }
            units "seconds";
            default "0";
            description
              "This attribute is used to specify the frequency of
    transmission of the periodic downstream PON-ID PLOAM
    message for this GPON. See ITU-T G.984.3 C1. The default
    value '0' allows not to generate this PLOAM message,
    fulfilling ITU-T G.984.3 C2 requirement.
    This is only applicable to GPON.";
            reference
              "ITU-T G.984.3 C1
              ITU-T G.984.3 C2";
    
          }
        }  // grouping channel-pair-config-data
    
        grouping channel-pair-state-data {
          description
            "All state data for a channel pair.";
          leaf actual-downstream-wavelength {
            type uint32 {
              range "0 | 148000..162000";
            }
            units "0.01 nanometers";
            default "0";
            description
              "Represents the Actual Downstream wavelength for the
    channel pair for any of the NG-PON2, XGS-PON, XG-PON or
    GPON case. It is expressed in hundredths of nm to fit
    ITU-T precision requirements.";
          }
    
          leaf primary-ct-assigned {
            type boolean;
            default "false";
            description
              "If 'true', a channel termination with Primary type B
    role has been assigned to this channel pair.";
            reference
              "ITU-T G.989.3 clause 18.2";
    
          }
    
          leaf secondary-ct-assigned {
            type boolean;
            default "false";
            description
              "If 'true', a channel termination with Secondary type B
    role has been assigned to this channel pair.";
            reference
              "ITU-T G.989.3 clause 18.2";
    
          }
        }  // grouping channel-pair-state-data
    
        grouping onu-phase-drift-monitoring-data {
          description
            "The arrival phase of the Optical Network Unit (ONU)
    transmission may drift due to aging, temperature changes and
    other factors. In those cases, the equalization delay can be
    recalculated/updated from the drift of the upstream
    transmission. This allows small corrections to be made without
    having to re-range the ONU.
    Configuration parameters in this grouping govern ONU
    upstream transmission phase drift monitoring by an Optical
    Line Termination (OLT).";
          reference
            "ITU-T G.984.x clause 10.3.5
            ITU-T G.987.x clause 13.1.6
            ITU-T G.989.x clause 13.1.6
            ITU-T G.9807.x clause 13.1.6.";
    
          leaf monitoring-interval {
            type union {
              type uint32 {
                range "1..max";
              }
              type enumeration {
                enum "disable" {
                  value 0;
                  description
                    "Disable drift monitoring.";
                }
              }
            }
            units "milliseconds";
            default "1000";
            description
              "Interval in milliseconds for Optical Network Unit (ONU)
    transmission phase drift monitoring.";
            reference
              "ITU-T G.984.x clause 10.3.5
              ITU-T G.987.x clause 13.1.6
              ITU-T G.989.x clause 13.1.6
              ITU-T G.9807.x clause 13.1.6.";
    
          }
    
          leaf lower-threshold {
            type union {
              type uint32 {
                range "1..max";
              }
              type enumeration {
                enum "itut-recommended-value" {
                  value 0;
                  description
                    "ITU-T recommended value (see reference).";
                }
              }
            }
            units "bits";
            default "itut-recommended-value";
            description
              "Lower threshold in bits. Drift value below this threshold
    is considered acceptable and doesn't require any corrective
    actions. If drift value averaged over monitoring-interval
    exceeds the 'lower-threshold' and doesn't exceed the
    'upper-threshold', Optical Line Termination (OLT) must
    calculate new equalization delay value and transmit it to the
    Optical Network Unit (ONU) using Tanging_Time PLOAM message.
    The OLT Channel Termination (CT) also raises a Drift of
    Window (DOWi) event.
    - US speed 2.48832 Gbps : +- 8 bits
    - US speed 9.95328 Gbps : +- 32 bits.";
            reference
              "ITU-T G.984.x clause 10.3.5
              ITU-T G.987.x clause 13.1.6
              ITU-T G.989.x clause 13.1.6
              ITU-T G.9807.x clause 13.1.6.";
    
          }
    
          leaf upper-threshold {
            type union {
              type uint32 {
                range "1..max";
              }
              type enumeration {
                enum "itut-recommended-value" {
                  value 0;
                  description
                    "ITU-T recommended value (see reference).";
                }
              }
            }
            units "bits";
            default "itut-recommended-value";
            description
              "The upper threshold establishes the critical bounds beyond
    which the transmission drift can affect the other Optical
    Network Units (ONU) on the PON. If the drift exceeds the
    upper threshold, the Optical Line Termination (OLT) Channel
    Termination (CT) declares transmission interference warning
    (TIWi) and takes further mitigating actions that may include
    deactivation or disabling of the offending ONU-ID, or
    execution of a rogue Optical Network Unit (ONU) diagnostic
    procedure. The OLT CT also raises a Drift of Window (DOWi)
    event.
    - US speed 2.48832 Gbps : +- 16 bits
    - US speed 9.95328 Gbps : +- 64 bits.";
            reference
              "ITU-T G.984.x clause 10.3.5
              ITU-T G.987.x clause 13.1.6
              ITU-T G.989.x clause 13.1.6
              ITU-T G.9807.x clause 13.1.6.";
    
          }
        }  // grouping onu-phase-drift-monitoring-data
    
        grouping channel-termination-config-data {
          description
            "All configuration data for a channel termination.";
          leaf channel-pair-ref {
            type if:interface-ref;
            must
              "derived-from-or-self(/if:interfaces/if:interface[if:name=current()]/if:type,'bbf-xponift:channel-pair') and /if:interfaces/if:interface[if:name=current()]/bbf-xpon:channel-pair/bbf-xpon:channel-pair-type = ../bbf-xpon:channel-termination-type" {
              error-message
                "Must reference a channel pair with the same xPON type as the channel termination.";
            }
            description
              "Reference to a channel pair.";
          }
    
          leaf channel-termination-type {
            type identityref {
              base bbf-xpon-types:channel-pair-type-base;
            }
            mandatory true;
            description
              "Represents the type of channel termination (e.g.,
    TWDM NG-PON2, PtP NG-PON2, XGS-PON, XG-PON, GPON).";
          }
    
          leaf meant-for-type-b-primary-role {
            type boolean;
            description
              "If 'true', the channel termination is meant to play type B
    protection Primary role when it refers to a channel pair.
    When false, the channel termination is meant to play
    type B protection Secondary role when it refers to a
    channel pair.";
            reference
              "ITU-T G.898.3 Amendment 1 (11/2016), section 18.1.";
    
          }
    
          leaf ngpon2-twdm-admin-label {
            when
              "derived-from-or-self(../bbf-xpon:channel-termination-type,'bbf-xpon-types:ngpon2-twdm')" {
              description
                "Only applicable for Time Wavelength Division
    Multiplexing (TWDM) NG-PON2 channel pairs.";
            }
            type uint32 {
              range "0..268435455";
            }
            description
              "For TWDM NG-PON2, the admin-label is configurable and is
    28 bits long. It is the configurable part of the PON
    Identifier (PON-ID) which is available as state data.";
            reference
              "ITU-T G.989.3 section 6.1.5.3";
    
          }
    
          leaf ngpon2-ptp-admin-label {
            when
              "derived-from-or-self(../bbf-xpon:channel-termination-type,'bbf-xpon-types:ngpon2-ptp')" {
              description
                "Only applicable for Point-to-Point (PtP) NG-PON2
    channel pairs.";
            }
            type uint32 {
              range "0..4194303";
            }
            description
              "For PtP NG-PON2, the admin-label is configurable and is
    22 bits long. It is the configurable part of the PON
    Identifier (PON-ID) which is available as state data.";
            reference
              "ITU-T G.989.3 section 6.1.5.3";
    
          }
    
          leaf xgs-pon-id {
            when
              "derived-from-or-self(../bbf-xpon:channel-termination-type,'bbf-xpon-types:xgs')" {
              description
                "Only applicable for XGS-PON channel pairs.";
            }
            type uint32;
            description
              "For XGS-PON, the PON Identifier (PON-ID) is entirely
    configurable and is 32 bits long. The PON-ID is also
    available as state data.";
            reference
              "ITU-T G.9807.1 section C.10.1.1.1.3";
    
          }
    
          leaf xgpon-pon-id {
            when
              "derived-from-or-self(../bbf-xpon:channel-termination-type,'bbf-xpon-types:xgpon')" {
              description
                "Only applicable for XG-PON channel pairs.";
            }
            type uint32;
            description
              "For XG-PON, the PON Identifier (PON-ID) is entirely
    configurable and is 32 bits long. The PON-ID is also
    available as state data.";
            reference
              "ITU-T G.987.3 section E.2";
    
          }
    
          leaf gpon-pon-id {
            when
              "derived-from-or-self(../bbf-xpon:channel-termination-type,'bbf-xpon-types:gpon')" {
              description
                "Only applicable for GPON channel pairs.";
            }
            type bbf-xpon-types:string-hex14;
            description
              "For GPON, the PON Identifier (PON-ID) is entirely
    configurable with any binary value over 7 bytes. The PON-ID
    is also available as state data.";
            reference
              "ITU-T G.984.3 section C.2.2";
    
          }
    
          leaf pon-tag {
            when
              "not(derived-from-or-self(../bbf-xpon:channel-termination-type,'bbf-xpon-types:gpon'))" {
              description
                "Not applicable for GPON channel pairs.";
            }
            type string {
              pattern '[0-9a-fA-F]{16}';
            }
            description
              "8 bytes. Each octet is represented by two hex values.
    Used to specify channel-pair-TAG attribute in NG-PON2,
    XGS-PON and XG-PON downstream PLOAM messages.
    The 'pon-tag' is not applicable for GPON.";
          }
    
          leaf ber-calc-period {
            type uint32 {
              range "1..864000";
            }
            units "0.1 seconds";
            default "10";
            description
              "Measurement period used to determine if a Signal Degrade
    (SDi) alarm has occurred for an Optical Network Unit (ONU).";
            reference
              "ITU-T G.984.3 section 11.1.3";
    
          }
    
          leaf location {
            type identityref {
              base bbf-xpon-types:location-base;
            }
            description
              "Indicates whether the Channel Termination (CT) is physically
    inside the Optical Line Termination (OLT) i.e., can be
    related to a port in the OLT hardware model or physically
    part of another OLT.";
          }
    
          container onu-phase-drift-monitoring-control {
            if-feature bbf-xpon:onu-phase-drift-monitoring-control;
            description
              "Optical Network Unit (ONU) Phase Drift monitoring
    configuration.";
            uses onu-phase-drift-monitoring-data;
          }  // container onu-phase-drift-monitoring-control
    
          leaf-list notifiable-defect {
            if-feature bbf-xpon:channel-termination-defect-notifications;
            type identityref {
              base bbf-xpon-def:items-detected-at-olt-for-ct;
            }
            description
              "Optical Line Termination (OLT) is expected to generate a
    'defect-state-change' notification each time defect(s)
    listed in this leaf-list are raised or cleared.
    If 'notifiable-defect' includes an identity which
    is the base value for other defect(s) identity(ies),
    the OLT will generate a single notification when status of
    any defect derived from this base value changes.
    
    In case the leaf-list is empty (as by default) the OLT
    should not generate any 'defect-state-change'
    notification.";
          }
        }  // grouping channel-termination-config-data
    
        grouping channel-termination-oper-data {
          description
            "All oper data for a channel termination.";
          leaf pon-id-display {
            type bbf-xpon-types:pon-id-display-type;
            description
              "The PON Identifier (PON-ID) of the channel termination.
    Per ITU-T G.989.3, ITU-T G.9807.1, ITU-T G.987.3 and
    ITU-T G.984.3, depending of the xPON type some part
    of this object is configured by the operator and the
    other part is genuine operational data determined by
    the system.";
          }
    
          leaf type-b-state {
            type identityref {
              base bbf-xpon-types:type-b-state-base;
            }
            description
              "The type B protection state of the Channel Termination (CT);
    it will typically be active/standby. When the channel
    termination is not yet referring to a channel pair, it is not
    part of any type B protection scheme (and not usable either);
    in that case its type-b-state has the value
    'not-part-of-type-b.";
            reference
              "ITU-T G.989.3 Amendment 1 clause 18.2";
    
          }
    
          leaf location {
            type identityref {
              base bbf-xpon-types:location-base;
            }
            description
              "Indicates whether the Channel Termination (CT) is physically
    inside the Optical Line Termination (OLT) i.e., can be
    related to a port in the OLT hardware model or physically
    part of another OLT.";
          }
    
          leaf-list active-defects {
            if-feature bbf-xpon:channel-termination-defects;
            type identityref {
              base bbf-xpon-def:items-detected-at-olt-for-ct;
            }
            description
              "Defects detected by Optical Line Termination (OLT) for
    Channel Termination (CT).
    
    All applicable identities should be provided as value.";
            reference
              "ITU-T G.984.3 (01/2014) 11.1.1
              ITU-T G.987.3 (01/2014) 14.2.1
              ITU-T G.989.3 (2015)/Amd.2 (11/2018) Table 14-2
              ITU-T G.9807.1 (2016)/Amd.1 (10/2017) Table C.14.2";
    
          }
    
          leaf-list sufi-affected-onus {
            if-feature bbf-xpon:channel-termination-defects;
            type bbf-xpon-types:onu-serial-number;
            description
              "List of Optical Network Units (ONU) that have exhibited a
    start-up failure (SUFi).";
            reference
              "ITU-T G.984.3 (01/2014) 11.1.1 SUFi
              ITU-T G.987.3 (01/2014) 14.2.1 SUFi
              ITU-T G.989.3 (2015)/Amd.2 (11/2018) Table 14-2 SUFi
              ITU-T G.9807.1 (2016)/Amd.1 (10/2017) Table C.14.2 SUFi";
    
          }
    
          notification defect-state-change {
            if-feature bbf-xpon:channel-termination-defect-notifications;
            description
              "A notification traceable to a channel-teremination which
    signifies that defect(s) detected by an Optical Line
    Termination (OLT) have been raised and/or cleared. Such
    notification is only generated for defects listed in the
    'notifiable-defect' leaf list.";
            list defect {
              key "type";
              description
                "A notifiable defect that has changed state since
    the previous 'defect-state-change' notification.";
              leaf type {
                type identityref {
                  base bbf-xpon-def:items-detected-at-olt-for-ct;
                }
                description "Defect type.";
              }
    
              leaf state {
                type bbf-xpon-def:defect-state;
                mandatory true;
                description
                  "The current defect state.";
              }
    
              leaf last-change {
                type yang:date-and-time;
                mandatory true;
                description
                  "The Optical Line Termination (OLT) system date and
    time when the OLT has declared that the defect state
    has changed.";
              }
            }  // list defect
          }  // notification defect-state-change
        }  // grouping channel-termination-oper-data
    
        grouping multicast-distribution-set-data {
          description
            "All configuration data for a multicast distribution set.";
          list multicast-set {
            key "name";
            description
              "A multicast distribution set.";
            leaf name {
              type bbf-yang:string-ascii64;
              description
                "Name of the multicast distribution set.";
            }
    
            leaf multicast-gemport-ref {
              type multicast-gemport-ref;
              description
                "Points to a multicast GPON Encapsulation Method (GEM)
    port.";
            }
    
            choice multicast-vlans {
              description
                "Multicast VLAN list or all. All means all multicast
    VLANs are carried on the same GPON Encapsulation Method
    (GEM) port.";
              case vlan-list {
                description
                  "Multicast VLAN list.";
                list vlan-list {
                  key "multicast-vlan-id";
                  description
                    "A muticast VLAN ID.";
                  leaf multicast-vlan-id {
                    type uint16 {
                      range "0..4095";
                    }
                    description
                      "Multicast VLAN ID.";
                  }
                }  // list vlan-list
              }  // case vlan-list
    
              case all-multicast-vlans {
                description
                  "All multicast VLANs are carried on the same GPON
    Encapsulation Method (GEM) port.";
                leaf all-multicast-vlans {
                  type empty;
                  description
                    "All multicast VLANs.";
                }
              }  // case all-multicast-vlans
            }  // choice multicast-vlans
          }  // list multicast-set
        }  // grouping multicast-distribution-set-data
    
        // objects
        container xpon {
          description
            "Configuration associated with managing xPON in a system.";
          container ictp {
            if-feature ictp-support;
            description
              "Configuration data for the support of Inter Channel
    Termination Protocol (ICTP).";
            reference
              "BBF TR-352";
    
            leaf activated {
              type boolean;
              default "false";
              description
                "This is to enable or disable support of Inter Channel
    Termination Protocol (ICTP). When true, the Optical Line
    Termination (OLT) attempts to establish Transmission
    Control Protocol (TCP) connections with all relevant peer
    ICTP proxies and is ready to exchange ICTP messages with
    other channel terminations through those ICTP proxies. When
    false, the OLT does not process nor generate any ICTP
    messages and will not establish nor maintain any TCP
    connection to any ICTP proxy.";
            }
    
            container all-ictp-proxies-all-channel-groups {
              description
                "This container contains all configuration data related to
    TR-352 Inter Channel Termination Protocol (ICTP) transport
    infrastructure for all ICTP proxies, whether they are in
    charge of 'inside-olt' channel terminations or
    'outside-olt' channel terminations, for all channel
    groups.";
              list proxy {
                key "name";
                description
                  "The list of all Inter Channel Termination Protocol (ICTP)
    proxies, whether they are in charge of 'inside-olt'
    channel terminations or 'outside-olt' channel
    terminations, for all channel groups configured in the
    Optical Line Termination (OLT).";
                leaf name {
                  type bbf-yang:string-ascii64;
                  description
                    "Name of the Inter Channel Termination Protocol (ICTP)
    Proxy.";
                }
    
                leaf host {
                  type inet:host;
                  mandatory true;
                  description
                    "This is the IP address or the DNS domain name of the
    Inter Channel Termination Protocol (ICTP) proxy. TCP
    connections originating from this ICTP proxy will use
    this IP address (or the one resolved from the DNS
    domain name) as source IP address. Other ICTP proxies
    will reach this Proxy using this IP address (or the one
    resolved from the DNS domain name) as destination
    address.";
                }
    
                leaf tcp-port {
                  if-feature configurable-ictp-proxy-tcp-port;
                  type inet:port-number;
                  default "7202";
                  description
                    "The TCP port used by the Inter Channel Termination
    Protocol (ICTP) proxy.";
                }
    
                container all-channel-terminations-proxied-by-this-proxy {
                  description
                    "In the context of a given Inter Channel Termination
    Protocol (ICTP) proxy, this container contains the list
    of all channel terminations 'inside' and 'outside' the
    Optical Line Termination (OLT), for all channel groups,
    for which this ICTP proxy is playing proxy role.";
                  list channel-termination {
                    key "channel-termination-ref";
                    description
                      "The list of all channel terminations inside and
    outside the Optical Line Termination (OLT), for all
    channel groups, for which this Inter Channel
    Termination Protocol (ICTP) proxy is playing proxy
    role.";
                    leaf channel-termination-ref {
                      type if:interface-ref;
                      must
                        "derived-from-or-self(/if:interfaces/if:interface[if:name=current()]/if:type,'bbf-xponift:channel-termination')" {
                        error-message
                          "Must reference a channel termination.";
                      }
                      description
                        "Reference to a channel termination for which this
    Inter Channel Termination Protocol (ICTP) proxy is
    responsible.";
                    }
    
                    leaf channel-termination-ictp-activated {
                      type boolean;
                      default "false";
                      description
                        "When true, the Inter Channel Termination Protocol
    (ICTP) proxy is willing to exchange ICTP messages
    on behalf of this channel termination. When false,
    the ICTP proxy ignores this channel termination.";
                    }
                  }  // list channel-termination
                }  // container all-channel-terminations-proxied-by-this-proxy
              }  // list proxy
            }  // container all-ictp-proxies-all-channel-groups
          }  // container ictp
        }  // container xpon
    
        container xpon-state {
          config false;
          description
            "State data associated with managing xPON in a system.";
          container ictp {
            if-feature ictp-support;
            description
              "State data for the support of Inter Channel Termination
    Protocol (ICTP).";
            reference
              "BBF TR-352";
    
            container all-ictp-proxies-all-channel-groups {
              description
                "State data related to all Inter Channel Termination
    Protocol (ICTP) proxies across all channel groups.";
              list proxy {
                key "name";
                description
                  "The list of all Inter Channel Termination Protocol (ICTP)
    proxies for all channel-groups.";
                leaf name {
                  type bbf-yang:string-ascii64;
                  description
                    "Name of the Inter Channel Termination Protocol (ICTP)
    Proxy.";
                }
    
                leaf proxy-ip-address {
                  type bbf-xpon-types:ip-address-or-unresolved;
                  description
                    "This is the IP address (v4 or v6) of this Inter Channel
    Termination Protocol (ICTP) proxy as derived from its
    configured host and as used in the TCP connection when
    established. It is 'unresolved' if for some reason the
    system is unable to deduce the IP address from the host
    name of the ICTP proxy.";
                }
    
                leaf negotiated-ictp-version {
                  type union {
                    type enumeration {
                      enum "unknown" {
                        value 0;
                        description
                          "The proxy is unable to negotiate an Inter Channel
    Termination Protocol (ICTP) version.";
                      }
                    }
                    type uint8 {
                      range "1..max";
                    }
                  }
                  description
                    "This leaf reflects the negotiated Inter Channel
    Termination Protocol (ICTP) version of the proxy.";
                }
    
                leaf-list supported-ictp-version {
                  type uint8 {
                    range "1..max";
                  }
                  description
                    "This list of supported Inter Channel Termination
    Protocol (ICTP) versions of a proxy.";
                }
    
                container known-peered-proxies {
                  description
                    "In the context of an Inter Channel Termination Protocol
    (ICTP) proxy, this container contains state data about
    peering relations involving this ICTP proxy. An Optical
    Line Termination (OLT) must know at least all peering
    relations involving the ICTP proxies in charge of one
    or several channel terminations 'inside' the OLT.
    An OLT may or may not know peering relations between
    ICTP proxies exclusively involving channel terminations
    'outside' the OLT.";
                  list proxy {
                    key "name";
                    description
                      "In the context of an Inter Channel Termination
    Protocol (ICTP) proxy, the list of all ICTP proxies
    which the Optical Line Termination (OLT) knows to be
    peered with this ICTP proxy.";
                    leaf name {
                      type bbf-yang:string-ascii64;
                      description
                        "Name of this Inter Channel Termination Protocol
    (ICTP) peer proxy.";
                    }
    
                    leaf ip-address {
                      type bbf-xpon-types:ip-address-or-unresolved;
                      description
                        "This is the IP address (v4 or v6) of the peer
    Inter Channel Termination Protocol (ICTP) proxy as
    derived from its configured host and as used in the
    TCP connection when established. It is 'unresolved'
    if for some reason the system is unable to deduce
    the IP address from the host name of the ICTP
    proxy.";
                    }
    
                    leaf tcp-connection-state {
                      type identityref {
                        base bbf-xpon-types:tcp-connection-state-base;
                      }
                      description
                        "This leaf reflects the state of the Transmission
    Control Protocol (TCP) connection with this peer
    Inter Channel Termination Protocol (ICTP) Proxy.
    When 'established' the TCP connection is
    operational and able to transport ICTP messages.
    When 'not-established', the TCP connection is
    unable to exchange any ICTP message. When the TCP
    connection state is 'unknown' the Optical Line
    Termination (OLT) does not know whether the
    involved ICTP proxies can exchange ICTP messages or
    not; typically, this is because the OLT is not
    involved at all with either of the two related ICTP
    proxies.";
                    }
    
                    leaf source-tcp-port {
                      type inet:port-number;
                      description
                        "This is the source port number of the Transmission
    Control Protocol (TCP) connection with the peer
    Inter Channel Termination Protocol (ICTP) proxy,
    when established.";
                    }
    
                    leaf destination-tcp-port {
                      type inet:port-number;
                      description
                        "This is the destination port number of the
    Transmission Control Protocol (TCP) connection with
    the peer Inter Channel Termination Protocol (ICTP)
    proxy, when established.";
                    }
                  }  // list proxy
                }  // container known-peered-proxies
              }  // list proxy
            }  // container all-ictp-proxies-all-channel-groups
          }  // container ictp
        }  // container xpon-state
    
        augment /if:interfaces/if:interface {
          when
            "if:type = 'bbf-xponift:channel-group'";
          description
            "Augment interface configuration with xPON channel group
    configuration.";
          container channel-group {
            description
              "Channel group configuration data for all xPON variants
    (NG-PON2, XGS-PON, XG-PON and G-PON).";
          }  // container channel-group
        }
    
        augment /if:interfaces/if:interface {
          when
            "derived-from-or-self(if:type, 'bbf-xponift:channel-partition')";
          description
            "Augment interface configuration with xPON channel partition
    configuration.";
          container channel-partition {
            description
              "Channel partition configuration data for all xPON variants
    (NG-PON2, XGS-PON, XG-PON and G-PON).";
          }  // container channel-partition
        }
    
        augment /if:interfaces/if:interface {
          when
            "derived-from-or-self(if:type, 'bbf-xponift:channel-pair')";
          description
            "Augment interface configuration with xPON channel pair
    configuration.";
          container channel-pair {
            description
              "Channel pair configuration data for all xPON variants
    (NG-PON2, XGS-PON, XG-PON and G-PON).";
          }  // container channel-pair
        }
    
        augment /if:interfaces/if:interface {
          when
            "derived-from-or-self(if:type, 'bbf-xponift:channel-termination')";
          description
            "Augment interface configuration with xPON channel termination
    configuration.";
          container channel-termination {
            description
              "Channel termination configuration data for all xPON variants
    (NG-PON2, XGS-PON, XG-PON and G-PON).";
          }  // container channel-termination
        }
    
        augment /if:interfaces-state/if:interface {
          when
            "derived-from-or-self(if:type, 'bbf-xponift:channel-group')";
          description
            "Augment interface state data with xPON channel group
    state data.";
          container channel-group {
            description
              "Channel group state data for all xPON variants
    (NG-PON2, XGS-PON, XG-PON and G-PON).";
          }  // container channel-group
        }
    
        augment /if:interfaces-state/if:interface {
          when
            "derived-from-or-self(if:type, 'bbf-xponift:channel-pair')";
          description
            "Augment interface state data with xPON channel pair
    state data.";
          container channel-pair {
            description
              "Channel pair state data for all xPON variants
    (NG-PON2, XGS-PON, XG-PON and G-PON).";
          }  // container channel-pair
        }
    
        augment /if:interfaces-state/if:interface {
          when
            "derived-from-or-self(if:type, 'bbf-xponift:channel-termination')";
          description
            "Augment interface state data with xPON channel termination
    state data.";
          container channel-termination {
            description
              "Channel termination state data for all xPON variants
    (NG-PON2, XGS-PON, XG-PON and G-PON).";
          }  // container channel-termination
        }
    
        augment /bbf-xpon:xpon {
          description
            "Augment system level xPON configuration with wavelength
    profile configuration.";
          container wavelength-profiles {
            description
              "Wavelength profile configuration.";
            uses wavelength-profile-data;
          }  // container wavelength-profiles
        }
    
        augment /bbf-xpon:xpon {
          description
            "Augment system level xPON configuration with multicast GPON
    Encapsulation Method (GEM) port configuration.";
          container multicast-gemports {
            description
              "Multicast GPON Encapsulation Method (GEM) ports
    configuration data.";
            uses multicast-gemports-config-data;
          }  // container multicast-gemports
        }
    
        augment /if:interfaces/if:interface/bbf-xpon:channel-partition {
          description
            "Configuration of an xPON channel partition.";
          uses channel-partition-config-data;
        }
    
        augment /if:interfaces/if:interface/bbf-xpon:channel-group {
          description
            "Configuration of an xPON channel group.";
          uses channel-group-config-data;
        }
    
        augment /if:interfaces-state/if:interface/bbf-xpon:channel-group {
          description
            "State data of an xPON channel group.";
          uses channel-group-state-data;
        }
    
        augment /if:interfaces/if:interface/bbf-xpon:channel-pair {
          description
            "Configuration of an xPON channel pair.";
          uses channel-pair-config-data;
        }
    
        augment /if:interfaces-state/if:interface/bbf-xpon:channel-pair {
          description
            "State data of an xPON channel pair.";
          uses channel-pair-state-data;
        }
    
        augment /if:interfaces/if:interface/bbf-xpon:channel-termination {
          description
            "Configuration of an xPON channel termination.";
          uses channel-termination-config-data;
        }
    
        augment /if:interfaces-state/if:interface/bbf-xpon:channel-termination {
          description
            "State data of an xPON channel termination.";
          uses channel-termination-oper-data;
        }
    
        augment /bbf-xpon:xpon {
          description
            "Augment system level xPON configuration with multicast
    distribution set configuration.";
          container multicast-distribution-set {
            description
              "Configuration data for a multicast distribution set.";
            uses multicast-distribution-set-data;
          }  // container multicast-distribution-set
        }
      }  // module bbf-xpon
    

© 2023 YumaWorks, Inc. All rights reserved.