Commit 6533977f authored by Rubén David Brito Méndez's avatar Rubén David Brito Méndez Committed by Guillermo Vélez Fernández
Browse files

Prepare GS QKD 015 model for multi-domain and heterogeneous key-material support

parent 0f46816c
Loading
Loading
Loading
Loading
+70 −1
Original line number Diff line number Diff line
@@ -225,7 +225,76 @@ module etsi-qkd-node-types {
    description "This type represents the status of a key association QKD link, both physical and virtual.";
  }

  ///
  identity QKDN_NETWORK_SERVICES {
  description
    "Base identity used to identify the network services that a QKD Node can
     expose to the SDN Controller.";
  }

  typedef qkdn-network-services {
    type identityref {
      base QKDN_NETWORK_SERVICES;
    }
    description
      "Type used to identify a network service exposed by a QKD Node to the SDN
      Controller.";
  }

  identity IPSEC {
    base QKDN_NETWORK_SERVICES;
    description
      "Indicates that the node is able to manage the IPsec protocol as an
      internal application.";
  }

  identity OPOT {
    base QKDN_NETWORK_SERVICES;
    description
      "Indicates that the node supports Ordered Proof of Transit (OPoT) security
      chaining capabilities.";
  }

  identity BGP {
    base QKDN_NETWORK_SERVICES;
    description
      "Indicates that the node supports the Border Gateway Protocol (BGP),
      particularly in multidomain scenarios.";
  }

  identity KEY_SOURCE_MATERIAL {
    description
      "Base identity used to identify the source or nature of the keying
      material associated with a key delivery link.";
  }

  typedef key-source-material {
    type identityref {
      base KEY_SOURCE_MATERIAL;
    }
    description
      "Type used to identify the source or nature of the keying material
      associated with a key delivery link.";
  }

  identity QKD {
    base KEY_SOURCE_MATERIAL;
    description
      "Indicates that the keying material is obtained from QKD sources.";
  }

  identity PQC {
    base KEY_SOURCE_MATERIAL;
    description
      "Indicates that the keying material is obtained through post-quantum
      cryptographic mechanisms.";
  }

  identity RAW {
    base KEY_SOURCE_MATERIAL;
    description
      "Indicates that raw keying material is made available for protocols or
      applications requiring non-final key material.";
  }
  
  identity IFACE-STATUS-TYPES {
  	description "Interface Status.";
+186 −39
Original line number Diff line number Diff line
@@ -25,6 +25,14 @@ module etsi-qkd-sdn-node {
    the software-defined QKD node information models
    specified in ETSI GS QKD 015 V2.1.1";

  
  revision "2026-05-04" {
    description
      "Refinement of the YANG model to make it compatible with the ETSI ISG QKD 018. Minor fixes.";
    reference
      "ETSI GS QKD 015 V2.1.1 (2026-05)";
  }
  
  revision "2022-01-30" {
    description
      "Refinement of the YANG model to make it compatible with the ETSI ISG QKD 018. Minor fixes.";
@@ -59,15 +67,41 @@ module etsi-qkd-sdn-node {
    }
  }

  grouping qkdn_location_id {
    description "Grouping of qkdn_location_id leaf.";
  grouping qkdn_domain {
    description "Grouping of qkdn_domain leaf.";
    
    leaf qkdn_location_id {
    leaf qkdn_domain {
      type string;
      default "";
      description "This value specifies the domain associated with the SD-QKD Node.";
    }
  }
  

  grouping qkdn_location {
    description "Grouping of qkdn_location_id leaf.";
    
    container qkdn_location_id {
      description
        "This value enables the location of the secure
        area that contains the SD-QKD node to be specified.";
    
      leaf qkdn_address {
        type string;
        default "";
        description
          "This value specifies the address through which the SDN Controller can reach
           the SD-QKD Node, including, for example, the IP address and port.";
      }

      leaf qkdn_communication_protocol {
        type string;
        default "";
        description
          "This value specifies the communication protocol used by the SDN Controller
          to interact with the SD-QKD Node, for example NETCONF, RESTCONF, or any other
          supported management protocol.";
      }

    }
  }

@@ -107,6 +141,14 @@ module etsi-qkd-sdn-node {
        default true;
        description "If true, this node supports key relay (multi-hop) mode services.";
      }

      leaf-list qkdn_network_services {
        type etsi-qkdn-types:qkdn-network-services;
        description "This value specifies the set of additional capabilities advertised by the
                    SD-QKD Node. Such capabilities may include IPsec tunnelling, OPoT security
                    chain functions, or border-node functionality for ISP interconnection 
                    or if it has a QRNG.";
      }
    }
  }
  
@@ -180,13 +222,54 @@ module etsi-qkd-sdn-node {
    uses app_priority;
  }
  
  grouping local_qkdn_id {
    description "Grouping of local_qkdn_id leaf.";

    leaf local_qkdn_id {
  grouping local_qkdn {
    description
      "Grouping of information identifying the local SD-QKD Node and its
      associated QKDN domain.";

    container local_qkdn {
      description
        "Information identifying the local SD-QKD Node that provides QKD keys
        to the local application.";

      leaf id {
        type yang:uuid;
        description
          "Unique identifier of the local SD-QKD Node that provides QKD keys
          to the local application.";
      }

      leaf domain_id {
        type yang:uuid;
      description "Unique ID of the local SD-QKD node which
        is providing QKD keys to the local application.";
        description
          "Identifier of the QKDN domain to which the local SD-QKD Node belongs.";
      }
    }
  }

  grouping remote_qkdn {
    description
      "Grouping of information identifying the remote SD-QKD Node and its
      associated QKDN domain.";

    container remote_qkdn {
      description
        "Information identifying the remote SD-QKD Node that provides QKD keys
        to the remote application.";

      leaf id {
        type yang:uuid;
        description
          "Unique identifier of the remote SD-QKD Node that provides QKD keys
          to the remote application.";
      }

      leaf domain_id {
        type yang:uuid;
        description
          "Identifier of the QKDN domain to which the remote SD-QKD Node belongs.";
      }
    }
  }

@@ -233,6 +316,15 @@ module etsi-qkd-sdn-node {
          config false;
          description "Consumed secret key amount (in bits) for a statistics collection period of time.";
        }

        leaf key_consumption_rate {
          type uint32;
          units "bytes/second";
          config false;
          description
            "Rate at which the application consumes keying material, expressed in
            bytes per second.";
        }
      }
    }
  }
@@ -329,15 +421,16 @@ module etsi-qkd-sdn-node {
            providing QKD keys to these applications.";
        }

        uses local_qkdn_id;

        leaf remote_qkdn_id {
        leaf-list kms_qkdl_id {
          type yang:uuid;
          description "Unique ID of the remote SD-QKD node which 
            is providing QKD keys to the remote application. 
            While unknown, the local SD-QKD will not be able to 
            provide keys to the local application.";
          description
            "List of unique identifiers of the QKD links from which the application
            is configured to retrieve keying material through the KMS.";
        }

        uses local_qkdn;
        uses remote_qkdn;

      }
    }
  }
