20#include "ns3/packet.h"
21#include "ns3/object.h"
22#include "ns3/ipv4-header.h"
23#include "ns3/traced-value.h"
24#include "ns3/trace-source-accessor.h"
25#include "ns3/event-id.h"
28#include "ns3/qkd-key-manager-system-application.h"
31#include "ns3/net-device.h"
32#include "ns3/traffic-control-layer.h"
38#include "ns3/object-factory.h"
39#include "ns3/core-module.h"
40#include "ns3/network-module.h"
41#include "ns3/internet-module.h"
42#include "ns3/ipv4-interface-address.h"
46 class QKDKeyManagerSystemApplication;
47 class QKDLocationRegisterEntry;
48 class QKDLocationRegister;
Ipv4 addresses are stored in host order in this class.
A base class which provides memory management and object aggregation.
Smart pointer class similar to boost::intrusive_ptr.
As described in OPENQKD deliverable D6.1(section 5), the QKD control is a network component with the ...
void AssignKeyManager(Ptr< Node > n)
Assign key manager.
Ptr< QBuffer > GetQBufferConf(uint32_t remoteId)
void AddRouteEntry(QKDLocationRegisterEntry entry)
Ipv4Address GetLocalKMAddress() const
void DoInitialize() override
@briefInitialization function
void RegisterQKDModulePair(Ptr< Node > moduleLocal, Ptr< Node > moduleRemote, std::string idLocal, std::string idRemote, Ptr< Node > kmLocal, Ptr< Node > kmRemote)
Register QKD Module / PP application pair.
TypeId GetInstanceTypeId() const override
Get the type ID for the instance.
void Dispose()
Destroy a QKDControl.
std::vector< uint32_t > GetRemoteKmNodeIds() const
~QKDControl() override
Destructor.
static TypeId GetTypeId()
Get the type ID.
Ptr< QBuffer > m_rsbuffer_config
Ptr< QBuffer > m_qbuffer_config
Default QKD buffer configuration.
std::vector< std::string > m_local_qkdapps
Vector of all the apps(IDs) connecting to local KM node.
Ptr< QBuffer > GetBufferByDestinationNode(Ptr< Node >, Ptr< Node >)
Return QKDQBuffer for plotting.
std::string GetApplicationId(std::string peerAppId)
Get local application ID based on the remote application ID.
std::vector< Ptr< Node > > m_remote_km_nodes
Remote Key Manager Node(s)(direct QKD connection!)
Ptr< QKDLocationRegister > m_routingTable
Routing Table.
std::map< uint32_t, Ptr< QBuffer > > m_qbuffers_conf
Dedicaded QKD buffer configuration.
Ptr< Node > GetLocalKMNode() const
std::map< std::string, uint32_t > m_remote_qkdapps
All remote apps(IDs) and their KM nodes(must keep nodes to get remote KM address in QKD network)
Ptr< Node > GetNode() const
std::vector< QKDModule > m_qkd_modules
Registered QKD modules.
QKDLocationRegisterEntry GetRoute(std::string remoteAppId)
void SetNode(Ptr< Node >)
Ptr< QKDKeyManagerSystemApplication > GetKeyManagerSystemApplication(Ptr< Node > n) const
Get Key Manager System Application from node.
void DoDispose() override
The dispose method.
void RegisterQKDApplicationPair(std::string localAppId, std::string remoteAppId, Ptr< Node > remoteKmNode)
register a pair of QKD applications
void ConfigureQBuffers(uint32_t Mmin, uint32_t Mthr, uint32_t Mmax, uint32_t Mcurr, uint32_t defaultKeySize)
Configure all buffers(default conf).
uint32_t GetLocalKMNodeId() const
std::string GetLocalKMId() const
Ptr< SBuffer > CreateRSBuffer(uint32_t remoteId)
std::map< std::string, std::string > m_qkdapp_pairs
QKDapp pair(remoteApp, localApp)
void ConfigureRSBuffers(uint32_t Mmin, uint32_t Mthr, uint32_t Mmax, uint32_t Mcurr, uint32_t defaultKeySize)
Introspection did not find any typical Config paths.
a unique identifier for an interface.
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Ptr< QBuffer > qkdBufferAlice
double publicChannelMetric
double quantumChannelMetric
Ptr< QBuffer > qkdBufferBob
Describes QKD modules at site.