Loading etsi-qkd-node-types.yang +70 −1 Original line number Diff line number Diff line Loading @@ -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."; Loading etsi-qkd-sdn-node.yang +186 −39 Original line number Diff line number Diff line Loading @@ -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."; Loading Loading @@ -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."; } } } Loading Loading @@ -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."; } } } Loading Loading @@ -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."; } } } Loading Loading @@ -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."; } } } } Loading Loading @@ -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; } } } Loading @@ -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."; Loading Loading @@ -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."; Loading @@ -407,8 +507,6 @@ module etsi-qkd-sdn-node { uses qkdi_model; uses qkdi_type; uses qkdi_att_point; container qkdi_capabilities { Loading @@ -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."; } } } } Loading Loading @@ -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."; } } } Loading Loading @@ -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 { Loading @@ -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 { Loading @@ -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."; } } } } Loading @@ -673,7 +821,7 @@ module etsi-qkd-sdn-node { uses qkdn_version; uses qkdn_location_id; uses qkdn_location; uses qkdn_capabilities; Loading Loading @@ -724,7 +872,7 @@ module etsi-qkd-sdn-node { uses app_details; uses local_qkdn_id; uses local_qkdn; uses augmented_app_qos; Loading Loading @@ -937,5 +1085,4 @@ module etsi-qkd-sdn-node { } } } Loading
etsi-qkd-node-types.yang +70 −1 Original line number Diff line number Diff line Loading @@ -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."; Loading
etsi-qkd-sdn-node.yang +186 −39 Original line number Diff line number Diff line Loading @@ -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."; Loading Loading @@ -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."; } } } Loading Loading @@ -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."; } } } Loading Loading @@ -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."; } } } Loading Loading @@ -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."; } } } } Loading Loading @@ -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; } } } Loading @@ -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."; Loading Loading @@ -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."; Loading @@ -407,8 +507,6 @@ module etsi-qkd-sdn-node { uses qkdi_model; uses qkdi_type; uses qkdi_att_point; container qkdi_capabilities { Loading @@ -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."; } } } } Loading Loading @@ -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."; } } } Loading Loading @@ -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 { Loading @@ -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 { Loading @@ -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."; } } } } Loading @@ -673,7 +821,7 @@ module etsi-qkd-sdn-node { uses qkdn_version; uses qkdn_location_id; uses qkdn_location; uses qkdn_capabilities; Loading Loading @@ -724,7 +872,7 @@ module etsi-qkd-sdn-node { uses app_details; uses local_qkdn_id; uses local_qkdn; uses augmented_app_qos; Loading Loading @@ -937,5 +1085,4 @@ module etsi-qkd-sdn-node { } } }