Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sedgecloud/ECSNeTpp
ECSNeT++ is a simulation framework built on OMNeT++ for Distributed Stream Processing applications running on Edge and Cloud computing environments.
https://github.com/sedgecloud/ECSNeTpp
edge-computing omnet-simulation omnetpp simulation-framework stream-processing
Last synced: 3 months ago
JSON representation
ECSNeT++ is a simulation framework built on OMNeT++ for Distributed Stream Processing applications running on Edge and Cloud computing environments.
- Host: GitHub
- URL: https://github.com/sedgecloud/ECSNeTpp
- Owner: sedgecloud
- Created: 2019-05-22T11:05:49.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-06-10T10:02:01.000Z (over 5 years ago)
- Last Synced: 2023-12-16T15:17:01.374Z (11 months ago)
- Topics: edge-computing, omnet-simulation, omnetpp, simulation-framework, stream-processing
- Language: C++
- Homepage: https://sedgecloud.github.io/ECSNeTpp/
- Size: 92.8 KB
- Stars: 8
- Watchers: 3
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-edge-computing - ECSNeT++
README
# ECSNeT++
ECSNeT++ is a simulation toolkit for simulating the execution of
Distributed Stream Processing applications on Edge anc Cloud Computing environments.
ECSNeT++ is implemented using the [OMNeT++](https://omnetpp.org/) and the [INET framework](https://inet.omnetpp.org/).For more information please contact [[email protected]](mailto:[email protected]).
# Dependencies
* [INET Framework 3.6.0](https://inet.omnetpp.org/)
* [TinyXML2](http://www.grinninglizard.com/tinyxml2/)# Building the project
After cloning the repository run ```make makefiles``` followed by ```make```.
# Running the example
1. Set up OMNeT++ as instructed in [installation guide](https://doc.omnetpp.org/omnetpp/InstallGuide.pdf).
2. Set up the [INET framework](https://inet.omnetpp.org/Installation.html).
3. Import ECSNeT++ to the OMNeT++ IDE.
4. Browse to ```Project Properties -> Project References``` and add ```inet``` project as reference.
5. Build the project.
6. Run ```omnetpp.ini``` file as an OMNeT++ simulation.
7. Select ```ETL-Pi3B-1-Plan``` and run the simulation and observe the ```simulation/results``` directory for simulation measurements.# Extending the project
## Host devices
```WirelessHost``` module or the ```StandardHost``` module of the INET framework can be extended to build either a IEEE 802.11 wireless enabled device or a Ethernet enabled host device respectively.
See ```src/host``` package for examples.### Network Support
We have created a [LTE plugin](https://github.com/sedgecloud/ECSNeT-LTE-Plugin) for ECSNeT++ to add LTE User Plane connectivity to the networking model using the [SimuLTE simulation tool](http://simulte.com/index.html).
An example is available in the github project of the plugin.Similarly, other network models can also be adopted in to ECSNeT++ by creating hosts that use the network model.
## Distributed Stream Processing application
```StreamingSource```, ```StreamingOperator```, ```StreamingSink``` module are represent each Source, Operator and Sink in the topology. ECSNeT++
expects an adjacency matrix of the application topology (See ```configs/etl_app_topology.txt```) and a placement plan
(See ```configs/1.xml```).An example placement plan is shown below. The XML schema for generating the placement plan is available [here](https://github.com/sedgecloud/ECSNeTpp/blob/master/src/configs/placement-plan-schema.xsd).
```xml
danio-2
0..49
source
source
ecsnetpp.stask.StreamingSource
33406899
6880
FixedSourceEventRateDistribution
ecsnetpp.model.source.eventrate.FixedSourceEventRateDistribution
parser
operator
ecsnetpp.stask.StreamingOperator
FixedSelectivityDistribution
ecsnetpp.model.operator.selectivity.FixedSelectivityDistribution
2
.
.
.
stargazer3
0
.
.
.
```
### Source Characteristics
##### Source Event Rate
The `ecsnetpp.model.source.eventrate.ISourceEventRateDistribution` interface should be extended to implement different source event rate distributions.
See `ecsnetpp.model.source.eventrate.FixedSourceEventRateDistribution` module for an example.#### Source Message Size
The `ecsnetpp.model.source.msgsize.IMessageSizeDistribution` interface should be extended to implement different source message size distributions.
See `ecsnetpp.model.source.msgsize.FixedMessageSizeDistribution` module for an example.### Operator Characteristics
#### Operator Selectivity Ratio
The `ecsnetpp.model.operator.selectivity.IOperatorSelectivityDistribution` interface should be extended to implement different operator selectivity ratio distributions.
See `ecsnetpp.model.operator.selectivity.FixedSelectivityDistribution` module for an example.#### Operator Productivity Ratio
The `ecsnetpp.model.operator.productivity.IOperatorProductivityDistribution` interface should be extended to implement different operator productivity ratio distributions.
See `ecsnetpp.model.operator.productivity.FixedProductivityDistribution` module for an example.## CPU Scheduling
### Changing the behaviour of the CPU scheduler
We have implemented a Round Robin Scheduler for selecting the CPU core for processing a streaming event at any task. It is possible to implement other scheduling strategies by implementing the `ecsnetpp.cpu.scheduling.ICpuCoreScheduler` interface.
The scheduler can be set at the host using the `cpuCoreSchedulerType` configuration (See one of the host devices for an example use of `ecsnetpp.cpu.scheduling.RoundRobinCpuCoreScheduler` as the core scheduler).