Skip to main content

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 topologies
    • ponsanim 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 else
  • SIM_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)

Uploaded Source

Built Distribution

pons_dtn-0.1.4-py3-none-any.whl (65.0 kB view details)

Uploaded Python 3

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

Hashes for pons_dtn-0.1.4.tar.gz
Algorithm Hash digest
SHA256 eb57cc1f28480bb80c58fb74930a1b0b89fadd46bf6d8bf2707fa9d31b4f19aa
MD5 16d1d4d01c926a5e1a548eadf01227a5
BLAKE2b-256 a07202ce7d96ee3ceadf39f6df142cefae5de530cedbe043acfd0b2a0e7dd182

See more details on using hashes here.

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

Hashes for pons_dtn-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 9899ab92c56cd176196ac738d6695ac2cd88be2e4c5d9413dd9942c832412507
MD5 f946fe8862ae56b03174d0b8b2c9271b
BLAKE2b-256 ce26aa87d79f2dfc41782f3b69c4607c6a1b608e32c052c85c0050a1da93a1cb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page