Commit c0ac9e78 authored by chada's avatar chada
Browse files

Delete etsi-qkd-network-inventory.yang

parent b69d0a5f
Loading
Loading
Loading
Loading

etsi-qkd-network-inventory.yang

deleted100644 → 0
+0 −412
Original line number Diff line number Diff line
/* Copyright 2021 ETSI
Licensed under the BSD-3 Clause (https://forge.etsi.org/legal-matters) */

module etsi-qkd-network-inventory {

  yang-version "1.1";

  namespace "urn:etsi:qkd:yang:etsi-qkd-network-inventory"; //TBD. Replaced when assigned.

  prefix "nw-inv";
  
  import etsi-qkd-node-types { prefix "etsi-qkdn-types"; }
  import etsi-qkd-network-topology { prefix "nw-top";}

  organization "ETSI ISG QKD";

  contact
    "https://www.etsi.org/committee/qkd
    djcha@sk.com";

  description
    "This module contains the groupings and containers composing the software-defined QKD network 
    inventory information models specified in ETSI GS QKD 018 V0.0.6";

  revision 2021-06-04 {
    description "Initial revision";    
  }
  
  identity QKDN-STATUS-TYPES {
    description "Base identity used to identify the SD-QKD node status.";
  }
  identity OPERATING {
    base QKDN-STATUS-TYPES;
    description "The QKD node is up.";
  }
  identity IDLE {
    base QKDN-STATUS-TYPES;
    description "The QKD node is down.";
  }
  identity DORMANT {
    base QKDN-STATUS-TYPES;
    description "The QKD node has failed.";
  }
  identity FAILURE {
    base QKDN-STATUS-TYPES;
    description "The QKD node has failed.";
  }
  typedef qkdn-status-types {
    type identityref {
      base QKDN-STATUS-TYPES;
    }
    description "This type represents the status of the SD-QKD node.";
  }
 
  identity PATH-RESTORATION-TYPE {
    description "Base identity from which path restoration types are derived.";
  }
  identity AUTOMATIC {
    base PATH-RESTORATION-TYPE;
    description "The path restoration starts automatically.";
  }
  identity MANUAL {
    base PATH-RESTORATION-TYPE;
    description "The path restoration starts manually.";
  }
  typedef path-restoration-type {
    type identityref {
      base PATH-RESTORATION-TYPE;
    }
    description "This type represents path restoration types of QKD virtual link.";
  }

  grouping qkdn_id_ref {
    leaf qkdn_id_ref {
      type leafref {
        path "/nw-top:qkd_network/nw-top:sdqkd_nodes/nw-top:qkdn/nw-top:qkdn_id";
      }
      description "Used to reference a SD-QKD node.";
    }
  }

  grouping qkdi_id_ref {
    leaf qkdi_id_ref {
      type leafref {
        path "/nw-top:qkd_network/nw-top:sdqkd_nodes/nw-top:qkdn[nw-top:qkdn_id=current()/../qkdn_id_ref]"+
          "/nw-top:qkd_interfaces/nw-top:qkdi/nw-top:qkdi_id";
      }
      description "Used to reference an interface of the SD-QKD node. Interfaces are identified to the SD-QKD node that contains them.";
    }
  }

  grouping phys_link_id_ref {
    leaf phys_link_id_ref {
      type leafref {
        path "/nw-top:qkd_network/nw-top:qkd_links/nw-top:qkd_phys_links/nw-top:phys_link/nw-top:phys_link_id";
      }
    }
    description "Used to reference a QKD physical link.";
  }

  grouping virt_link_id_ref {
    leaf virt_link_id_ref {
      type leafref {
        path "/nw-top:qkd_network/nw-top:qkd_links/nw-top:qkd_virt_links/nw-top:virt_link/nw-top:virt_link_id";
      }
    }
    description "Used to reference a QKD virtual link.";    
  }
  
  grouping qkdn_capabilities_supported {      
    leaf link_stats_support {
      type boolean;
      default true;
      description "If true, the SD-QKD node exposes link-related statistics (key generation rate, 
        link consumption, status).";
    }

    leaf application_stats_support {
      type boolean;
      default true;
      description "If true, the SD-QKD node exposes application related statistics 
        (application consumption, alerts).";
    }

