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-tk for generating graphml topologies
    • netreplay for generating animated gifs from graphml topologies with a contact plan or event logs

Requirements

  • simpy >= 4.0
  • networkx >= 3.2
  • plotting:
    • seaborn
    • pandas
    • matplotlib
    • numpy
  • tools:
    • pillow
    • 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.

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.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

pons_dtn-0.1-py3-none-any.whl (33.1 kB view details)

Uploaded Python 3

File details

Details for the file pons_dtn-0.1.tar.gz.

File metadata

  • Download URL: pons_dtn-0.1.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.tar.gz
Algorithm Hash digest
SHA256 6b7a026f28372c425c4bca2569130d17f6d817cbbe02b67827c5201bd823401a
MD5 c0a60245aaba9e32af8344408bef2dc4
BLAKE2b-256 16af0f09754c713c6645e40dddcf2760db3b7ab5a97a2a93b46209eceb280d10

See more details on using hashes here.

File details

Details for the file pons_dtn-0.1-py3-none-any.whl.

File metadata

  • Download URL: pons_dtn-0.1-py3-none-any.whl
  • Upload date:
  • Size: 33.1 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-py3-none-any.whl
Algorithm Hash digest
SHA256 d73f170250b924048d18aebf7b0305818d4c70f10306b0b461ef88408a20202c
MD5 3905250cc4326c48ad80a3ef9c0e5b5d
BLAKE2b-256 1ff0b07725de6f1c434f89b835d89161979c93bb1e6d859ef3cfd8935c981005

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