bbf-xpon

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

  • Version: 2024-04-23

    bbf-xpon@2024-04-23


    
      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
    
    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-2024, 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-385i3; see
    the TR itself for full legal notices.";
    
        revision "2024-04-23" {
          description
            "Issue 3.
    * Approval Date:    2024-04-23.
    * Publication Date: 2024-04-23.";
          reference
            "TR-385i3: YANG Modules for PON Management
            	<https://www.broadband-forum.org/technical/download/
            		 TR-385_Issue-3.pdf>";
    
        }
    
        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), G-PON 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 G-PON 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.
    For G-PON, range is 256..4095.
    For XG-PON, range is 1024..16383.
    For XGS-PON, range is 1024..16383.
    For NG-PON2, range is 1024..16383.
    For 25GS-PON, range is 1024..16383.
    For 50G-PON, range is 1024..16383.
    
    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'
    .";
          reference
            "ITU-T G.984.3 Clause 5.5.3;
            ITU-T G.987.3 Clause 6.4.3;
            ITU-T G.9807.1 Clause C.6.1.5.7;
            ITU-T G.989.3 Clause 6.1.5.7;
            ITU-T G.9804.2 Clause 6.5.2.6;
            MSA 25GS-PON Section C.6.1.5.7";
    
        }
    
        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/G-PON Encapsulation Method (GEM)
    port-ID values in ascending order.
    For G-PON, range is 254..4095.
    For XG-PON, range is 1023..65534.
    For XGS-PON, range is 1021..65534.
    For NG-PON2, range is 1021..65534.
    For 25GS-PON, range is 1021..65534.
    For 50G-PON, range is 1020..65534.
    
    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'
    .";
          reference
            "ITU-T G.984.3 Clause 5.5.5;
            ITU-T G.987.3 Clause 6.4.4;
            ITU-T G.9807.1 Clause C.6.1.5.8;
            ITU-T G.989.3 Clause 6.1.5.8;
            ITU-T G.9804.2 Clause 6.5.2.7;
            MSA 25GS-PON Section 5";
    
        }
    
        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.
    For G-PON, range is 0..253.
    For XG-PON, range is 0..1022.
    For XGS-PON, range is 0..1020.
    For NG-PON2, range is 0..1020.
    For 25GS-PON, range is 0..1018.
    For 50G-PON, range is 0..1019.
    
    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'
    .";
          reference
            "ITU-T G.984.3 Clause 5.5.2;
            ITU-T G.987.3 Clause 6.4.2;
            ITU-T G.9807.1 Clause C.6.1.5.6;
            ITU-T G.989.3 Clause 6.1.5.6;
            ITU-T G.9804.2 Clause 6.5.2.5;
            MSA 25GS-PON Section C.6.1.5.7";
    
        }
    
        // 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
              "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 wavelength-profiles {
            description
              "Wavelength profile configuration.";
            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 | 134000..162500";
                }
                units "0.01 nanometers";
                default "0";
                description
                  "Downstream wavelength.";
                reference
                  "ITU-T G.989.2 Clause 11.1.4.3;
                  ITU-T G.989.2 Clause A.1.5;
                  ITU-T G.9807.1 Clause A.8.2;
                  MSA 25GS-PON Section B1;
                  ITU-T G.9804.3 Clause 9.2.6.2;
                  ITU-T G.9804.3 Table 9-5";
    
              }
            }  // list wavelength-profile
          }  // container wavelength-profiles
    
          container multicast-gemports {
            description
              "Multicast G-PON Encapsulation Method (GEM) ports
    configuration data.";
            list multicast-gemport {
              key "name";
              description
                "A multicast G-PON Encapsulation Method (GEM) port.";
              leaf name {
                type bbf-yang:string-ascii64;
                description
                  "The name of the multicast G-PON Encapsulation Method (GEM)
    port.";
              }
    
              leaf gemport-id {
                type uint32;
                description
                  "The ID of the multicast G-PON 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
    G-PON 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 G-PON Encapsulation Method (GEM)
    port is used for broadcast traffic.";
              }
            }  // list multicast-gemport
          }  // container multicast-gemports
    
          container multicast-distribution-set {
            description
              "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 G-PON Encapsulation Method (GEM)
    port.";
              }
    
              choice multicast-vlans {
                description
                  "Multicast VLAN list or all. All means all multicast
    VLANs are carried on the same G-PON 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 G-PON
    Encapsulation Method (GEM) port.";
                  leaf all-multicast-vlans {
                    type empty;
                    description
                      "All multicast VLANs.";
                  }
                }  // case all-multicast-vlans
              }  // choice multicast-vlans
            }  // list multicast-set
          }  // container multicast-distribution-set
        }  // 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
              "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
      }  // module bbf-xpon
    

© 2023 YumaWorks, Inc. All rights reserved.