A YANG Data Model for Microwave Radio Link
Internet-Draft draft-ybam-rfc8561bis-01
Scott Mansfield
Ericsson
scott.mansfield@ericsson.com
Jonas Ahlberg
Ericsson AB
Lindholmspiren 11
Goteborg
417 56
Sweden
jonas.ahlberg@ericsson.com
Min Ye
Huawei Technologies
No.1899, Xiyuan Avenue
Chengdu
611731
China
amy.yemin@huawei.com
Daniela Spreafico
Nokia - IT
Via Energy Park, 14
Vimercate (MI)
20871
Italy
daniela.spreafico@nokia.com
Danilo Pala
SIAE
danilo.pala@saiemic.com
03 March 2024
Routing
CCAMP Working Group
Internet-Draft
This document defines a YANG data model for control and management of radio link interfaces and their connectivity to packet (typically Ethernet) interfaces in a microwave/millimeter wave node. The data nodes for management of the interface protection functionality is broken out into a separate and generic YANG data model in order to make it available for other interface types as well. This document obsoletes RFC 8561.
About This Document
The latest revision of this draft can be found at https://example.com/LATEST. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-ybam-rfc8561bis/.
Discussion of this document takes place on the CCAMP Working Group mailing list (mailto:WG@example.com), which is archived at https://example.com/WG.
Source for this draft and an issue tracker can be found at https://github.com/USER/REPO.
Introduction
This document defines a YANG data model for management and control of the radio link interface(s) and the relationship to packet (typically Ethernet) and/or Time-Division Multiplexing (TDM) interfaces in a microwave/millimeter wave node. The ETSI EN 302 217 series defines the characteristics and requirements of microwave/millimeter wave equipment and antennas. Specifically, ETSI EN 302 217-2 [EN302217-2] specifies the essential parameters for systems operating from 1.4 GHz to 86 GHz. The data model includes configuration and state data according to the new Network Management Datastore Architecture [RFC8342].
The design of the data model follows the framework for management and control of microwave and millimeter wave interface parameters defined in [RFC8432]. This framework identifies the need and the scope of the YANG data model, use cases, and requirements that the model needs to support. Moreover, it provides a detailed gap analysis to identify the missing parameters and functionalities of the existing and established models to support the specified use cases and requirements, and based on that, it recommends how the gaps should be filled with the development of the new model. According to the conclusion of the gap analysis, the structure of the data model is based on the structure defined in [RFC8561], and it augments [RFC8343] to align with the same structure for management of the packet interfaces. More specifically, the model will include interface layering to manage the capacity provided by a radio link terminal for the associated Ethernet and TDM interfaces, using the principles for interface layering described in [RFC8343] as a basis.
The data nodes for management of the interface protection functionality is broken out into a separate and generic YANG data module in order to make it also available for other interface types.
The designed YANG data model uses established microwave equipment and radio standards, such as ETSI EN 302 217-2; the IETF Radio Link Model [RFC8561]; and the ONF Microwave Model [ONF-model], as the basis for the definition of the detailed leafs/parameters, and it proposes new ones to cover identified gaps, which are analyzed in [RFC8432].
Terminology and Definitions
The following terms are used in this document:
Carrier Termination (CT) is an interface for the capacity provided over the air by a single carrier. It is typically defined by its transmitting and receiving frequencies.
Radio Link Terminal (RLT) is an interface providing packet capacity and/or TDM capacity to the associated Ethernet and/or TDM interfaces in a node and is used for setting up a transport service over a microwave/millimeter wave link.
The following acronyms are used in this document:
ACM Adaptive Coding Modulation
ATPC Automatic Transmitter Power Control
BBE Background Block Error
BER Bit Error Ratio
BPSK Binary Phase-Shift Keying
CM Coding Modulation
CT Carrier Termination
ES Errored Seconds
IF Intermediate Frequency
MIMO Multiple Input Multiple Output
RF Radio Frequency
RLT Radio Link Terminal
QAM Quadrature Amplitude Modulation
QPSK Quadrature Phase-Shift Keying
RTPC Remote Transmit Power Control
SES Severely Errored Seconds
TDM Time-Division Multiplexing
UAS Unavailable Seconds
XPIC Cross Polarization Interference Cancellation
Tree Structure
A simplified graphical representation of the data model is used in Section 1.4 of this document. The meaning of the symbols in these diagrams is defined in [RFC8340].
Prefixes in Data Node Names
In this document, names of data nodes and other data model objects are prefixed using the standard prefix associated with the corresponding YANG imported modules, as shown in Table 1.
Prefixes for imported YANG modules
Prefix | YANG Module | Reference
mrl | ietf-microwave-radio-link | This document
yang | ietf-yang-types | [RFC6991]
ianaift | iana-if-type | [IANA-if-type-module]
if | ietf-interfaces | [RFC8343]
ifprot | ietf-interface-protection | This document
mw-types | ietf-microwave-types | This document
# Microwave Radio Link YANG Data Model
YANG Tree

module: ietf-microwave-radio-link
 +--rw radio-link-protection-groups
 | +--rw protection-group* [name]
 |   +--rw name              string
 |   +--rw protection-architecture-type?  identityref
 |   +--rw members*            if:interface-ref
 |   +--rw operation-type?         enumeration
 |   +--rw working-entity*         if:interface-ref
 |   +--rw revertive-wait-to-restore?   uint16
 |   +--rw hold-off-timer?         uint16
 |   +--ro status?             identityref
 |   +---x manual-switch-working
 |   +---x manual-switch-protection
 |   +---x forced-switch
 |   +---x lockout-of-protection
 |   +---x freeze
 |   +---x exercise
 |   +---x clear
 +--rw xpic-pairs {xpic}?
 | +--rw xpic-pair* [name]
 |   +--rw name    string
 |   +--rw enabled?  boolean
 |   +--rw members*  if:interface-ref
 +--rw mimo-groups {mimo}?
   +--rw mimo-group* [name]
    +--rw name    string
    +--rw enabled?  boolean
    +--rw members*  if:interface-ref

 augment /if:interfaces/if:interface:
  +--rw id?           string
  +--rw (mode-option)
  | x--:(mode)
  | | x--rw mode       identityref
  | +--:(rlt-mode)
  |   +--rw rlt-mode
  |    +--rw num-bonded-carriers    uint32
  |    +--rw num-protecting-carriers  uint32
  +--rw carrier-terminations*  if:interface-ref
  +--rw rlp-groups*
  |    -> /radio-link-protection-groups/protection-group/name
  +--rw xpic-pairs*       -> /xpic-pairs/xpic-pair/name
  |    {xpic}?
  +--rw mimo-groups*      -> /mimo-groups/mimo-group/name
  |    {mimo}?
  +--rw tdm-connections* [tdm-type] {tdm}?
    +--rw tdm-type      identityref
    +--rw tdm-connections  uint16
 augment /if:interfaces/if:interface:
  +--rw carrier-id?           string
  +--rw tx-enabled?           boolean
  +--ro tx-oper-status?         enumeration
  +--rw tx-frequency          uint32
  +--rw (freq-or-distance)
  | +--:(rx-frequency)
  | | +--rw rx-frequency?       uint32
  | +--:(duplex-distance)
  |   +--rw duplex-distance?     int32
  +--ro actual-rx-frequency?      uint32
  +--ro actual-duplex-distance?     uint32
  +--rw channel-separation       uint32
  +--rw polarization?          enumeration
  +--rw (power-mode)
  | +--:(rtpc)
  | | +--rw rtpc
  | |   +--rw maximum-nominal-power  power
  | +--:(atpc)
  |   +--rw atpc
  |    +--rw maximum-nominal-power  power
  |    +--rw atpc-lower-threshold   power
  |    +--rw atpc-upper-threshold   power
  +--ro actual-transmitted-level?    power
  +--ro actual-received-level?     power
  +--rw (coding-modulation-mode)
  | +--:(single)
  | | +--rw single
  | |   +--rw selected-cm  identityref
  | +--:(adaptive)
  |   +--rw adaptive
  |    +--rw selected-min-acm  identityref
  |    +--rw selected-max-acm  identityref
  +--ro actual-tx-cm?          identityref
  +--ro actual-snir?          decimal64
  +--ro actual-xpi?           decimal64 {xpic}?
  +--rw ct-performance-thresholds
  | +--rw received-level-alarm-threshold?   power
  | +--rw transmitted-level-alarm-threshold?  power
  | +--rw ber-alarm-threshold?         enumeration
  +--rw if-loop?            enumeration
  +--rw rf-loop?            enumeration
  +--ro capabilities
  | +--ro min-tx-frequency?     uint32
  | +--ro max-tx-frequency?     uint32
  | +--ro min-rx-frequency?     uint32
  | +--ro max-rx-frequency?     uint32
  | +--ro minimum-power?       power
  | +--ro maximum-available-power?  power
  | +--ro available-min-acm?     identityref
  | +--ro available-max-acm?     identityref
  | +--ro acm-profile-list*
  |   [profile-channel-separation-id profile-coding-modulation-id]
  |   +--ro profile-channel-separation-id  uint32
  |   +--ro profile-coding-modulation-id   identityref
  |   +--ro modulation-scheme?        uint8
  |   +--ro nominal-tx-capacity?       uint32
  |   +--ro support-as-fixed-modulation?   boolean
  |   +--ro max-tx-power?          power
  |   +--ro min-tx-power?          power
  |   +--ro lower-acm-profile-ptr
  |   | +--ro profile-coding-modulation-id-ref?  leafref
  |   | +--ro profile-channel-separation-id-ref?  leafref
  |   +--ro upper-acm-profile-ptr
  |    +--ro profile-coding-modulation-id-ref?  leafref
  |    +--ro profile-channel-separation-id-ref?  leafref
  +--ro error-performance-statistics
  | +--ro bbe?  yang:counter32
  | +--ro es?  yang:counter32
  | +--ro ses?  yang:counter32
  | +--ro uas?  yang:counter32
  +--ro radio-performance-statistics
    +--ro min-rltm?  power
    +--ro max-rltm?  power
    +--ro min-tltm?  power
    +--ro max-tltm?  power

