bbf-ancp

This module contains a collection of YANG definitions for supporting the Broadband Forum requirements on the Access Node Control...

  • Version: 2023-12-15

    bbf-ancp@2023-12-15


    
      module bbf-ancp {
    
        yang-version 1.1;
    
        namespace "urn:bbf:yang:bbf-ancp";
    
        prefix bbf-ancp;
    
        import bbf-yang-types {
          prefix bbf-yang;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import ietf-yang-types {
          prefix yang;
        }
    
        organization
          "Broadband Forum <https://www.broadband-forum.org>
    Common YANG Work Area";
    
        contact
          "Comments or questions about this Broadband Forum YANG module
    should be directed to <mailto:help@broadband-forum.org>.
    
    Editor:      Nick Hancock, Adtran
    
    Editor:      Ludwig Pauwels, Nokia
    
    PS Leader:   Joey Boyd, Adtran
    
    WA Director: Joey Boyd, Adtran
    
    WA Director: Sven Ooghe, Nokia";
    
        description
          "This module contains a collection of YANG definitions for
    supporting the Broadband Forum requirements on the Access Node
    Control Protocol (ANCP) as defined in RFC 6320. As such, this
    module is specific to access network equipment (e.g.,
    BBF-specified Access Nodes and FTTdp DPUs).
    
    This data model is designed for the Network Management Datastore
    Architecture defined in RFC 8342.
    
    Copyright (c) 2017-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-383a7; see
    the TR itself for full legal notices.";
    
        reference
          "RFC 6320";
    
    
        revision "2023-12-15" {
          description
            "Amendment 7.
    * Approval Date:    2023-12-15.
    * Publication Date: 2023-12-15.";
          reference
            "TR-383a7: Common YANG Modules
            	  <https://www.broadband-forum.org/technical/download/
            		   TR-383_Amendment-7.pdf>";
    
        }
    
        revision "2023-03-07" {
          description
            "Amendment 6.
    * Approval Date:    2023-03-07.
    * Publication Date: 2023-03-07.";
          reference
            "TR-383a6: Common YANG Modules
            	  <https://www.broadband-forum.org/technical/download/
            		   TR-383_Amendment-6.pdf>";
    
        }
    
        revision "2022-03-01" {
          description
            "Amendment 5.
    * Approval Date:    2022-03-01.
    * Publication Date: 2022-03-01.";
          reference
            "TR-383a5: Common YANG Modules
            	  <https://www.broadband-forum.org/technical/download/
            		   TR-383_Amendment-5.pdf>";
    
        }
    
        revision "2020-10-13" {
          description
            "Amendment 3.
    * Approval Date:    2020-10-13.
    * Publication Date: 2020-10-13.";
          reference
            "TR-383a3: Common YANG Modules
            	  <https://www.broadband-forum.org/technical/download/
            		   TR-383_Amendment-3.pdf>";
    
        }
    
    
        feature protocol-version {
          description
            "Indicates support for the configuration of the protocol
    version of ANCP sessions.";
        }
    
        feature partition-id-negotiation {
          description
            "Indicates that the device supports negotiation of the
    Partition ID to be used to be used by ANCP sessions to
    associate ANCP messages with the partition of the Access Node
    managed by a session.";
        }
    
        feature session-statistics {
          description
            "Indicates support for statistics for ANCP sessions.";
        }
    
        feature tcp-port {
          description
            "Indicates support for the configuration of the TCP port for
    ANCP.";
        }
    
        feature port-message-dampening {
          description
            "Indicates support for the configuration of the dampening
    mechanism to limit the rate at which Port Up and Port Down
    messages are sent to the Network Access Server (NAS).";
        }
    
        feature session-administrative-state {
          description
            "Indicates support for administratively enabling or disabling
    an ANCP session.";
        }
    
        feature session-reset {
          description
            "Indicates support for resetting a session.";
        }
    
        feature nas-connection-state {
          description
            "Indicates support for the state of the connection to the
    Network Access Server (NAS).";
        }
    
        identity capabilities {
          description
            "Base identity for defining ANCP capabilities.";
        }
    
        identity topology-discovery {
          base capabilities;
          description
            "The Access Topology Discovery function is intended to
    allow the NAS to gain knowledge about the topology of the
    access network, the various lines being used, and their
    respective rates without having to rely on an integration
    with an OSS system.";
          reference
            "RFC 6320 section 6";
    
        }
    
        identity access-line-technology {
          description
            "Base identity for defining the technology of access lines
    managed by a partition.";
          reference
            "RFC 6320 section 6.5";
    
        }
    
        identity access-line-attribute {
          description
            "Base identity for defining access line attributes defined in
    the ANCP.
    
    This is an abstract identity and MUST NOT be used for access
    line attributes.";
          reference
            "RFC 6320 section 6.5";
    
        }
    
        identity technology-independent-access-line-attribute {
          base access-line-attribute;
          description
            "Base identity for defining technology-independent access line
    attributes defined in the ANCP.
    
    This is an abstract identity and MUST NOT be used for access
    line attributes.";
          reference
            "RFC 6320 section 6.5";
    
        }
    
        identity access-loop-encapsulation {
          base technology-independent-access-line-attribute;
          description
            "The data link protocol and, optionally, the encapsulation
    overhead on the access loop.";
          reference
            "RFC 6320 section 6.5.18";
    
        }
    
        identity adjacency-malfunction-cause {
          description
            "Base identity for defining causes that resulted in the
    malfunction of the Adjacency Protocol.
    
    This identity is abstract and SHOULD NOT generally be used for
    malfunction causes. If used to define a cause that was not
    known at design time, it MUST be qualified with an associated
    message string. This practice, however, should be generally
    avoided to ensure all possible causes are known at design
    time.";
        }
    
        identity message-type-not-supported {
          base adjacency-malfunction-cause;
          description
            "The ANCP agent has received the result code value 0x51 in a
    response message which indicates that message type of the
    original request was not supported.";
        }
    
        identity capability-negotiation-failed {
          base adjacency-malfunction-cause;
          description
            "The ANCP session was unable to successfully negotiate a common
    set of capabilities with its Network Access Server (NAS).";
        }
    
        typedef protocol-version {
          type enumeration {
            enum "rfc6320" {
              value 0;
              description
                "RFC 6320 defines ANCP Version 1 which is identified by
    version = 50 in protocol messages as defined the joint
    GSMP / ANCP Version Registry.";
              reference
                "RFC 6320 section 10.8";
    
            }
          }
          description
            "Defines the supported protocol versions.";
        }
    
        typedef partition-id {
          type uint8 {
            range "1..255";
          }
          description
            "Defines the Partition ID.";
          reference
            "RFC 6320 section 3.5.1";
    
        }
    
        typedef entity-name {
          type union {
            type enumeration {
              enum "unknown" {
                value 0;
                description
                  "The name of the sending/receiving entity is unknown.";
              }
            }
            type yang:hex-string {
              length "17";
            }
          }
          description
            "An entity name used to identify the sender/receiver of an
    ANCP message.";
          reference
            "RFC 6320 section 3.5.1";
    
        }
    
        typedef link-instance {
          type union {
            type uint32 {
              range "1..16777216";
            }
            type enumeration {
              enum "undefined" {
                value 0;
                description
                  "The instance number is undefined.";
              }
            }
          }
          description
            "The instance number used to identify the link within the
    Access Node or NAS.";
          reference
            "RFC 6320 section 3.5.1";
    
        }
    
        grouping peer-operational-parameters {
          description
            "Defines the operational state only parameters applicable to
    the adjacency protocol.";
          leaf name {
            type entity-name;
            config false;
            mandatory true;
            description
              "The Name used by the entity (Access Node or NAS) as
    advertised in the adjacency message.
    
    This leaf has value 'unknown', if adjacency state is not
    ESTAB (established).";
          }
    
          leaf instance {
            type link-instance;
            config false;
            mandatory true;
            description
              "The value for Instance used by the entity (Access Node or
    NAS) to identify the link to the peer.
    
    This leaf has value 'undefined', if adjacency state is not
    ESTAB (established).";
          }
        }  // grouping peer-operational-parameters
    
        grouping ancp-schema {
          description
            "Defines the schema tree for ANCP.";
          container partitions {
            must
              "(bbf-ancp:partition/bbf-ancp:partition-id='global' and count(bbf-ancp:partition)=1) or not(bbf-ancp:partition/bbf-ancp:partition-id='global')" {
              error-message
                "The device may only be configured for a single global partition or fixed partitions, but not both.";
              description
                "Prevent both the global partition and fixed partitions
    from being configured at the same time.";
            }
            description
              "Management of ANCP partitions on the device.";
            list partition {
              key "partition-id";
              description "A partition.";
              leaf partition-id {
                type union {
                  type enumeration {
                    enum "global" {
                      value 0;
                      description
                        "The partition represents a device that is
    configured to operate without fixed partitions.";
                    }
                  }
                  type partition-id;
                }
                description
                  "Uniquely identifies the partition.
    
    If the device is to use fixed partitions, this leaf must
    be set to a value between 1 and 255; this value will be
    used to associate ANCP messages with this specific
    partition.
    
    If the device is not to use fixed partitions, i.e., is
    not partitioned, this leaf must be set to 'global', in
    which case no other partition may be configured.
    
    If the single partition with 'partition-id' set to
    'global' is configured, the PType and Partition ID in
    the Adjacency Message must be being set to 0 (no
    partition) and 0 respectively.";
                reference
                  "RFC 6320 section 3.5.2.4.2";
    
              }
    
              leaf technology {
                type identityref {
                  base access-line-technology;
                }
                mandatory true;
                description
                  "The access line technology supported by the partition.";
              }
    
              container sessions {
                description
                  "Management of ANCP sessions.";
                list session {
                  key "name";
                  description "An ANCP session.";
                  leaf name {
                    type string;
                    description
                      "An arbitrary name for the session.";
                  }
    
                  leaf enable {
                    if-feature session-administrative-state;
                    type boolean;
                    default "true";
                    description
                      "The desired administrative state of the session.";
                  }
    
                  leaf protocol-version {
                    if-feature bbf-ancp:protocol-version;
                    type protocol-version;
                    default "rfc6320";
                    description
                      "The ANCP protocol version to be used by the
    session.";
                    reference
                      "RFC 6320 section 3.5.1";
    
                  }
    
                  leaf-list capability {
                    type identityref {
                      base capabilities;
                    }
                    min-elements 1;
                    description
                      "The common set of ANCP capabilities supported by this
    session. At least one capability must be configured.
    
    The final negotiated value may be different to the
    intended value and is to be found by operational
    data.";
                    reference
                      "RFC 6320 section 3.5.1 (Capability Fields).";
    
                  }
    
                  leaf oper-state {
                    type enumeration {
                      enum "down" {
                        value 0;
                        description
                          "The operational state of the session is down and
    it is non-operational.";
                      }
                      enum "up" {
                        value 1;
                        description
                          "The operational state of the session is up and
    it is operational.";
                      }
                    }
                    config false;
                    mandatory true;
                    description
                      "The operational state of the session. A session is
    deemed to be 'up', only when adjacency is
    established ('adjacency-state' is set to 'estab').";
                  }
    
                  container access-node {
                    description
                      "Configuration relevant to the Access Node side of the
    ANCP session.";
                    container name-source {
                      presence
                        "Enables selection of the source of the name to use
    to generate the Sender Name to be used for this
    ANCP session.
    
    If this container is not present, the system will
    use the a system MAC address to generate the
    Sender Name.";
                      description
                        "Configuration of the source to use to generate the
    Sender Name to be used for this ANCP session.";
                      choice which-name-source {
                        mandatory true;
                        description
                          "Configures which source to use to generate the
    Sender Name to use to identify the session at
    the Access Node to the NAS.";
                        reference
                          "RFC 6320 section 3.5.1 (Sender Name).";
    
                        case use-mac-address {
                          description
                            "Configures the session to use a system MAC
    address to generate the Sender Name to be
    inserted into ANCP messages to identify the
    Access Node.";
                          leaf use-mac-address {
                            type empty;
                            description
                              "Configures the session to use a system MAC
    address to generate the Sender Name to be
    inserted into ANCP messages to identify the
    Access Node.";
                          }
                        }  // case use-mac-address
                      }  // choice which-name-source
                    }  // container name-source
    
                    uses peer-operational-parameters;
    
                    leaf address {
                      type inet:ip-address;
                      config false;
                      mandatory true;
                      description
                        "The IP address of the Access Node.";
                    }
    
                    leaf port {
                      type inet:port-number;
                      config false;
                      mandatory true;
                      description
                        "The IP port of the Access Node.";
                    }
                  }  // container access-node
    
                  container network-access-server {
                    description
                      "Configuration relevant to the Network Access Server
    (NAS) side of the ANCP session.";
                    uses peer-operational-parameters;
    
                    choice transport {
                      mandatory true;
                      description
                        "Selects the transport for ANCP.";
                      case tcp {
                        description
                          "Configures TCP as the transport for ANCP.";
                        reference
                          "RFC 6320 section 3.2";
    
                        container tcp {
                          description
                            "Contains TCP-specific configuration for ANCP.";
                          leaf address {
                            type inet:host;
                            mandatory true;
                            description
                              "The IP address or the DNS domain name of the
    NAS.";
                          }
    
                          leaf port {
                            if-feature tcp-port;
                            type inet:port-number;
                            default "6068";
                            description
                              "The IP port of the NAS.";
                            reference
                              "RFC 6320 section 3.2";
    
                          }
                        }  // container tcp
                      }  // case tcp
                    }  // choice transport
    
                    leaf connection-state {
                      if-feature nas-connection-state;
                      type enumeration {
                        enum "opening" {
                          value 0;
                          description
                            "The session is attempting to establish a
    connection to the NAS.";
                        }
                        enum "established" {
                          value 1;
                          description
                            "A connection to the NAS is established.";
                        }
                        enum "closed" {
                          value 2;
                          description
                            "The session to the NAS has been closed by the
    ANCP Agent on the Access Node, for example, due
    to a malfunction with the Adjacency Protocol.";
                        }
                        enum "malfunction" {
                          value 3;
                          description
                            "A connection to the configured NAS could not
    be established.
    
    A corresponding alarm will be raised, if
    supported.
    
    A device may continue to periodically attempt
    to establish the transport connection, but
    this is implementation-specific. If the
    transport connection can be established the
    alarm will be cleared by the instrumentation.
    
    To re-attempt to connect to a configured NAS
    manually either
     - modify the configuration
     - reset the session using the action 'reset',
       if supported
     - administratively disable and then enable
       the session.";
                        }
                        enum "disabled" {
                          value 4;
                          description
                            "The session has been administratively
    disabled.";
                        }
                      }
                      config false;
                      mandatory true;
                      description
                        "The operational state of the transport connection
    to the Network Access Server (NAS).";
                    }
                  }  // container network-access-server
    
                  container adjacency-protocol {
                    description
                      "Configuration to manage the adjacency protocol.";
                    leaf liveness-timer {
                      type uint8;
                      units "0.1 seconds";
                      default "250";
                      description
                        "The nominal time between periodic adjacency
    protocol messages.
    
    The final negotiated value, which will be constant
    for the duration of the ANCP session, may be
    different to the intended value and is to be found
    by querying state data.";
                      reference
                        "RFC 6320 section 3.5.1 (Timer).";
    
                    }
    
                    leaf adjacency-state {
                      type enumeration {
                        enum "malfunction" {
                          value 0;
                          description
                            "Adjacency could not be established, because of
    a malfunctioning of the adjacency protocol.
    
    This will result in the connection to the NAS
    being dropped and a corresponding alarm raised,
    if supported.
    
    Further details of the cause of the malfunction
    will be reported through the data nodes in the
    container 'malfunction'.
    
    To re-attempt to setup adjacency
    either
     - modify the configuration
     - reset the session using the action 'reset',
       if supported
     - administratively disable and then enable
       the session.";
                          reference
                            "RFC 5851 section 4.6.4 R-48.";
    
                        }
                        enum
                          "synchronization-lost" {
                          value 1;
                          description
                            "Indicates that the Access Node and NAS are no
    longer synchronized. This may occur, if
    - no valid ANCP messages are received in any
      period of time in excess of three times the
      value of the negotiated liveness timer;
    or
    - a mismatch in adjacency state is detected.
    A corresponding alarm will be raised, if
    supported.";
                          reference
                            "RFC 6320 section 3.5.2.7";
    
                        }
                        enum "estab" {
                          value 2;
                          description
                            "The state ESTAB (established) indicates that
    the Access Node has established a session.";
                          reference
                            "RFC 6320 section 3.5.2.2.7";
    
                        }
                        enum "synrcvd" {
                          value 3;
                          description
                            "The state SYNRCVD (synchronization received)
    indicates that the Access Node has received a
    connection request and sent an
    acknowledgment.";
                          reference
                            "RFC 6320 section 3.5.2.2.1";
    
                        }
                        enum "synsent" {
                          value 4;
                          description
                            "The state SYNSENT (synchronization sent)
    indicates that the Access Node is waiting for
    an acknowledgment from the NAS after having
    sent a connection request.";
                          reference
                            "RFC 6320 section 3.5.2.2.1";
    
                        }
                        enum "pending" {
                          value 5;
                          description
                            "The setup of an adjacency is pending the
    establishment of the transport layer.";
                        }
                        enum "disabled" {
                          value 6;
                          description
                            "The session and thus the execution of the
    Adjacency Protocol has been administratively
    disabled.";
                        }
                      }
                      config false;
                      mandatory true;
                      description
                        "The operational state of the adjacency protocol.";
                      reference
                        "RFC 6320 section 3.5.2.2";
    
                    }
    
                    leaf partition-id {
                      when
                        "count(/bbf-ancp:ancp/bbf-ancp:partitions/bbf-ancp:partition)>0 and not(boolean(/bbf-ancp:ancp/bbf-ancp:partitions/bbf-ancp:partition[bbf-ancp:partition-id='global']))" {
                        description
                          "The use of a Partition ID is only applicable, if
    the Access Node has been partitioned.";
                      }
                      if-feature bbf-ancp:partition-id-negotiation;
                      type partition-id;
                      config false;
                      mandatory true;
                      description
                        "The Partition ID used by this session to associate
    ANCP messages with the partition of the Access Node
    managed by this session.
    
    The final negotiated value, which will be constant
    for the duration of the ANCP session, may be
    different to the Partition ID configured for the
    partition.";
                      reference
                        "RFC 6320 section 3.5.2.4.2";
    
                    }
    
                    container malfunction {
                      when
                        "../adjacency-state='malfunction'" {
                        description
                          "Only applicable when there is a malfunction in
    the Adjacency Protocol.";
                      }
                      config false;
                      description
                        "Provides additional information regarding a
    malfunction encountered with the Adjacency
    Protocol.";
                      leaf cause {
                        type identityref {
                          base adjacency-malfunction-cause;
                        }
                        mandatory true;
                        description
                          "The cause of the malfunction of the Adjacency
    Protocol.";
                      }
    
                      leaf message {
                        type string;
                        description
                          "A string suitable for human display that
    describes the condition causing the
    malfunction.";
                      }
                    }  // container malfunction
                  }  // container adjacency-protocol
    
                  container access-line-identification {
                    description
                      "Configure Access Line Identification for ANCP.";
                    leaf-list access-line-identification {
                      type enumeration {
                        enum
                          "access-loop-circuit-id" {
                          value 0;
                          description
                            "Add the Access Loop Circuit ID TLV in the ANCP
    message, i.e., the TLV with type value 0x0001.
    
    The value inserted in the TLV is the value
    defined by the data node '/bbf-subprof:
    subscriber-profiles/bbf-subprof:subscriber-
    profile/bbf-subprof:circuit-id' that is
    associated with the interface, if present. If
    not present, the value inserted will be
    generated according to the syntax defined in
    the leaf 'access-loop-circuit-id'. If this
    leaf is not present or empty, then an empty
    TLV will be inserted, i.e., a TLV with
    Length = 0.";
                          reference
                            "RFC 6320 section 5.1.2.1,
                            TR-101i2 Section 3.9.3.";
    
                        }
                        enum
                          "access-loop-remote-id" {
                          value 1;
                          description
                            "Add the Access Loop Remote ID TLV in the ANCP
    message, i.e., the TLV with type value 0x0002.
    
    The value inserted in the TLV is the value
    defined by the data node '/bbf-subprof:
    subscriber-profiles/bbf-subprof:subscriber-
    profile/bbf-subprof:remote-id' that is
    associated with the interface, if present. If
    not present, then an empty TLV will be
    inserted, i.e., a TLV with Length = 0.";
                          reference
                            "RFC 6320 section 5.1.2.2,
                            TR-101i2 Section 3.9.3.";
    
                        }
                        enum
                          "access-aggregation-circuit-id-binary" {
                          value 2;
                          description
                            "Add the Access Aggregation Circuit ID Binary
    TLV in the ANCP message, i.e., the TLV with
    type value 0x0006.
    
    This TLV identifies or partially identifies a
    specific access line by means of its logical
    circuit identifier on the NAS side of the AN.
    It is defined to contain VLAN ID(s).
    
    The value of the TLV contains the VLAN IDs of
    the VLAN tags to be used in data frames sent
    on a network interface. However, this is not
    necessarily the same for all data frames
    coming from a single access line. The
    selection of which values to use for the
    VLAN IDs is defined by the value configured
    via the interface.";
                          reference
                            "RFC 6320 section 5.1.2.3,
                            TR-101i2 Section 3.9.3.";
    
                        }
                        enum
                          "access-aggregation-circuit-id-ascii" {
                          value 3;
                          description
                            "Add the Access Aggregation Circuit ID ASCII
    TLV in the ANCP message, i.e., the TLV with
    type value 0x0003.
    
    The value is identified in the same way as the
    value for the Access Aggregation Circuit ID
    Binary TLV.
    
    The difference for the TLV value is the
    produced format, i.e., for the Access
    Aggregation Circuit Id ASCII TLV the format is
    in ASCII and based on a syntax configured in
    the leaf 'access-aggregation-circuit-id-ascii'.
    If this leaf is empty, then an empty TLV will
    be inserted, i.e., a TLV with Length = 0.";
                          reference
                            "RFC 6320 section 5.1.2.4,
                            TR-101i2 Section 3.9.3.";
    
                        }
                      }
                      min-elements 1;
                      description
                        "Identifies how to generate / interpret the Access
    Line Identification TLVs used in ANCP messages.";
                    }
    
                    leaf access-loop-circuit-id {
                      type bbf-yang:string-ascii63-or-empty;
                      default "";
                      description
                        "ASCII string identifying the access loop logical
    port on the user side of the AN. It may contain
    any characters and variables, e.g.,
    'Access_Node_ID eth slot/port'.";
                      reference
                        "RFC 6320 section 5.1.2.1 and
                        TR-101 Section 3.9.3.";
    
                    }
    
                    leaf access-aggregation-circuit-id-ascii {
                      type bbf-yang:string-ascii63-or-empty;
                      default "";
                      description
                        "ASCII string identifying or partially identifying
    a specific access line by means of its logical
    circuit identifier on the NAS side of the Access
    Node. As per RFC 6320 it shall contain VLAN IDs
    similar as the Access Aggregation Circuit ID
    Binary TLV, but in a format as specified by
    TR-101.
    
    It may contain any characters and variables, e.g.,
    'S-VID:C-VID'.";
                      reference
                        "RFC 6320 section 5.1.2.4";
    
                    }
    
                    leaf start-numbering-from-zero {
                      type boolean;
                      default "false";
                      description
                        "In case the leaf 'access-loop-circuit-id' or
    'access-aggregation-circuit-id-ascii' indicates the
    TLV shall contain a slot, a port or another
    variable for which the numbering is defined by the
    AN, then this leaf determines if the numbering
    MUST start from 0 or 1.";
                      reference
                        "TR-178 - R118";
    
                    }
    
                    leaf use-leading-zeroes {
                      type boolean;
                      default "false";
                      description
                        "In case the leaf 'access-loop-circuit-id' or the
    'access-aggregation-circuit-id-ascii' contain
    variables for which the value can be multiple
    digits, then this leaf determines if the
    slot/port/VLAN ID numbering MUST use leading 0's
    or not, i.e., generate a fixed-length string or a
    string with only meaningful digits.
    
    Note that the number of digits used to form the
    fixed-length string is device specific.
    A device may use the number of digits as specified
    in TR-101 Table 2 / TR-156 Table 1 or a device may
    determine the number of digits by the maximum
    value for the Slot or a Port identification
    applicable to the device, i.e., if the maximum
    value is less than or equal to 9, one digit may
    be used; if the maximum value is less than or
    equal to 99, two digits may be used, etc.";
                      reference
                        "TR-178 - R119 and TR-101i2 - R153;
                        TR-101i2 - Table 2 Circuit ID Syntax;
                        TR-156 - Table 1 Port Identification String
                        Elements.";
    
                    }
                  }  // container access-line-identification
    
                  container topology-discovery {
                    when
                      "../capability='bbf-ancp:topology-discovery'" {
                      description
                        "Only applicable, if the topology discovery
    capability has been selected.";
                    }
                    description
                      "Configuration to manage line state reporting for
    topology discovery.";
                    container port-up {
                      description
                        "Configuration to manage line state reporting for
    the Port Up message.";
                    }  // container port-up
    
                    container port-down {
                      description
                        "Configuration to manage line state reporting for
    the Port Down message.";
                    }  // container port-down
                  }  // container topology-discovery
    
                  container statistics {
                    if-feature bbf-ancp:session-statistics;
                    config false;
                    description
                      "ANCP statistics for this session.";
                    leaf last-established-timestamp {
                      type yang:date-and-time;
                      mandatory true;
                      description
                        "The date and time the session last entered the
    established state.";
                    }
    
                    leaf last-discontinuity-timestamp {
                      type yang:date-and-time;
                      mandatory true;
                      description
                        "The date and time the session last suffered a
    discontinuity.";
                    }
    
                    leaf in-valid-messages {
                      type yang:zero-based-counter32;
                      units "messages";
                      mandatory true;
                      description
                        "The number of messages that have been received and
    processed in this session by the AN.
    
    All ANCP messages pertaining to this session shall
    be counted, also including adjacency protocol
    messages and failure response messages.";
                    }
    
                    leaf in-discarded-messages {
                      type yang:zero-based-counter32;
                      units "messages";
                      mandatory true;
                      description
                        "The number of messages that in this session have
    been received and discarded for whatever reason by
    the AN.
    
    All ANCP messages pertaining to this session shall
    be counted, also including adjacency protocol
    messages and failure response messages.";
                    }
    
                    leaf out-messages {
                      type yang:zero-based-counter32;
                      units "messages";
                      mandatory true;
                      description
                        "The number of messages that have been sent in this
    session by the AN.
    
    All ANCP messages pertaining to this session shall
    be counted, also including adjacency protocol
    messages and failure response messages.";
                    }
    
                    leaf in-syn {
                      type yang:zero-based-counter32;
                      units "messages";
                      mandatory true;
                      description
                        "The number of adjacency SYN messages that in this
    session have been received by the Access Node.";
                    }
    
                    leaf in-synack {
                      type yang:zero-based-counter32;
                      units "messages";
                      mandatory true;
                      description
                        "The number of adjacency SYNACK messages that in
    this session have been received by the Access
    Node.";
                    }
    
                    leaf in-ack {
                      type yang:zero-based-counter32;
                      units "messages";
                      mandatory true;
                      description
                        "The number of adjacency ACK messages that in this
    session have been received by the Access Node.";
                    }
    
                    leaf in-rstack {
                      type yang:zero-based-counter32;
                      units "messages";
                      mandatory true;
                      description
                        "The number of adjacency RSTACK messages that in
    this session have been received by the Access
    Node.";
                    }
    
                    leaf out-syn {
                      type yang:zero-based-counter32;
                      units "messages";
                      mandatory true;
                      description
                        "The number of adjacency SYN messages that in this
    session have been transmitted by the Access Node.";
                    }
    
                    leaf out-synack {
                      type yang:zero-based-counter32;
                      units "messages";
                      mandatory true;
                      description
                        "The number of adjacency SYNACK messages that in
    this session have been transmitted by the Access
    Node.";
                    }
    
                    leaf out-rstack {
                      type yang:zero-based-counter32;
                      units "messages";
                      mandatory true;
                      description
                        "The number of adjacency RSTACK messages that in
    this session have been transmitted by the Access
    Node.";
                    }
    
                    leaf out-ack {
                      type yang:zero-based-counter32;
                      units "messages";
                      mandatory true;
                      description
                        "The number of adjacency ACK messages that in this
    session have been transmitted by the Access Node.";
                    }
                  }  // container statistics
    
                  container reset {
                    when
                      "not(boolean(../enable)) or (../enable='true')" {
                      description
                        "If the administrative state of a session is
    supported, the session must be currently
    administratively enabled to reset the session.";
                    }
                    if-feature session-reset;
                    description
                      "Provides containment for the action 'reset'.";
                    action reset {
                      description
                        "Reset the session.
    
    Resetting the session will close the connection to
    the NAS, if established, and clear any alarms. The
    session will then restart and attempt to setup
    adjacency to the NAS.";
                    }  // rpc reset
                  }  // container reset
                }  // list session
              }  // container sessions
    
              container port-message-control {
                description
                  "Configuration to control the generation of Port Up and
    Port Down messages.";
                choice which-dampening-mechanism {
                  if-feature bbf-ancp:port-message-dampening;
                  default
                    "port-up-port-down-withholding-interval";
                  description
                    "Selects the dampening mechanism for the sending of
    Port Up and Port Down event messages.";
                  case port-up-port-down-withholding-interval {
                    description
                      "Configures withholding interval for Port Up and Port
    Down messages.";
                    leaf port-up-port-down-withholding-interval {
                      type union {
                        type enumeration {
                          enum "disabled" {
                            value 0;
                            description
                              "The withholding interval is disabled and
    all line state changes will be reported
    to the NAS.";
                          }
                        }
                        type uint16 {
                          range "1..max";
                        }
                      }
                      units "0.1 seconds";
                      default "disabled";
                      description
                        "Configures the dampening mechanism controlling the
    rate at which Port Up and Port Down messages are
    sent to the NAS, applying individually to each
    access line. Specifically, it defines an interval
    following the sending of a Port Up or Port Down
    message for a given access line, during which no
    further Port Up or Port Down message is to be sent
    to the NAS for that given access line. If, at the
    end of the withholding interval, there has been a
    change in line state of the given line to that
    when the last Port Up or Port Down message was
    sent for that line, the new line state of that
    line is reported to the NAS (with the withholding
    interval for that line applying again).";
                      reference
                        "RFC 6320 section 6.4.1";
    
                    }
                  }  // case port-up-port-down-withholding-interval
                }  // choice which-dampening-mechanism
              }  // container port-message-control
            }  // list partition
          }  // container partitions
        }  // grouping ancp-schema
    
        container ancp {
          description
            "Management of the Access Node Control Protocol (ANCP).";
          uses ancp-schema;
        }  // container ancp
      }  // module bbf-ancp
    

© 2023 YumaWorks, Inc. All rights reserved.