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

Uploaded Source

Built Distribution

pons_dtn-0.1.1-py3-none-any.whl (43.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pons_dtn-0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 a1dcfc6df03060dfe075c9194a8328501243b24fd77aa4375aeacdcccee4496d
MD5 820528a1441d25748923793ee6171263
BLAKE2b-256 667df8c599ecb26202d00ec918d6241ba83ba4e7031ab26d6a0feccaf5fce5aa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pons_dtn-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 43.6 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6039302546682b34c13acb8b56007ea1d94aa235282073ef0e7e1e378860e0a3
MD5 3fafcecf8ebeeb22dc025d86018d2ebb
BLAKE2b-256 c26a865b47e53970738f71285750e9263a7c842a21569b05cc3f11deced5de5f

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