Explanation of the Microwave Data Model
The leafs in the Interface Management Module augmented by RLT and CT are not always applicable.
"/interfaces/interface/enabled" is not applicable for RLT. Enable and disable of an interface is done in the constituent CTs.
The packet-related measurements "in-octets", "in-unicast-pkts", "in-broadcast-pkts", "in-multicast-pkts", "in-discards", "in-errors", "in-unknown-protos", "out-octets", "out-unicast-pkts", "out- broadcast-pkts", "out-multicast-pkts", "out-discards", and "out- errors" are not within the scope of the microwave radio link domain and therefore are not applicable for RLT and CT.
Microwave Radio Link YANG Data Model
This module imports typedefs and modules from [RFC6991], [RFC8343] and [RFC7224], and it references [TR102311], [EN302217-1], [EN301129], and [G.826].

module ietf-microwave-radio-link {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-microwave-radio-link";
  prefix mrl;

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 6991";
  }
  import iana-if-type {
    prefix ianaift;
  }
  import ietf-interfaces {
    prefix if;
    reference
      "RFC 8343";
  }
  import ietf-interface-protection {
    prefix ifprot;
    reference
      "RFC 8561";
  }
  import ietf-microwave-types {
    prefix mw-types;
    reference
      "RFC 8561";
  }

  organization
    "Internet Engineering Task Force (IETF) CCAMP WG";
  contact
    "WG List: <mailto:ccamp@ietf.org>

     Editors:
      Jonas Ahlberg (jonas.ahlberg@ericsson.com)
      Min Ye (amy.yemin@huawei.com)
      Xi Li (Xi.Li@neclab.eu)
      Daniela Spreafico (daniela.spreafico@nokia.com)
      Marko Vaupotic (Marko.Vaupotic@aviatnet.com)";
  description
    "This is a module for the entities in
     a generic microwave system.

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

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

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

  // RFC Ed.: replace XXXX with actual RFC number and remove
  // this note
  // replace the revision date with the module publication date
  // the format is (year-month-day)

  revision 2024-03-03 {
    description
      "pretty printing";
    reference
      "RFC XXX: A YANG Data Model for Microwave Radio Link";
  }
  revision 2023-10-06 {
    description
      "To add the summary of the changes in this revision:

       - more updates related to git Issue #13 and #16.

       - git Issue #13 and #16 and discussion updates for acm-profile

       - Updated with proposal for BCA.";
    reference
      "RFC XXX: A YANG Data Model for Microwave Radio Link";
  }
  revision 2019-06-19 {
    description
      "Initial revision.";
    reference
      "RFC 8561: A YANG Data Model for Microwave Radio Link";
  }

  /*
   * Features
   */

  feature xpic {
    description
      "Indicates that the device supports XPIC.";
    reference
      "ETSI TR 102 311";
  }

  feature mimo {
    description
      "Indicates that the device supports MIMO.";
    reference
      "ETSI TR 102 311";
  }

  feature tdm {
    description
      "Indicates that the device supports TDM.";
  }

  /*
   * Typedefs
   */

  typedef power {
    type decimal64 {
      fraction-digits 1;
    }
    description
      "Type used for the power values in the data nodes
       for configuration or status.";
  }

  grouping acm-profile {
    description
      "acm-profile";
    leaf modulation-scheme {
      type uint8;
      description
        "It is the logarithm base two of the number of points in the
         transmitted constellation.  E.G.:  value would be 2 for
         4QAM, 10 fo 1024QAM, and 12 for 4096QAM.";
    }
    leaf nominal-tx-capacity {
      type uint32;
      description
        "The nominal radio link capacity associated to this
         acm-profile.";
    }
    leaf support-as-fixed-modulation {
      type boolean;
      description
        "True when the profile can be used in single
         coding-modulation-mode.";
    }
    leaf max-tx-power {
      type power;
      description
        "The maximum transmitted power when the carrier termination
         is operating this acm-profile.  Used to configure
         transmitted power.";
    }
    leaf min-tx-power {
      type power;
      description
        "The minimum transmitted power when the carrier termination
         is operating this acm-profile.  Used to configure
         transmitted power.";
    }
  }

  /*
   * Radio Link Terminal (RLT)
   */

  augment "/if:interfaces/if:interface" {
    when "derived-from-or-self(if:type,"
       + "'ianaift:microwaveRadioLinkTerminal')";
    description
      "Addition of data nodes for the radio link terminal to
       the standard Interface data model, for interfaces of
       the type 'microwaveRadioLinkTerminal'.";
    leaf id {
      type string;
      description
        "Descriptive identity of the radio link terminal used by
         far-end RLT to check that it's connected to the correct
         near-end RLT.  Does not need to be configured if this
         check is not used.";
    }
    choice mode-option {
      mandatory true;
      description
        "A description of the mode in which the radio link
         terminal is configured in terms of:
         - number of bonded carrier terminations;
         - number of protecting carrier terminations.";
      leaf mode {
        type identityref {
          base mw-types:rlt-mode;
        }
        mandatory true;
        status deprecated;
        description
          "A description of the mode in which the radio link
           terminal is configured.  The format is X plus Y.
           X represents the number of bonded carrier terminations.
           Y represents the number of protecting carrier
           terminations.

           This attribute has been deprecated: the rlt-mode container
           which provide flexible definitions of number of bonded
           carriers and protecting carriers should be used instead.";
      }
      container rlt-mode {
        description
          "This grouping provides a flexible definition of number
           of bonded carriers and protecting carriers of a radio
           link.";
        uses mw-types:rlt-mode;
      }
    }
    leaf-list carrier-terminations {
      type if:interface-ref;
      must "derived-from-or-self(/if:interfaces/if:interface"
         + "[if:name = current()]"
         + "/if:type, 'ianaift:microwaveCarrierTermination')" {
        description
          "The type of interface must be
           'microwaveCarrierTermination'.";
      }
      min-elements 1;
      description
        "A list of references to carrier terminations
         included in the radio link terminal.";
    }
    leaf-list rlp-groups {
      type leafref {
        path "/mrl:radio-link-protection-groups/"
           + "mrl:protection-group/mrl:name";
      }
      description
        "A list of references to the carrier termination
         groups configured for radio link protection in this
         radio link terminal.";
    }
    leaf-list xpic-pairs {
      if-feature "xpic";
      type leafref {
        path "/mrl:xpic-pairs/mrl:xpic-pair/mrl:name";
      }
      description
        "A list of references to the XPIC pairs used in this
         radio link terminal.  One pair can be used by two
         terminals.";
      reference
        "ETSI TR 102 311";
    }
    leaf-list mimo-groups {
      if-feature "mimo";
      type leafref {
        path "/mrl:mimo-groups/mrl:mimo-group/mrl:name";
      }
      description
        "A reference to the MIMO group used in this
         radio link terminal.  One group can be used by more
         than one terminal.";
      reference
        "ETSI TR 102 311";
    }
    list tdm-connections {
      if-feature "tdm";
      key "tdm-type";
      description
        "A list stating the number of active TDM connections
         of a specified tdm-type that is configured to be
         supported by the RLT.";
      leaf tdm-type {
        type identityref {
          base mw-types:tdm-type;
        }
        description
          "The type of TDM connection, which also indicates
           the supported capacity.";
      }
      leaf tdm-connections {
        type uint16;
        mandatory true;
        description
          "Number of connections of the specified type.";
      }
    }
  }

  /*
   * Carrier Termination
   */

  augment "/if:interfaces/if:interface" {
    when "derived-from-or-self(if:type,"
       + "'ianaift:microwaveCarrierTermination')";
    description
      "Addition of data nodes for carrier termination to
       the standard Interface data model, for interfaces
       of the type 'microwaveCarrierTermination'.";
    leaf carrier-id {
      type string;
      default "A";
      description
        "ID of the carrier (e.g., A, B, C, or D).
         Used in XPIC and MIMO configurations to check that
         the carrier termination is connected to the correct
         far-end carrier termination.  Should be the same
         carrier ID on both sides of the hop.  Left as
         default value when MIMO and XPIC are not in use.";
    }
    leaf tx-enabled {
      type boolean;
      default "false";
      description
        "Disables (false) or enables (true) the transmitter.
         Only applicable when the interface is enabled
         (interface:enabled = true); otherwise, it's always
         disabled.";
    }
    leaf tx-oper-status {
      type enumeration {
        enum off {
          description
            "Transmitter is off.";
        }
        enum on {
          description
            "Transmitter is on.";
        }
        enum standby {
          description
            "Transmitter is in standby.";
        }
      }
      config false;
      description
        "Shows the operative status of the transmitter.";
    }
    leaf tx-frequency {
      type uint32;
      units "kHz";
      mandatory true;
      description
        "Selected transmitter frequency.";
    }
    choice freq-or-distance {
      mandatory true;
      description
        "A choice to configure rx-frequency directly or compute
         it as duplex-distance subtracted from tx-frequency.";
      leaf rx-frequency {
        type uint32;
        units "kHz";
        description
          "Selected receiver frequency.";
      }
      leaf duplex-distance {
        type int32;
        units "kHz";
        description
          "Distance between transmitter and receiver frequencies.";
      }
    }
    leaf actual-rx-frequency {
      type uint32;
      units "kHz";
      config false;
      description
        "Computed receiver frequency.";
    }
    leaf actual-duplex-distance {
      type uint32;
      units "kHz";
      config false;
      description
        "Computed distance between Tx and Rx frequencies.";
    }
    leaf channel-separation {
      type uint32;
      units "kHz";
      mandatory true;
      description
        "The amount of bandwidth allocated to a carrier.  The
         distance between adjacent channels in a radio
         frequency channels arrangement";
      reference
        "ETSI EN 302 217-1";
    }
    leaf polarization {
      type enumeration {
        enum horizontal {
          description
            "Horizontal polarization.";
        }
        enum vertical {
          description
            "Vertical polarization.";
        }
        enum not-specified {
          description
            "Polarization not specified.";
        }
      }
      default "not-specified";
      description
        "Polarization - a textual description for info only.";
    }
    choice power-mode {
      mandatory true;
      description
        "A choice of RTPC or ATPC.";
      container rtpc {
        description
          "Remote Transmit Power Control (RTPC).";
        reference
          "ETSI EN 302 217-1";
        leaf maximum-nominal-power {
          type power {
            range "-99..99";
          }
          units "dBm";
          mandatory true;
          description
            "Selected output power.";
          reference
            "ETSI EN 302 217-1";
        }
      }
      container atpc {
        description
          "Automatic Transmitter Power Control (ATPC).";
        reference
          "ETSI EN 302 217-1";
        leaf maximum-nominal-power {
          type power {
            range "-99..99";
          }
          units "dBm";
          mandatory true;
          description
            "Selected maximum output power.  Minimum output
             power is the same as the system capability,
             minimum-power.";
          reference
            "ETSI EN 302 217-1";
        }
        leaf atpc-lower-threshold {
          type power {
            range "-99..-20";
          }
          units "dBm";
          must 'current() <= ../atpc-upper-threshold';
          mandatory true;
          description
            "The lower threshold for the input power at the
             far end, which is used in the ATPC mode.";
          reference
            "ETSI EN 302 217-1";
        }
        leaf atpc-upper-threshold {
          type power {
            range "-99..-20";
          }
          units "dBm";
          mandatory true;
          description
            "The upper threshold for the input power at the
             far end, which is used in the ATPC mode.";
          reference
            "ETSI EN 302 217-1";
        }
      }
    }
    leaf actual-transmitted-level {
      type power {
        range "-99..99";
      }
      units "dBm";
      config false;
      description
        "Actual transmitted power level (0.1 dBm resolution).";
      reference
        "ETSI EN 301 129";
    }
    leaf actual-received-level {
      type power {
        range "-99..-20";
      }
      units "dBm";
      config false;
      description
        "Actual received power level (0.1 dBm resolution).";
      reference
        "ETSI EN 301 129";
    }
    choice coding-modulation-mode {
      mandatory true;
      description
        "A selection of single or
         adaptive coding/modulation mode.";
      container single {
        description
          "A single modulation order only.";
        reference
          "ETSI EN 302 217-1";
        leaf selected-cm {
          type identityref {
            base mw-types:coding-modulation;
          }
          mandatory true;
          description
            "Selected the single coding/modulation.";
        }
      }
      container adaptive {
        description
          "Adaptive coding/modulation.";
        reference
          "ETSI EN 302 217-1";
        leaf selected-min-acm {
          type identityref {
            base mw-types:coding-modulation;
          }
          mandatory true;
          description
            "Selected minimum coding/modulation.
             Adaptive coding/modulation shall not go
             below this value.";
        }
        leaf selected-max-acm {
          type identityref {
            base mw-types:coding-modulation;
          }
          mandatory true;
          description
            "Selected maximum coding/modulation.
             Adaptive coding/modulation shall not go
             above this value.";
        }
      }
    }
    leaf actual-tx-cm {
      type identityref {
        base mw-types:coding-modulation;
      }
      config false;
      description
        "Actual coding/modulation in transmitting direction.";
    }
    leaf actual-snir {
      type decimal64 {
        fraction-digits 1;
        range "0..99";
      }
      units "dB";
      config false;
      description
        "Actual signal to noise plus the interference ratio
         (0.1 dB resolution).";
    }
    leaf actual-xpi {
      if-feature "xpic";
      type decimal64 {
        fraction-digits 1;
        range "0..99";
      }
      units "dB";
      config false;
      description
        "The actual carrier to cross-polar interference.
         Only valid if XPIC is enabled (0.1 dB resolution).";
      reference
        "ETSI TR 102 311";
    }
    container ct-performance-thresholds {
      description
        "Specification of thresholds for when alarms should
         be sent and cleared for various performance counters.";
      leaf received-level-alarm-threshold {
        type power {
          range "-99..-20";
        }
        units "dBm";
        default "-99";
        description
          "An alarm is sent when the received power level is
           below the specified threshold.";
        reference
          "ETSI EN 301 129";
      }
      leaf transmitted-level-alarm-threshold {
        type power {
          range "-99..99";
        }
        units "dBm";
        default "-99";
        description
          "An alarm is sent when the transmitted power level
           is below the specified threshold.";
        reference
          "ETSI EN 301 129";
      }
      leaf ber-alarm-threshold {
        type enumeration {
          enum 1e-9 {
            description
              "Threshold at 1e-9 (10^-9).";
          }
          enum 1e-8 {
            description
              "Threshold at 1e-8 (10^-8).";
          }
          enum 1e-7 {
            description
              "Threshold at 1e-7 (10^-7).";
          }
          enum 1e-6 {
            description
              "Threshold at 1e-6 (10^-6).";
          }
          enum 1e-5 {
            description
              "Threshold at 1e-5 (10^-5).";
          }
          enum 1e-4 {
            description
              "Threshold at 1e-4 (10^-4).";
          }
          enum 1e-3 {
            description
              "Threshold at 1e-3 (10^-3).";
          }
          enum 1e-2 {
            description
              "Threshold at 1e-2 (10^-2).";
          }
          enum 1e-1 {
            description
              "Threshold at 1e-1 (10^-1).";
          }
        }
        default "1e-6";
        description
          "Specification of at which BER an alarm should
           be raised.";
        reference
          "ETSI EN 302 217-1";
      }
    }
    leaf if-loop {
      type enumeration {
        enum disabled {
          description
            "Disables the IF Loop.";
        }
        enum client {
          description
            "Loops the signal back to the client side.";
        }
        enum radio {
          description
            "Loops the signal back to the radio side.";
        }
      }
      default "disabled";
      description
        "Enable (client/radio) or disable (disabled)
         the IF Loop, which loops the signal back to
         the client side or the radio side.";
    }
    leaf rf-loop {
      type enumeration {
        enum disabled {
          description
            "Disables the RF Loop.";
        }
        enum client {
          description
            "Loops the signal back to the client side.";
        }
        enum radio {
          description
            "Loops the signal back to the radio side.";
        }
      }
      default "disabled";
      description
        "Enable (client/radio) or disable (disabled)
         the RF loop, which loops the signal back to
         the client side or the radio side.";
    }
    container capabilities {
      config false;
      description
        "Capabilities of the installed equipment and
         some selected configurations.";
      leaf min-tx-frequency {
        type uint32;
        units "kHz";
        description
          "Minimum Tx frequency possible to use.";
      }
      leaf max-tx-frequency {
        type uint32;
        units "kHz";
        description
          "Maximum Tx frequency possible to use.";
      }
      leaf min-rx-frequency {
        type uint32;
        units "kHz";
        description
          "Minimum Rx frequency possible to use.";
      }
      leaf max-rx-frequency {
        type uint32;
        units "kHz";
        description
          "Maximum Tx frequency possible to use.";
      }
      leaf minimum-power {
        type power;
        units "dBm";
        description
          "The minimum output power supported.";
        reference
          "ETSI EN 302 217-1";
      }
      leaf maximum-available-power {
        type power;
        units "dBm";
        description
          "The maximum output power supported.";
        reference
          "ETSI EN 302 217-1";
      }
      leaf available-min-acm {
        type identityref {
          base mw-types:coding-modulation;
        }
        description
          "Minimum coding-modulation possible to use.";
      }
      leaf available-max-acm {
        type identityref {
          base mw-types:coding-modulation;
        }
        description
          "Maximum coding-modulation possible to use.";
      }
      list acm-profile-list {
        key "profile-channel-separation-id "
          + "profile-coding-modulation-id";
        description
          "A list of acm-profile.
           Each acm-profile is identified by a channel-separation and
           coding-modulation values as supported by the carrier
           termination and defines the parameter's values of each
           transmission acm profile.
           Basically, the list contains all acm profiles supported by
           the device.  Profiles are organized into profile chains
           for each different channel separation value available. The
           chains are formed by the lower-acm-profile-ptr and
           upper-acm-profile-ptr pointers.  The sequence in the list
           reflects the sequence of profiles that are operated by the
           device according to the fading conditions, from the clear
           sky down to the persistent rain, and vice versa. The
           channel-separation and selected-cm configuration
           parameters (or the selected-min-acm/selected-max-acm
           pair) must address one of the profiles in the list.";
        leaf profile-channel-separation-id {
          type uint32;
          description
            "Uniquely identifies the acm profile (together with
             'profile-coding-modulation-id').  It could be used to
             allow the configuration of the channel-separation
             value.";
        }
        leaf profile-coding-modulation-id {
          type identityref {
            base mw-types:coding-modulation;
          }
          description
            "Uniquely identifies the acm profile (together with
             'profile-channel-separation-id').  It could be used to
             allow the configuration of the selected-cm (single
             mode) or selected-min-acm/selected-max-acm (adaptive
             mode).";
        }
        uses acm-profile;
        container lower-acm-profile-ptr {
          description
            "Together with the upper-acm-profile-ptr parameters it
             creates a chain of acm profiles related to a specific
             channel separation value.  Specifically it references
             the next lower acm-profile, while upper-acm-profile-ptr
             references the next higher profile.  The lowest profile
             in the chain, shall not instantiate this container.  The
             acm-profile-list can contain multiple chains related to
             different channel separation values supported by the
             device.";
          leaf profile-coding-modulation-id-ref {
            type leafref {
              path "../../../acm-profile-list"
                 + "/profile-coding-modulation-id";
            }
            description
              "A reference to an acm-profile to give an order in
               acm-profile-list.  This is the reference to the
               'profile-coding-modulation-id' key of the next lower
               acm-profile in the list respect to the current one.";
          }
          leaf profile-channel-separation-id-ref {
            type leafref {
              path
                "../../.."
              + "/acm-profile-list[profile-coding-modulation-id="
              + "current()/../profile-coding-modulation-id-ref]"
              + "/profile-channel-separation-id";
            }
            description
              "A reference to an acm-profile to give an order in
               acm-profile-list.  This is the reference to the
               'profile-channel-separation-id' key of the next lower
               acm-profile in the list respect to the current one.";
          }
        }
        container upper-acm-profile-ptr {
          description
            "Together with the lower-acm-profile-ptr parameters it
             creates a chain of acm profiles related to a specific
             channel separation value.  Specifically it references
             the next higher acm-profile, while lower-acm-profile-ptr
             references the next lower profile.  The highest profile
             in the chain, shall not instantiate this container.  The
             acm-profile-list can contain multiple chains related to
             different channel separation values supported by the
             device.";
          leaf profile-coding-modulation-id-ref {
            type leafref {
              path "../../../acm-profile-list"
                 + "/profile-coding-modulation-id";
            }
            description
              "A reference to an acm-profile to give an order in
               acm-profile-list.  This is the reference to the
               'profile-coding-modulation-id' key of the next higher
               acm-profile in the list respect to the current one.";
          }
          leaf profile-channel-separation-id-ref {
            type leafref {
              path
                "../../.."
              + "/acm-profile-list[profile-coding-modulation-id="
              + "current()/../profile-coding-modulation-id-ref]"
              + "/profile-channel-separation-id";
            }
            description
              "A reference to an acm-profile to give an order in
               acm-profile-list.  This is the reference to the
               'profile-channel-separation-id' key of the next higher
               acm-profile in the list respect to the current one.";
          }
        }
      }
    }
    container error-performance-statistics {
      config false;
      description
        "ITU-T G.826 error performance statistics relevant for
         a microwave/millimeter wave carrier.";
      leaf bbe {
        type yang:counter32;
        units "number of block errors";
        description
          "Number of Background Block Errors (BBEs).  A BBE is an
           errored block not occurring as part of Severely Errored
           Seconds (SES).  Discontinuities in the value of this
           counter can occur at re-initialization of the management
           system and at other times as indicated by the value of
           'discontinuity-time' in ietf-interfaces.";
        reference
          "ITU-T G.826";
      }
      leaf es {
        type yang:counter32;
        units "seconds";
        description
          "Number of Errored Seconds (ES).  An ES is a one-second
           period with one or more errored blocks or at least one
           defect.  Discontinuities in the value of this counter
           can occur at re-initialization of the management system
           and at other times as indicated by the value of
           'discontinuity-time' in ietf-interfaces.";
        reference
          "ITU-T G.826";
      }
      leaf ses {
        type yang:counter32;
        units "seconds";
        description
          "Number of SES.  SES is a one-second period that contains
           equal or more than 30% errored blocks or at least
           one defect.  SES is a subset of ES.  Discontinuities in
           the value of this counter can occur at re-initialization
           of the management system and at other times as indicated
           by the value of 'discontinuity-time' in ietf-interfaces.";
        reference
          "ITU-T G.826";
      }
      leaf uas {
        type yang:counter32;
        units "seconds";
        description
          "Number of Unavailable Seconds (UAS); that is, the
           total time that the node has been unavailable.
           Discontinuities in the value of this counter can occur
           at re-initialization of the management system and at
           other times as indicated by the value of
           'discontinuity-time' in ietf-interfaces.";
        reference
          "ITU-T G.826";
      }
    }
    container radio-performance-statistics {
      config false;
      description
        "ETSI EN 301 129 radio physical interface statistics relevant
         for a carrier termination.";
      leaf min-rltm {
        type power {
          range "-99..-20";
        }
        units "dBm";
        description
          "Minimum received power level.  Discontinuities in the
           value of this counter can occur at re-initialization
           of the management system and at other times as
           indicated by the value of 'discontinuity-time' in
           ietf-interfaces.";
        reference
          "ETSI EN 301 129";
      }
      leaf max-rltm {
        type power {
          range "-99..-20";
        }
        units "dBm";
        description
          "Maximum received power level.  Discontinuities in the
           value of this counter can occur at re-initialization
           of the management system and at other times as
           indicated by the value of 'discontinuity-time' in
           ietf-interfaces.";
        reference
          "ETSI EN 301 129";
      }
      leaf min-tltm {
        type power {
          range "-99..99";
        }
        units "dBm";
        description
          "Minimum transmitted power level.  Discontinuities
           in the value of this counter can occur at
           re-initialization of the management system and
           at other times as indicated by the value of
           'discontinuity-time' in ietf-interfaces.";
        reference
          "ETSI EN 301 129";
      }
      leaf max-tltm {
        type power {
          range "-99..99";
        }
        units "dBm";
        description
          "Maximum transmitted power level.  Discontinuities
           in the value of this counter can occur at
           re-initialization of the management system and
           at other times as indicated by the value of
           'discontinuity-time' in ietf-interfaces.";
        reference
          "ETSI EN 301 129";
      }
    }
  }

  /*
   * Radio Link Protection Groups
   */

  container radio-link-protection-groups {
    description
      "Configuration of radio link protected groups of
       carrier terminations in a radio link.  More than one
       protected group per radio link terminal is allowed.";
    uses ifprot:protection-groups {
      refine "protection-group/members" {
        must "derived-from-or-self(/if:interfaces/if:interface"
           + "[if:name = current()]"
           + "/if:type, 'ianaift:microwaveCarrierTermination')" {
          description
            "The type of a protection member must be
             'microwaveCarrierTermination'.";
        }
      }
      refine "protection-group/working-entity" {
        must "derived-from-or-self(/if:interfaces/if:interface"
           + "[if:name = current()]"
           + "/if:type, 'ianaift:microwaveCarrierTermination')" {
          description
            "The type of a working-entity must be
             'microwaveCarrierTermination'.";
        }
      }
    }
  }

  /*
   * XPIC & MIMO groups - Configuration data nodes
   */

  container xpic-pairs {
    if-feature "xpic";
    description
      "Configuration of carrier termination pairs
       for operation in XPIC mode.";
    reference
      "ETSI TR 102 311";
    list xpic-pair {
      key "name";
      description
        "List of carrier termination pairs in XPIC mode.";
      leaf name {
        type string;
        description
          "Name used for identification of the XPIC pair.";
      }
      leaf enabled {
        type boolean;
        default "false";
        description
          "Enable(true)/disable(false) XPIC";
      }
      leaf-list members {
        type if:interface-ref;
        must "derived-from-or-self(/if:interfaces/if:interface"
           + "[if:name = current()]"
           + "/if:type, 'ianaift:microwaveCarrierTermination')" {
          description
            "The type of a member must be
             'microwaveCarrierTermination'.";
        }
        min-elements 2;
        max-elements 2;
        description
          "Association to XPIC pairs used in the radio link
           terminal.";
      }
    }
  }
  container mimo-groups {
    if-feature "mimo";
    description
      "Configuration of carrier terminations
       for operation in MIMO mode.";
    reference
      "ETSI TR 102 311";
    list mimo-group {
      key "name";
      description
        "List of carrier terminations in MIMO mode.";
      leaf name {
        type string;
        description
          "Name used for identification of the MIMO group.";
      }
      leaf enabled {
        type boolean;
        default "false";
        description
          "Enable(true)/disable(false) MIMO.";
      }
      leaf-list members {
        type if:interface-ref;
        must "derived-from-or-self(/if:interfaces/if:interface"
           + "[if:name = current()]"
           + "/if:type, 'ianaift:microwaveCarrierTermination')" {
          description
            "The type of a member must be
             'microwaveCarrierTermination'.";
        }
        min-elements 2;
        description
          "Association to a MIMO group if used in the radio
           link terminal.";
      }
    }
  }
}

