Package: qns
SimQNWelcome to SimQN's documentation. SimQN is a discrete-event based network simulation platform for quantum networks.
SimQN enables large-scale investigations, including QKD protocols, entanglement distributions protocols, and routing algorithms, resource allocation schemas in quantum networks. For example, users can use SimQN to design routing algorithms for better QKD performance. For more information, please refer to theDocuments.SimQN is a Python3 library for quantum networking simulation. It is designed to be general propose. It means that SimQN can be used for both QKD network, entanglement distribution network and other kinds of quantum networks' evaluation. The core idea is that SimQN makes no architecture assumption. Since there is currently no recognized network architecture in quantum networks investigations, SimQN stays flexible in this aspect.SimQN provides high performance for large-scale network simulation. SimQN useCythonto compile critical codes in C/C++ libraries to boost the evaluation. Also, along with the common used quantum state based physical models, SimQN provides a higher-layer fidelity based entanglement physical model to reduce the computation overhead and brings convenience for users in evaluation. Last but not least, SimQN provides several network auxiliary models for easily building network topologies, producing routing tables and managing multiple session requests.Get HelpThisdocumentationmay answer most questions.Thetutorialhere presents how to use SimQN.TheAPI manualshows more detailed information.Welcome to report bugs atGithub.InstallationInstall and update usingpip:pip3 install -U qnsFirst sight of SimQNHere is an example of using SimQN.fromqns.simulator.simulatorimportSimulatorfromqns.network.topologyimportRandomTopologyfromqns.network.protocol.entanglement_distributionimportEntanglementDistributionAppfromqns.networkimportQuantumNetworkfromqns.network.route.dijkstraimportDijkstraRouteAlgorithmfromqns.network.topology.topoimportClassicTopologyimportqns.utils.logasloginit_fidelity=0.99# the initial entanglement's fidelitynodes_number=150# the number of nodeslines_number=450# the number of quantum channelsqchannel_delay=0.05# the delay of quantum channelscchannel_delay=0.05# the delay of classic channelsmemory_capacity=50# the size of quantum memoriessend_rate=10# the send raterequests_number=10# the number of sessions (SD-pairs)# generate the simulators=Simulator(0,10,accuracy=1000000)# set the log's levellog.logger.setLevel(logging.INFO)log.install(s)# generate a random topology using the parameters above# each node will install EntanglementDistributionApp for hop-by-hop entanglement distributiontopo=RandomTopology(nodes_number=nodes_number,lines_number=lines_number,qchannel_args={"delay":qchannel_delay},cchannel_args={"delay":cchannel_delay},memory_args=[{"capacity":memory_capacity}],nodes_apps=[EntanglementDistributionApp(init_fidelity=init_fidelity)])# build the network, with Dijkstra's routing algorithmnet=QuantumNetwork(topo=topo,classic_topo=ClassicTopology.All,route=DijkstraRouteAlgorithm())# build the routing tablenet.build_route()# randomly select multiple sessions (SD-pars)net.random_requests(requests_number,attr={"send_rate":send_rate})# all entities in the network will install the simulator and do initiate works.net.install(s)# run simulations.run()FAQWhy choose SimQN?SimQN is designed as a functional and easy-to-use simulator, likeNS3in classic networks, it provides numerous functions for anyone who wants to simulate a QKD network or entanglement-based network.Compared with the existing quantum network simulators, the developers pay more attention to simulation in the network area. Currently, a network simulation can be complicated, as users may have to implement routing algorithms and multiply protocols in different layers to complete a simulation. SimQN aims to break down this problem by providing a modulized quantum node and reusable algorithms and protocols. As a result, users can focus on what they study and reuse other built-in modules. The developers believe this will significantly reduce the burden on our users. As for the physics area, SimQN can also simulate quantum noise, fidelity, and more. Thus, if you focus on the research of the quantum network area, SimQN can be a competitive choice.How to contribute?Welcome to contribute through Github Issue or Pull Requests. Please refer to thedevelop guide. If you have any questions, you are welcome to contact the developers via e-mail.