netsim

1.0.4 • Public • Published

NetSim.JS

NetSim is a network simulator for Javascript.

Installation

Add the project to your current npm project with

npm install netsim --save

Creating a Simulation

In order to create a network simulation, you must first create a network topology to simulate. Then you define app logic at given nodes in the network. Finally you run the simulation!

Defining a network

A network is simply a list of edges in the network where an edge is a Javascript object with src and dst string attributes. All nodes in the network are inferred by netsim from the edges.

Optionally, you can define packetLoss, latencyMean and latencySigma for each edge. packetLoss denotes the likelihood of a packet being dropped while latencyMean and latencySigma define the normal distribution defining the latency of the given edge.

Example network definition:

[
{src: 'node1', dst: 'node2'},
{src: 'node2', dst: 'node3', packetLoss: 0.5},
{src: 'node3', dst: 'node4', latencyMean: 100, latencySigma: 7}
{src: 'node1', dst: 'node4', packetLoss: 0.4, latencyMean: 100, latencySigma: 0}
]

Adding apps

All apps must have a uuid. The uuid corresponds to the given node in the network topology where this app logic is to be run.

Along with a uuid, apps can optionally define onStart and onMessageReceived methods. onStart is a function to be called at the start of the simulation while onMessageReceived is the event handler for receiving messages.

Example app:

node1 = netsim.addNode({uuid: 'node1',
                        onStart: function() {
                            this.sendMessage('node4', 'Marco!');
                        },
                        onMessageReceived: function(id, msg) {
                            console.log(this.uuid+' received msg: '+msg);
                        } });

Running the Simulation

After defining the network, the simulation can be run with

netsim.simulate();

Examples

var NetSim = require('netsim');
var netsim = new NetSim(topology);

netsim.addNode({uuid: 'node1',
               onStart: function() {
                   this.sendMessage('node4', 'Marco!');
               },
               onMessageReceived: function(id, msg) {
                   console.log(this.uuid+' received msg: '+msg);
               } });

netsim.addNode({uuid: 'node4',
               onMessageReceived: function(id, msg) {
                   console.log(this.uuid+' received msg: '+msg);
                   this.sendMessage('node1', 'Polo!');
               } });

netsim.simulate();

More examples can be found in examples/ on the github page!

Package Sidebar

Install

npm i netsim

Weekly Downloads

0

Version

1.0.4

License

ISC

Last publish

Collaborators

  • brollb