Interface Protection YANG Data Model
The data nodes for management of the interface protection functionality is broken out from the Microwave Radio Link Module into a separate and generic YANG data model in order to make it also available for other interface types.
This module imports modules from [RFC8343], and it references [G.808.1].

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

  import ietf-interfaces {
    prefix if;
    reference
      "RFC 8343";
  }

  organization
    "Internet Engineering Task Force (IETF) CCAMP WG";
  contact
    "WG List: <mailto:ccamp@ietf.org>

     Editors:
      Jonas Ahlberg (jonas.ahlberg@ericsson.com)
      Min Ye (amy.yemin@huawei.com)
      Xi Li (Xi.Li@neclab.eu)
      Daniela Spreafico (daniela.spreafico@nokia.com)
      Marko Vaupotic (Marko.Vaupotic@aviatnet.com)";
  description
    "This is a module for the entities in
     a generic interface protection mechanism.

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

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

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

  // RFC Ed.: replace XXXX with actual RFC number and remove
  // this note
  // replace the revision date with the module publication date
  // the format is (year-month-day)

  revision 2024-03-03 {
    description
      "Updating reference to RFC XXXX. - pretty printing";
    reference
      "RFC XXX: A YANG Data Model for Microwave Radio Link";
  }
  revision 2020-10-06 {
    description
      "Updating reference to RFC XXXX.";
    reference
      "RFC XXX: A YANG Data Model for Microwave Radio Link";
  }
  revision 2019-06-19 {
    description
      "Initial revision.";
    reference
      "RFC 8561: A YANG Data Model for Microwave Radio Link";
  }

  /*
   * Protection architecture type identities
   */

  identity protection-architecture-type {
    description
      "protection architecture type";
    reference
      "ITU-T G.808.1";
  }

  identity one-plus-one-type {
    base protection-architecture-type;
    description
      "1+1; one interface protects
       another one interface.";
    reference
      "ITU-T G.808.1";
  }

  identity one-to-n-type {
    base protection-architecture-type;
    description
      "1:N; one interface protects
       n other interfaces.";
    reference
      "ITU-T G.808.1";
  }

  /*
   * Protection states identities
   */

  identity protection-states {
    description
      "Identities describing the status of the protection
       in a group of interfaces configured in
       a protection mode.";
  }

  identity unprotected {
    base protection-states;
    description
      "Not protected.";
  }

  identity protected {
    base protection-states;
    description
      "Protected.";
  }

  identity unable-to-protect {
    base protection-states;
    description
      "Unable to protect.";
  }

  /*
   * Protection Groups
   */

  grouping protection-groups {
    description
      "Configuration of protected groups of interfaces
       providing protection for each other.  More than one
       protected group per higher-layer interface is allowed.";
    list protection-group {
      key "name";
      description
        "List of protected groups of interfaces
         in a higher-layer interface.";
      action manual-switch-working {
        description
          "A switch action initiated by an operator command.
           It switches a normal traffic signal to the working
           transport entity.";
        reference
          "ITU-T G.808.1";
      }
      action manual-switch-protection {
        description
          "A switch action initiated by an operator command.
           It switches a normal traffic signal to the protection
           transport entity.";
        reference
          "ITU-T G.808.1";
      }
      action forced-switch {
        description
          "A switch action initiated by an operator command.
           It switches a normal traffic signal to the protection
           transport entity and forces it to remain on that
           entity even when criteria for switching back to
           the original entity are fulfilled.";
        reference
          "ITU-T G.808.1";
      }
      action lockout-of-protection {
        description
          "A switch action temporarily disables access to the
           protection transport entity for all signals.";
        reference
          "ITU-T G.808.1";
      }
      action freeze {
        description
          "A switch action temporarily prevents any switch action
           to be taken and, as such, freezes the current state.
           Until the freeze is cleared, additional near-end external
           commands are rejected, and fault condition changes and
           received Automatic Protection-Switching (APS) messages
           are ignored.";
        reference
          "ITU-T G.808.1";
      }
      action exercise {
        description
          "A switch action to test if the APS communication is
           operating correctly.  It is lower priority than any 'real'
           switch request.";
        reference
          "ITU-T G.808.1";
      }
      action clear {
        description
          "An action clears all switch commands.";
        reference
          "ITU-T G.808.1";
      }
      leaf name {
        type string;
        description
          "Name used for identification of the protection group.";
      }
      leaf protection-architecture-type {
        type identityref {
          base protection-architecture-type;
        }
        default "ifprot:one-plus-one-type";
        description
          "The type of protection architecture used, e.g., one
           interface protecting one or several other interfaces.";
        reference
          "ITU-T G.808.1";
      }
      leaf-list members {
        type if:interface-ref;
        min-elements 2;
        description
          "Association to a group of interfaces configured for
           protection and used by a higher-layer interface.";
      }
      leaf operation-type {
        type enumeration {
          enum non-revertive {
            description
              "In non-revertive operation, the traffic does not
               return to the working interface if the switch requests
               are terminated.";
            reference
              "ITU-T G.808.1";
          }
          enum revertive {
            description
              "In revertive operation, the traffic always
               returns to (or remains on) the working interface
               if the switch requests are terminated.";
            reference
              "ITU-T G.808.1";
          }
        }
        default "non-revertive";
        description
          "The type of protection operation, i.e., revertive
           or non-revertive operation.";
      }
      leaf-list working-entity {
        when "../operation-type = 'revertive'";
        type if:interface-ref;
        min-elements 1;
        description
          "The interfaces that the traffic normally should
           be transported over when there is no need to use the
           protecting interface.";
      }
      leaf revertive-wait-to-restore {
        when "../operation-type = 'revertive'";
        type uint16;
        units "seconds";
        default "0";
        description
          "The time to wait before switching back to the working
           interface if operation-type is revertive.";
        reference
          "ITU-T G.808.1";
      }
      leaf hold-off-timer {
        type uint16;
        units "milliseconds";
        default "0";
        description
          "Time interval after the detection of a fault and its
           confirmation as a condition requiring the protection-
           switching procedure.";
        reference
          "ITU-T G.808.1";
      }
      leaf status {
        type identityref {
          base protection-states;
        }
        config false;
        description
          "Status of the protection in a group of interfaces
           configured in a protection mode.";
        reference
          "ITU-T G.808.1";
      }
    }
  }
}

