The Python Opportunistic Network Simulator (PONS) is a discrete-event simulator for opportunistic/DTN networks.
Project description
PONS - Python Opportunistic Network Simulator
A modular DTN simulator in the style of the ONE.
Features:
- distance- or contact-window-based network simulation
- DTN routing algorithms
- epidemic
- spray & wait
- first contact
- direct delivery
- PRoPHET
- static
- mobility
- random waypoint
- external ONE movement
- external ns2 movement
- contact plan connectivity model
- ION DTN contact plans
- [core contact plan}(https://github.com/gh0st42/ccm/)
- static networkx topology
- optionally: from graphml
- optionally: fluctuating from contact plan
- simulated user applications
- tools
netedit
for generating graphml topologiesponsanim
for generating animated gifs and mp4 from graphml topologies with a contact plan or event logs
Requirements
- simpy >= 4.0
- networkx >= 3.2
- plotting:
- seaborn
- pandas
- matplotlib
- numpy
- tools:
- pillow
- opencv-python
- tkinter
Example
import random
import json
import pons
import pons.routing
RANDOM_SEED = 42
SIM_TIME = 3600*24
NET_RANGE = 50
NUM_NODES = 10
WORLD_SIZE = (3000, 3000)
# Setup and start the simulation
random.seed(RANDOM_SEED)
moves = pons.generate_randomwaypoint_movement(
SIM_TIME, NUM_NODES, WORLD_SIZE[0], WORLD_SIZE[1], max_pause=60.0)
net = pons.NetworkSettings("NET1", range=NET_RANGE)
epidemic = pons.routing.EpidemicRouter()
nodes = pons.generate_nodes(NUM_NODES, net=[net], router=epidemic)
config = {"movement_logger": False, "peers_logger": False, "event_logger": True}
msggenconfig = {"type": "single", "interval": 30,
"src": (0, NUM_NODES), "dst": (0, NUM_NODES),
"size": 100, "id": "M"}
netsim = pons.NetSim(SIM_TIME, WORLD_SIZE, nodes, moves,
config=config, msggens=[msggenconfig])
netsim.setup()
netsim.run()
# print results
print(json.dumps(netsim.net_stats, indent=4))
print(json.dumps(netsim.routing_stats, indent=4))
Run using python3
or for improved performance use pypy3
.
Magic ENV Variables
Some of the simulation core functions can be set during runtime without having to change your simulation code.
LOG_FILE
can be set to change the default event log file from/tmp/events.log
to something elseSIM_DURATION
can be used to override the calculated simulation duration
For netedit
there are also ways to influence its behavior:
BG_IMG
can be set to any image and it while be rendered as a background behind the network topology
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pons_dtn-0.1.4.tar.gz
(1.9 MB
view details)
Built Distribution
pons_dtn-0.1.4-py3-none-any.whl
(65.0 kB
view details)
File details
Details for the file pons_dtn-0.1.4.tar.gz
.
File metadata
- Download URL: pons_dtn-0.1.4.tar.gz
- Upload date:
- Size: 1.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb57cc1f28480bb80c58fb74930a1b0b89fadd46bf6d8bf2707fa9d31b4f19aa |
|
MD5 | 16d1d4d01c926a5e1a548eadf01227a5 |
|
BLAKE2b-256 | a07202ce7d96ee3ceadf39f6df142cefae5de530cedbe043acfd0b2a0e7dd182 |
File details
Details for the file pons_dtn-0.1.4-py3-none-any.whl
.
File metadata
- Download URL: pons_dtn-0.1.4-py3-none-any.whl
- Upload date:
- Size: 65.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9899ab92c56cd176196ac738d6695ac2cd88be2e4c5d9413dd9942c832412507 |
|
MD5 | f946fe8862ae56b03174d0b8b2c9271b |
|
BLAKE2b-256 | ce26aa87d79f2dfc41782f3b69c4607c6a1b608e32c052c85c0050a1da93a1cb |