@@ -361,15 +454,6 @@ module etsi-qkd-sdn-node {
    }
  }
  
  grouping qkdi_type {
    description "Grouping of qkdi_type leaf.";
    
    leaf qkdi_type {
      type etsi-qkdn-types:qkd-technology-types;
      description "Interface type (QKD  technology).";
    }
  }
  
  grouping qkdi_att_point {
    description "Grouping of the interface attachment points to an optical switch.";
    
@@ -400,6 +484,22 @@ module etsi-qkd-sdn-node {
    }
  }

  grouping qkdi_att_Rx {
    description "Grouping structure created to store a list of Receivers devices.";
    leaf-list qkdi_att_RXs {
      type yang:uuid;
      description "List of Receivers which a Transmitter is able to connect.";
    }
  }

  grouping qkdi_att_Tx {
    description "Grouping structure created to store a list of Transmitters devices.";
    leaf-list qkdi_att_TXs {
      type yang:uuid;
      description "List of Transmitter which a Receiver is able to connect.";
    }
  }

  grouping qkd_interface_item {
    description "Grouping of the interface parameters.";
  
@@ -407,8 +507,6 @@ module etsi-qkd-sdn-node {

    uses qkdi_model;

    uses qkdi_type;

    uses qkdi_att_point;

    container qkdi_capabilities {
@@ -431,6 +529,19 @@ module etsi-qkd-sdn-node {
        }
        description "Maximum absorption supported (in dB).";
      }

      uses qkdi_att_Rx {
        when "../role_support = 'TRANSMITTER'" {
          description "Virtual key association link specific configuration.";
        }
      }

      uses qkdi_att_Tx {
        when "../role_support = 'RECEIVER'" {
          description "Virtual key association link specific configuration.";
        }
      }

    }
  }
  