Microwave Types YANG Data Model
This module defines a collection of common data types using the YANG data modeling language. These common types are designed to be imported by other modules defined in the microwave area.

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

  organization
    "Internet Engineering Task Force (IETF) CCAMP WG";
  contact
    "WG List: <mailto:ccamp@ietf.org>

     Editors:
      Jonas Ahlberg (jonas.ahlberg@ericsson.com)
      Min Ye (amy.yemin@huawei.com)
      Xi Li (Xi.Li@neclab.eu)
      Daniela Spreafico (daniela.spreafico@nokia.com)
      Marko Vaupotic (Marko.Vaupotic@aviatnet.com)";
  description
    "This module contains a collection of YANG data types
     considered generally useful for microwave interfaces.

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

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

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

  // RFC Ed.: replace XXXX with actual RFC number and remove
  // this note
  // replace the revision date with the module publication date
  // the format is (year-month-day)

  revision 2024-03-03 {
    description
      "pretty printing";
    reference
      "RFC XXX: A YANG Data Model for Microwave Radio Link";
  }
  revision 2023-10-06 {
    description
      "To add the summary of the changes in this revision:

       - Changed name for 8PSK.

       - Updated for 8PSK

       - Updated with proposal for BCA.";
    reference
      "RFC XXX: A YANG Data Model for Microwave Radio Link";
  }
  revision 2019-06-19 {
    description
      "Initial revision.";
    reference
      "RFC 8561: A YANG Data Model for Microwave Radio Link";
  }

  /*
   * Radio-link-terminal mode identities
   */

  identity rlt-mode {
    status deprecated;
    description
      "A description of the mode in which the radio link
       terminal is configured.  The format is X plus Y.
       X represents the number of bonded carrier terminations.
       Y represents the number of protecting carrier
       terminations.";
  }

  identity one-plus-zero {
    base rlt-mode;
    status deprecated;
    description
      "1 carrier termination only.";
  }

  identity one-plus-one {
    base rlt-mode;
    status deprecated;
    description
      "1 carrier termination
       and 1 protecting carrier termination.";
  }

  identity two-plus-zero {
    base rlt-mode;
    status deprecated;
    description
      "2 bonded carrier terminations.";
  }

  /*
   * Coding and modulation identities
   */

  identity coding-modulation {
    description
      "The coding and modulation schemes.";
  }

  identity half-bpsk {
    base coding-modulation;
    description
      "Half BPSK coding and modulation scheme.";
  }

  identity half-bpsk-strong {
    base half-bpsk;
    description
      "Half BPSK strong coding and modulation scheme.";
  }

  identity half-bpsk-light {
    base half-bpsk;
    description
      "Half BPSK light coding and modulation scheme.";
  }

  identity bpsk {
    base coding-modulation;
    description
      "BPSK coding and modulation scheme.";
  }

  identity bpsk-strong {
    base bpsk;
    description
      "BPSK strong coding and modulation scheme.";
  }

  identity bpsk-light {
    base bpsk;
    description
      "BPSK light coding and modulation scheme.";
  }

  identity qpsk {
    base coding-modulation;
    description
      "QPSK coding and modulation scheme.";
  }

  identity psk-8 {
    base coding-modulation;
    description
      "8PSK coding and modulation scheme.";
  }

  identity qam-4 {
    base coding-modulation;
    description
      "4 QAM coding and modulation scheme.";
  }

  identity qam-4-strong {
    base qam-4;
    description
      "4 QAM strong coding and modulation scheme.";
  }

  identity qam-4-light {
    base qam-4;
    description
      "4 QAM light coding and modulation scheme.";
  }

  identity qam-16 {
    base coding-modulation;
    description
      "16 QAM coding and modulation scheme.";
  }

  identity qam-16-strong {
    base qam-16;
    description
      "16 QAM strong coding and modulation scheme.";
  }

  identity qam-16-light {
    base qam-16;
    description
      "16 QAM light coding and modulation scheme.";
  }

  identity qam-32 {
    base coding-modulation;
    description
      "32 QAM coding and modulation scheme.";
  }

  identity qam-32-strong {
    base qam-32;
    description
      "32 QAM strong coding and modulation scheme.";
  }

  identity qam-32-light {
    base qam-32;
    description
      "32 QAM light coding and modulation scheme.";
  }

  identity qam-64 {
    base coding-modulation;
    description
      "64 QAM coding and modulation scheme.";
  }

  identity qam-64-strong {
    base qam-64;
    description
      "64 QAM strong coding and modulation scheme.";
  }

  identity qam-64-light {
    base qam-64;
    description
      "64 QAM light coding and modulation scheme.";
  }

  identity qam-128 {
    base coding-modulation;
    description
      "128 QAM coding and modulation scheme.";
  }

  identity qam-128-strong {
    base qam-128;
    description
      "128 QAM strong coding and modulation scheme.";
  }

  identity qam-128-light {
    base qam-128;
    description
      "128 QAM light coding and modulation scheme.";
  }

  identity qam-256 {
    base coding-modulation;
    description
      "256 QAM coding and modulation scheme.";
  }

  identity qam-256-strong {
    base qam-256;
    description
      "256 QAM strong coding and modulation scheme.";
  }

  identity qam-256-light {
    base qam-256;
    description
      "256 QAM light coding and modulation scheme.";
  }

  identity qam-512 {
    base coding-modulation;
    description
      "512 QAM coding and modulation scheme.";
  }

  identity qam-512-strong {
    base qam-512;
    description
      "512 QAM strong coding and modulation scheme.";
  }

  identity qam-512-light {
    base qam-512;
    description
      "512 QAM light coding and modulation scheme.";
  }

  identity qam-1024 {
    base coding-modulation;
    description
      "1024 QAM coding and modulation scheme.";
  }

  identity qam-1024-strong {
    base qam-1024;
    description
      "1024 QAM strong coding and modulation scheme.";
  }

  identity qam-1024-light {
    base qam-1024;
    description
      "1024 QAM light coding and modulation scheme.";
  }

  identity qam-2048 {
    base coding-modulation;
    description
      "2048 QAM coding and modulation scheme.";
  }

  identity qam-2048-strong {
    base qam-2048;
    description
      "2048 QAM strong coding and modulation scheme.";
  }

  identity qam-2048-light {
    base qam-2048;
    description
      "2048 QAM light coding and modulation scheme.";
  }

  identity qam-4096 {
    base coding-modulation;
    description
      "4096 QAM coding and modulation scheme.";
  }

  identity qam-4096-strong {
    base qam-4096;
    description
      "4096 QAM strong coding and modulation scheme.";
  }

  identity qam-4096-light {
    base qam-4096;
    description
      "4096 QAM light coding and modulation scheme.";
  }

  /*
   * TDM-type identities
   */

  identity tdm-type {
    description
      "A description of the type of TDM connection,
       also indicating the supported capacity of the
       connection.";
  }

  identity E1 {
    base tdm-type;
    description
      "E1 connection, 2.048 Mbit/s.";
  }

  identity STM-1 {
    base tdm-type;
    description
      "STM-1 connection, 155.52 Mbit/s.";
  }

  /*
   * Radio-link-terminal mode grouping
   */

  grouping rlt-mode {
    description
      "This grouping provides a flexible definition of number
       of bonded carriers and protecting carriers of a radio
       link.";
    leaf num-bonded-carriers {
      type uint32;
      mandatory true;
      description
        "Number of bonded carriers.";
    }
    leaf num-protecting-carriers {
      type uint32;
      mandatory true;
      description
        "Number of protecting carriers.";
    }
  }
}

