Giter Site home page Giter Site logo

meshsim's People

Contributors

dash83 avatar doctorn avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

meshsim's Issues

Distributed simulation support

Given the real-time nature of MeshSim, the successful execution of a simulation requires that the host computer have enough computational resources to emulate the collective computing power of the nodes in the simulation. This constraint limits the usability of MeshSim to either small simulations or the need for a simulation server with several CPU cores.

This enhancement proposal deals with the re-architecture of MeshSim to support distributed simulations in environments composed of multiple simulation hosts. The objective of it, is to be able to add the computational capacity of several hosts into a single pool of resources, such that larger simulations can be executed with commodity hardware.

The specifics of this enhancement are still in the planning stage, but any contributor interested in implementing this feature can contact me to discuss the design.

BasicTest in master_cli doesn't always work

When running the basic test from the Master, it works some times and sometimes it doesn't. The issue is that both Workers started by master first try to join the network and then listen for messages. Worker1 has nothing to do since it's the first node of the network. However, Worker2 does send a JOIN message wich sometimes goes out before Worker1 starts listening for messages.

The fix should be to start listening for messages before sending a JOIN message, however currently it would imply starting a new thread. As I decided whether to stick with nanomsg or move to tokio, this issue might go away using callbacks.

ARM cross-compilation

Ensure cross-compilation for ARM is still working and add a test/mechanism to make sure it continues working.

Remove simulated scan duplicates

When a node performs a scan_for_peers operation, it will return 1 result per peer per group, so if it shares more than 1 broadcast group, it will see it multiple times. This is the wrong behaviour and we should only keep 1 of said peers in the returned list.

Implement broadcast groups for simulated mode.

As indicated in issue #2. Following features are required.

*All broadcast groups need to live under the working dir of the Master.
*Network scan is performed via a ls of the dir.
*Every worker's named pipe will reside on the first group indicated in its spec.
*Further groups that the worker belongs to will be implemented via a soft link to the original pipe.

Add error handling to testaction_end_test

Currently acquiring the lock for the worker handles uses an unwrap operation. If this fails, all the child processes would remain.

Adding error conversion from the error returned by lock() to MasterError is also not a great idea since if it fails to acquire the lock and return right there, the results are similar to a failing unwrap (e.g. dandling processes).

Best bet is probably to add a retry strategy to acquire the lock. Also, since all meaningful work from the test should be done by this point, an aggressive strategy using killall could be used, but it seems unnecessary since this hasn't been a problem at all in the past.

Reevaluate terminating errors in Worker module and submodules

A blanket error-handling strategy used in the early days of the project was to convert all errors to WorkerError and return them upon failure all the way up the worker_cli layer, log them and exit.

This strategy is no longer optimal. Especially now dealing with the protocols in which failure is expected and not critical. Most Protocol operation-failures are not critical. Therefore, a new strategy needs to be reworked to account for this.

Update dependencies

A lot of the dependencies are quite stale at this point (like slog). Update them as appropriate to fresher and more stable releases.

Error conversion for WorkerConfig

In write_to_file(), the toml::to_string() error is handled manually. Add error conversion for this error type so that try!/? can be used.

Add error handling to testaction_add_node

Currently acquiring the lock for the worker handles uses an unwrap operation. Acquiring this lock could easily fail if more than 1 node is added at the same time.

A retry strategy for the lock-acquisition seems like the best strategy.

Move the location of the socket file for SimulatedRadio

Instead of having the concept of a main bc_group, move all socket files one dir up and have all the content in the bc_groups directories be symlinks. This will allow for easier implementation of the mobility functionality down the road.

Update README

Update README with a proper introduction of the project, examples and usage-documentation.

Simulated Mode network scan

Following the outline of my paper, change the network scan of the Worker in simulated mode to use broadcast groups. Since I'm using named pipes, the broadcast groups can be folders. This change also requires to separate the peer detection from the membership protocol I was running.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.