    leaf key_relay_mode_enable {
      type boolean;
      default true;
      description "If true, the SD-QKD node supports key relay (multi-hop) mode services.";
    }
  }

  grouping key_rate_perf_common {
    leaf expected_consumption {
        type uint32;
        units "bps";
        description "Sum of the bandwidths (bps) of the application's that are consuming keys from the key association link.";
    }
    
    leaf skr {
        type uint32;
        units "bps";
        description "Total secret key rate (bps) generation of the key association link.";
    }

    leaf eskr {
        type uint32;
        units "bps";
        description "Effective secret key rate (bps) generated by the key association
           link. i.e. the available rate to the applications after internal consumption.";
    }
  }

  grouping phys_link_perf {
    list phys_link_perf {
      config false;
      key "type";

      leaf type {
        type identityref {
            base etsi-qkdn-types:PHYS-PERF-TYPES;
        }
        description "Type of the physical performance value to be exposed to the controller.";
      }

      leaf value {
        type uint32;
        description "Numerical value for the performance parameter.";
      }
    }
  }

  grouping qkdn_details {
    leaf qkdn_version {
      type string;
      description "Hardware or software version of the SD-QKD node.";
    }

    container qkdn_capabilities {
      uses qkdn_capabilities_supported;
      description "Capabilities of the SD-QKD node.";
    }

    leaf location_id {
      type string;
      description "The location of the secure area that contains the SD-QKD node to be specified.";
    }
  }

  grouping qkdn_status {
    leaf qkdn_status {
      config false;
      type qkdn-status-types;
      description "Status of the SD-QKD node.";
    }
  }

  grouping att_point {
    container att_point {
      description "Interface attachment point to an optical switch.";

      leaf device {
        type string;
        description "Unique ID of the optical switch (or passive component) to which the interface is connected.";
      }

      leaf port {
        type uint32;
        description "Port ID of the device to which the interface is connected.";
      }
    }
  }

  grouping qkdi_details {
    leaf role_support {
        type identityref {
          base etsi-qkdn-types:QKD-ROLE-TYPES;
        }
        description "Support for transmit, receive or both.";
    }

    leaf model {
      type string;
      description "Device model (vendor/device).";
    }

    leaf type {
      type identityref {
        base etsi-qkdn-types:QKD-TECHNOLOGY-TYPES;
      }
      description "Interface type (QKD technology).";
    }

    uses att_point;
  }

  grouping qkdi_status {
    leaf qkdi_status {
      config false;
      type identityref {
        base etsi-qkdn-types:IFACE-STATUS-TYPES;
      }
      description "Status of a QKD interface of the SD-QKD node.";
    }
  }

  grouping phys_link_details {
    leaf enable {
      type boolean;
      default true;
      description "This value allows the key generation process for a given link to be enabled or disabled. 
        If true, the key generation process is enabled.";
    }    
    
    leaf wavelength {
        type etsi-qkdn-types:wavelength; 
        units "nm";   
        description "Wavelength (nm) to be used for the quantum channel. 
          If the interface is not tunable, this parameter can by bypassed.";
    }

    container performance {
      uses key_rate_perf_common;
      uses phys_link_perf {
        when "/nw-top:qkd_network/nw-top:qkd_links/nw-top:qkd_phys_links/nw-top:phys_link/nw-top:link_type = 'PHYS'";
        description "Performance of the specific physical link.";
      }
    }
  }

  grouping phys_link_status {
    leaf phys_link_status {
      config false;
      type identityref {
        base etsi-qkdn-types:LINK-STATUS-TYPES;
      }
      description "Status of a QKD physical link.";
    }
  }

  grouping virt_link_details {
    leaf bandwidth {
      type uint32;
      units "bps";
      description "Required bandwidth (bps) for the key association link. Used to reserve bandwidth 
        from the physical link to support the virtual link as an internal application.";
    }

    container performance {
      uses key_rate_perf_common; 
    }
    
    container path_restoration {
      description "Container for path restoration conditions when any failure happens in the end-to-end key relay path.";

      leaf type {
        type path-restoration-type;
        description "path restoration type of QKD virtual link.";
      }

      leaf hold_off_time {
        type uint32;
        units "milli-seconds";
        description "Time to wait before attempting restoration.";
      }
    }
  }

  grouping virt_link_status {
    leaf virt_link_status {
      config false;
      type identityref {
        base etsi-qkdn-types:LINK-STATUS-TYPES;
      }
      description "Status of a QKD virtual link.";
    }
  }


  augment "/nw-top:qkd_network/nw-top:sdqkd_nodes/nw-top:qkdn" {
    description "The inventory of a SD-QKD node.";

    uses qkdn_details;
    uses qkdn_status;    
  }

  augment "/nw-top:qkd_network/nw-top:sdqkd_nodes/nw-top:qkdn/nw-top:qkd_interfaces/nw-top:qkdi" {
    description "The inventory of an interface (QKD module) of the SD-QKD node.";
    
    uses qkdi_details;
    uses qkdi_status;
  }

  augment "/nw-top:qkd_network/nw-top:qkd_links/nw-top:qkd_phys_links/nw-top:phys_link" {
    description "The inventory of a QKD physical link.";

    uses phys_link_details;
    uses phys_link_status;    
  }

  augment "/nw-top:qkd_network/nw-top:qkd_links/nw-top:qkd_virt_links/nw-top:virt_link" {
    description "The inventory of a QKD virtual link.";

    uses virt_link_details;
    uses virt_link_status;

  }
  
  rpc get-QKD-node-details-and-status {
    description "Get the information of the SD-QKD node in QKD network.";

    input {
      uses qkdn_id_ref;
    }

    output {
      uses qkdn_details;
      uses qkdn_status;
    }
  }

  rpc get-QKD-interface-details {
    description "Get the information of the SD-QKD node interface in QKD network.";

    input {
      uses qkdn_id_ref;
      uses qkdi_id_ref;
    }

    output {
      uses qkdi_details;
      uses qkdi_status;
    }
  }

  rpc get-QKD-phys-link-details {
    description "Get the information of the QKD physical link in QKD network ";

    input {
      uses phys_link_id_ref;
    }

    output {
      uses phys_link_details;
      uses phys_link_status;
    }
  }

  rpc get-QKD-virt-link-details {
    description "Get the information of the QKD virtual link in QKD network ";

    input {
      uses virt_link_id_ref;
    }

    output {
      uses virt_link_details;
      uses virt_link_status;
    }
  }

  notification qkdn_alarm {
    container qkdn {
      uses qkdn_id_ref;
      leaf qkdn_status {
        type qkdn-status-types;
      }
      leaf reason {
        type string;
      }      
    }
  }
}
 No newline at end of file