Security Considerations
The YANG data models specified in this document define schemas for data that is designed to be accessed via network management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS [RFC8446].
The Network Configuration Access Control Model (NACM) [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.
There are a number of data nodes defined in these YANG data models that are writable/creatable/deletable (i.e., config true, which is the default). These data nodes may be considered sensitive or vulnerable in some network environments. Write operations (e.g., edit-config) to these data nodes without proper protection can have a negative effect on network operations. These are the subtrees and data nodes and their sensitivity/vulnerability:
Interfaces of type microwaveRadioLinkTerminal:

      /if:interfaces/if:interface/mode,
      /if:interfaces/if:interface/carrier-terminations,
      /if:interfaces/if:interface/rlp-groups,
      /if:interfaces/if:interface/xpic-pairs,
      /if:interfaces/if:interface/mimo-groups, and
      /if:interfaces/if:interface/tdm-connections:

These data nodes represent the configuration of the radio link terminal, and they need to match the configuration of the radio link terminal on the other side of the radio link. Unauthorized access to these data nodes could interrupt the ability to forward traffic.
Interfaces of type microwaveCarrierTermination:

      /if:interfaces/if:interface/carrier-id,
      /if:interfaces/if:interface/tx-enabled,
      /if:interfaces/if:interface/tx-frequency,
      /if:interfaces/if:interface/rx-frequency,
      /if:interfaces/if:interface/duplex-distance,
      /if:interfaces/if:interface/channel-separation,
      /if:interfaces/if:interface/rtpc/maximum-nominal-power,
      /if:interfaces/if:interface/atpc/maximum-nominal-power,
      /if:interfaces/if:interface/atpc/atpc-lower-threshold,
      /if:interfaces/if:interface/atpc/atpc-upper-threshold,
      /if:interfaces/if:interface/single/selected-cm,
      /if:interfaces/if:interface/adaptive/selected-min-acm,
      /if:interfaces/if:interface/adaptive/selected-max-acm,
      /if:interfaces/if:interface/if-loop, and
      /if:interfaces/if:interface/rf-loop:

These data nodes represent the configuration of the carrier termination, and they need to match the configuration of the carrier termination on the other side of the carrier. Unauthorized access to these data nodes could interrupt the ability to forward traffic.
Radio link protection:

      /radio-link-protection-groups/protection-group:

This data node represents the configuration of the protection of carrier terminations. Unauthorized access to this data node could interrupt the ability to forward traffic or remove the ability to perform a necessary protection switch.
XPIC:

      /xpic-pairs:

This data node represents the XPIC configuration of a pair of carriers. Unauthorized access to this data node could interrupt the ability to forward traffic.
MIMO:

      /mimo-groups:

This data node represents the MIMO configuration of multiple carriers. Unauthorized access to this data node could interrupt the ability to forward traffic.
Some of the RPC operations in this YANG data model may be considered sensitive or vulnerable in some network environments. It is thus important to control access to these operations. These are the operations and their sensitivity/vulnerability:
Radio link protection:

  /radio-link-protection-groups/protection-group/
                                          manual-switch-working,
  /radio-link-protection-groups/protection-group/
                                          manual-switch-protection,
  /radio-link-protection-groups/protection-group/forced-switch,
  /radio-link-protection-groups/protection-group/
                                          lockout-of-protection,
  /radio-link-protection-groups/protection-group/freeze,
  /radio-link-protection-groups/protection-group/exercise, and
  /radio-link-protection-groups/protection-group/clear

These data nodes represent actions that might have an impact on the configuration of the protection of carrier terminations. Unauthorized access to these data nodes could interrupt the ability to forward traffic or remove the ability to perform a necessary protection switch.
The security considerations of [RFC8343] also apply to this document.
IANA Considerations
No IANA Considerations in this update.
References
Normative References
[RFC8561]

A YANG Data Model for Microwave Radio Link
J. Ahlberg
M. Ye
X. Li
D. Spreafico
M. Vaupotic
June 2019
RFC 8561
DOI 10.17487/RFC8561
[RFC8343]

A YANG Data Model for Interface Management
M. Bjorklund
March 2018
RFC 8343
DOI 10.17487/RFC8343
[RFC6991]

Common YANG Data Types
J. Schoenwaelder, Ed.
July 2013
RFC 6991
DOI 10.17487/RFC6991
[RFC7224]

IANA Interface Type YANG Module
M. Bjorklund
May 2014
RFC 7224
DOI 10.17487/RFC7224
[RFC6241]

Network Configuration Protocol (NETCONF)
R. Enns, Ed.
M. Bjorklund, Ed.
J. Schoenwaelder, Ed.
A. Bierman, Ed.
June 2011
RFC 6241
DOI 10.17487/RFC6241
[RFC8040]

RESTCONF Protocol
A. Bierman
M. Bjorklund
K. Watsen
January 2017
RFC 8040
DOI 10.17487/RFC8040
[RFC6242]

Using the NETCONF Protocol over Secure Shell (SSH)
M. Wasserman
June 2011
RFC 6242
DOI 10.17487/RFC6242
[RFC8446]

The Transport Layer Security (TLS) Protocol Version 1.3
E. Rescorla
August 2018
RFC 8446
DOI 10.17487/RFC8446
[RFC8341]

Network Configuration Access Control Model
A. Bierman
M. Bjorklund
March 2018
STD 91
RFC 8341
DOI 10.17487/RFC8341
Informative References
[IANA-if-type-module]

iana-if-type YANG Module
IANA
January 2023
[EN301129]

Transmission and Multiplexing (TM); Digital Radio Relay Systems (DRRS); Synchronous Digital Hierarchy (SDH); System performance monitoring parameters of SDH DRRS
ETSI
May 1999
EN 301 129 V1.1.2
[EN302217-1]

Fixed Radio Systems; Characteristics and requirements for point-to-point equipment and antennas; Part 1: Overview, common characteristics and system- dependent requirements
ETSI
May 2017
EN 302 217-1 V3.1.0
[EN302217-2]

Fixed Radio Systems; Characteristics and requirements for point to-point equipment and antennas; Part 2: Digital systems operating in frequency bands from 1 GHz to 86 GHz; Harmonised Standard covering the essential requirements of article 3.2 of Directive 2014/53/EU
ETSI
May 2017
EN 302 217-2 V3.1.1
[G.808.1]

SERIES G: TRANSMISSION SYSTEMS AND MEDIA, DIGITAL SYSTEMS AND NETWORKS; Digital networks ; General aspects Generic protection switching ; Linear trail and subnetwork protection
ITU-T
May 2014
ITU-T Recommendation G.808.1
[G.826]

SERIES G: TRANSMISSION SYSTEMS AND MEDIA, DIGITAL SYSTEMS AND NETWORKS; Digital networks - Quality and availability targets; End-to-end error performance parameters and objectives for international, constant bit- rate digital paths and connections
ITU-T
December 2002
ITU-T Recommendation G.826
[ONF-model]

Microwave Information Model
ONF
December 2016
TR-532, version 1.0
[TR102311]

Fixed Radio Systems; Point-to-point equipment; Specific aspects of the spatial frequency reuse method
ETSI
November 2015
ETSI TR 102 311 V1.2.1
[RFC8342]

Network Management Datastore Architecture (NMDA)
M. Bjorklund
J. Schoenwaelder
P. Shafer
K. Watsen
R. Wilton
March 2018
RFC 8342
DOI 10.17487/RFC8342
[RFC8432]

A Framework for Management and Control of Microwave and Millimeter Wave Interface Parameters
J. Ahlberg, Ed.
M. Ye, Ed.
X. Li
LM. Contreras
CJ. Bernardos
October 2018
RFC 8432
DOI 10.17487/RFC8432
[RFC8340]

YANG Tree Diagrams
M. Bjorklund
L. Berger, Ed.
March 2018
BCP 215
RFC 8340
DOI 10.17487/RFC8340
Changes from RFC 8561
To be added in a future revision of this draft.
Example: 1+0 and 2+0 Configuration Instances
This section gives simple examples of 1+0 and 2+0 instances using the YANG data model defined in this document. The examples are not intended as a complete module for 1+0 and 2+0 configuration.
1+0 Instance
1+0 Example

                    /--------- Radio Link ---------\
                     Near End              Far End

              +---------------+           +---------------+
              |  Radio Link   |           | Radio Link    |
              |  Terminal A   |           | Terminal B    |
              |               |           |               |
              |               |           |               |
              | +-----------+ |           | +-----------+ |
              | |           | | Carrier A | |           | |
              | |  Carrier  | |<--------->| |  Carrier  | |
              | |Termination| |           | |Termination| |
              | |     1     | |           | |     1     | |
              | +-----------+ |           | +-----------+ |
              |               |           |               |
              |               |           |               |
              +---------------+           +---------------+

        \--- Microwave Node ---/          \--- Microwave Node ---/

Figure 1 shows a 1+0 example. The following instance shows the 1+0 configuration of the Near End node.

{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "RLT-A",
        "description": "Radio Link Terminal A",
        "type": "iana-if-type:microwaveRadioLinkTerminal",
        "ietf-microwave-radio-link:mode":
           "ietf-microwave-types:one-plus-zero",
        "ietf-microwave-radio-link:carrier-terminations": [
          "RLT-A:CT-1"
        ]
      },
      {
        "name": "RLT-A:CT-1",
        "description": "Carrier Termination 1",
        "type": "iana-if-type:microwaveCarrierTermination",
        "ietf-microwave-radio-link:carrier-id": "A",
        "ietf-microwave-radio-link:tx-enabled": true,
        "ietf-microwave-radio-link:tx-frequency": 10728000,
        "ietf-microwave-radio-link:duplex-distance": 644000,
        "ietf-microwave-radio-link:channel-separation": 28000,
        "ietf-microwave-radio-link:polarization": "not-specified",
        "ietf-microwave-radio-link:rtpc": {
          "maximum-nominal-power": "20.0"
        },
        "ietf-microwave-radio-link:single": {
          "selected-cm": "ietf-microwave-types:qam-512"
        }
      }
    ]
  }
}