@@ -519,6 +630,15 @@ module etsi-qkd-sdn-node {
        description "Numerical value for the performance parameter 
          type specified above.";
      }

      leaf qber {
        type decimal64 {
          fraction-digits 3;
          range "0.000 .. 100.000";
          }
        config false;
        description "Quantum Bit Error Rate (QBER) measured for the associated QKD link.";
      }
    }
  }

@@ -607,6 +727,12 @@ module etsi-qkd-sdn-node {
            type uint32;
            description "Interface used to create the key association link.";
          }

          leaf domain_id {
            type string;
            description "Domain ID of the local SD-QKD Node";
          }

        }

        container qkdl_remote {
@@ -623,6 +749,11 @@ module etsi-qkd-sdn-node {
            type uint32;
            description "Interface used to create the link.";
          }

          leaf domain_id {
            type string;
            description "Domain ID of the remote SD-QKD Node";
          }
        }

        leaf qkdl_type {
@@ -637,28 +768,45 @@ module etsi-qkd-sdn-node {
        }

        uses virtual_link_spec {
          when "qkdl_type = 'VIRT'" {
          when "../qkdl_type = 'VIRT'" {
            description "Virtual key association link specific configuration.";
          }
        }

        uses physical_link_spec {
          when "qkdl_type = 'PHYS'" {
          when "../qkdl_type = 'PHYS'" {
            description "Physical key association link specific configuration.";
          }
        }

        container qkdl_performance {
          description "Container of link's performace parameters.";
          description "Container of link's performance parameters.";

          uses common_performance;

          uses physical_link_perf {
            when "../qkdl_type = 'PHYS'" {
            when "../../qkdl_type = 'PHYS'" {
              description "Performance of the specific physical link.";
            }
          }
        }
        
        leaf key_source_material {
          type etsi-qkdn-types:key-source-material;
          config false;
          description
            "Identifies the source or nature of the keying material associated with
            the QKD link, such as QKD, PQC, or raw keying material.";
        }

        leaf key_buffered {
          type uint32;
          units "bytes";
          config false;
          description
            "Amount of keying material currently buffered and available for the
             associated QKD link, expressed in bytes.";
        }
      }
    }
  }
@@ -673,7 +821,7 @@ module etsi-qkd-sdn-node {
    
    uses qkdn_version;

    uses qkdn_location_id;
    uses qkdn_location;

    uses qkdn_capabilities;
    
@@ -724,7 +872,7 @@ module etsi-qkd-sdn-node {
    
      uses app_details;

      uses local_qkdn_id;
      uses local_qkdn;
     
      uses augmented_app_qos;
      
@@ -937,5 +1085,4 @@ module etsi-qkd-sdn-node {
    }

  }

 }