2+0 Instance
Figure 2 shows a 2+0 example.
2+0 Example

                    /--------- Radio Link ---------\
                     Near End              Far End

              +---------------+           +---------------+
              | Radio Link    |           | Radio Link    |
              | Terminal A    |           | Terminal B    |
              |               |           |               |
              |               |           |               |
              | +-----------+ |           | +-----------+ |
              | |           | | Carrier A | |           | |
              | |  Carrier  | |<--------->| |  Carrier  | |
              | |Termination| |           | |Termination| |
              | |     1     | |           | |     1     | |
              | +-----------+ |           | +-----------+ |
              |               |           |               |
              | +-----------+ |           | +-----------+ |
              | |           | | Carrier B | |           | |
              | |  Carrier  | |<--------->| |  Carrier  | |
              | |Termination| |           | |Termination| |
              | |     2     | |           | |     2     | |
              | +-----------+ |           | +-----------+ |
              |               |           |               |
              +---------------+           +---------------+

        \--- Microwave Node ---/          \--- Microwave Node ---/

The following instance shows the 2+0 configuration of the Near End node.

{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "RLT-A",
        "description": "Radio Link Terminal A",
        "type": "iana-if-type:microwaveRadioLinkTerminal",
        "ietf-microwave-radio-link:mode":
          "ietf-microwave-types:two-plus-zero",
        "ietf-microwave-radio-link:carrier-terminations": [
          "RLT-A:CT-1",
          "RLT-A:CT-2"
        ]
      },
      {
        "name": "RLT-A:CT-1",
        "description": "Carrier Termination 1",
        "type": "iana-if-type:microwaveCarrierTermination",
        "ietf-microwave-radio-link:carrier-id": "A",
        "ietf-microwave-radio-link:tx-enabled": true,
        "ietf-microwave-radio-link:tx-frequency": 10728000,
        "ietf-microwave-radio-link:duplex-distance": 644000,
        "ietf-microwave-radio-link:channel-separation": 28000,
        "ietf-microwave-radio-link:polarization": "not-specified",
        "ietf-microwave-radio-link:rtpc": {
          "maximum-nominal-power": "20.0"
        },
        "ietf-microwave-radio-link:single": {
          "selected-cm": "ietf-microwave-types:qam-512"
        }
      },
      {
        "name": "RLT-A:CT-2",
        "description": "Carrier Termination 2",
        "type": "iana-if-type:microwaveCarrierTermination",
        "ietf-microwave-radio-link:carrier-id": "B",
        "ietf-microwave-radio-link:tx-enabled": true,
        "ietf-microwave-radio-link:tx-frequency": 10618000,
        "ietf-microwave-radio-link:duplex-distance": 644000,
        "ietf-microwave-radio-link:channel-separation": 28000,
        "ietf-microwave-radio-link:polarization": "not-specified",
        "ietf-microwave-radio-link:rtpc": {
          "maximum-nominal-power": "20.0"
        },
        "ietf-microwave-radio-link:single": {
          "selected-cm": "ietf-microwave-types:qam-512"
        }
      }
    ]
  }
}

2+0 XPIC Instance
The following instance shows the XPIC configuration of the Near End node.

{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "RLT-A",
        "description": "Radio Link Terminal A",
        "type": "iana-if-type:microwaveRadioLinkTerminal",
        "ietf-microwave-radio-link:mode":
           "ietf-microwave-types:two-plus-zero",
        "ietf-microwave-radio-link:carrier-terminations": [
          "RLT-A:CT-1",
          "RLT-A:CT-2"
        ],
        "ietf-microwave-radio-link:xpic-pairs": [
          "xpic-pair1"
        ]
      },
      {
        "name": "RLT-A:CT-1",
        "description": "Carrier Termination 1",
        "type": "iana-if-type:microwaveCarrierTermination",
        "ietf-microwave-radio-link:carrier-id": "A",
        "ietf-microwave-radio-link:tx-enabled": true,
        "ietf-microwave-radio-link:tx-frequency": 10728000,
        "ietf-microwave-radio-link:duplex-distance": 644000,
        "ietf-microwave-radio-link:channel-separation": 28000,
        "ietf-microwave-radio-link:polarization": "not-specified",
        "ietf-microwave-radio-link:rtpc": {
          "maximum-nominal-power": "20.0"
        },
        "ietf-microwave-radio-link:single": {
          "selected-cm": "ietf-microwave-types:qam-512"
        }
      },
      {
        "name": "RLT-A:CT-2",
        "description": "Carrier Termination 2",
        "type": "iana-if-type:microwaveCarrierTermination",
        "ietf-microwave-radio-link:carrier-id": "B",
        "ietf-microwave-radio-link:tx-enabled": true,
        "ietf-microwave-radio-link:tx-frequency": 10618000,
        "ietf-microwave-radio-link:duplex-distance": 644000,
        "ietf-microwave-radio-link:channel-separation": 28000,
        "ietf-microwave-radio-link:polarization": "not-specified",
        "ietf-microwave-radio-link:rtpc": {
          "maximum-nominal-power": "20.0"
        },
        "ietf-microwave-radio-link:single": {
          "selected-cm": "ietf-microwave-types:qam-512"
        }
      }
    ]
  },
  "ietf-microwave-radio-link:xpic-pairs": {
    "xpic-pair": [
      {
        "name": "xpic-pair1",
        "members": [
          "RLT-A:CT-1",
          "RLT-A:CT-2"
        ]
      }
    ]
  }
}

~~~~
Acknowledgments
This document was prepared using the kramdown RFC tool written and maintained by Carsten Bormann. Thanks to Martin Thomson for the github integration of the kramdown RFC tool and for the aasvg tool which is used for the ascii to SVG conversion.
Contributors
Italo Busi
Huawei Technologies
italo.busi@huawei.com
Koji Kawada
NEC Corporation
1753, Shimonumabe Nakahara-ku
Kawasaki, Kanagawa
211-8666
Japan
k-kawada@ah.jp.nec.com
Carlos J. Bernardos
Universidad Carlos III de Madrid
Av. Universidad, 30
Leganes, Madrid
28911
Spain
cjbc@it.uc3m.es
Marko Vaupotic
Aviat Networks
Motnica 9
Trzin-Ljubljana
1236
Slovenia
Marko.Vaupotic@Aviatnet.com
Xi Li
NEC Laboratories Europe
Kurfursten-Anlage 36
Heidelberg
69115
Germany
Xi.Li@neclab.eu