A Toolkit for Modeling and Simulation of Resource Management Techniques in Internet of Things, Edge and Fog Computing Environments

Related tags

Spring Boot iFogSim
Overview

iFogSim2 (The New Version)

A Toolkit for Modeling and Simulation of Resource Management Techniques in Internet of Things, Edge and Fog Computing Environments with the following new features:

  • Mobility-support and Migration Management
    • Supporting real mobility datasets
    • Implementing different random mobility models
  • Microservice Orchestration
  • Dynamic Distributed Clustering
  • Any Combinations of Above-mentioned Features
  • Full Compatibility with the Latest Version of the CloudSim (i.e., CloudSim 5) and Previous iFogSim Version and Tutorials

iFogSim2 currently encompasses several new usecases such as:

  • Audio Translation Scenario
  • Healthcare Scenario
  • Crowd-sensing Scenario

Cite IFogSim2

@article{ifogsim2preprint,
  title={IFogSim2: An Extended iFogSim Simulator for Mobility, Clustering, and Microservice Management in Edge and Fog Computing Environments},
  author={Mahmud, Redowan and Pallewatta, Samodha and Goudarzi, Mohammad and Buyya, Rajkumar},
  journal={arXiv preprint arXiv:2109.05636},
  year={2021}
}

@article{ifogsim2JSS,
  title={Ifogsim2: An extended ifogsim simulator for mobility, clustering, and microservice management in edge and fog computing environments},
  author={Mahmud, Redowan and Pallewatta, Samodha and Goudarzi, Mohammad and Buyya, Rajkumar},
  journal={Journal of Systems and Software},
  pages={111351},
  year={2022},
  publisher={Elsevier}
}

How to run iFogSim2 ?

  • Eclipse IDE:

    • Create a Java project
    • Inside the project directory, initialize an empty Git repository with the following command:
    git init
    
    • Add the Git repository of iFogSim2 as the origin remote:
    git remote add origin https://github.com/Cloudslab/iFogSim
    
    • Pull the contents of the repository to your machine:
    git pull origin main
    
    • Include the JARs to your project
    • Run the example files (e.g. TranslationServiceFog_Clustering.java, CrowdSensing_Microservices_RandomMobility_Clustering.java) to get started
  • IntelliJ IDEA:

    • Clone the iFogSim2 Git repository to desired folder:
    git clone https://github.com/Cloudslab/iFogSim
    
    • Select "project from existing resources" from the "File" drop-down menu
    • Verify the Java version
    • Verify the external libraries in the "JARs" Folder are added to the project
    • Run the example files (e.g. TranslationServiceFog_Clustering.java, CrowdSensing_Microservices_RandomMobility_Clustering.java) to get started

References

Comments
  • Periodicity and SelectivityModel in the Simulator

    Periodicity and SelectivityModel in the Simulator

    Greetings,

    I have read the papers regarding iFogSim, but I would like to have a deeper explanation about how periodicity, selectivity models and migration work in the simulation:

    1. In which cases would only one application edge be periodic? "Shouldn't" all the application edges be configured as periodic, since the whole environment depends on the sensors?
    2. Could the selectivity model be read as a chance of losing the packet?
    3. When a migration happens in an intracluster mobility scenario, does migration to the nearest fog node happen every time an edge device moves?
    4. In the simulator, is it possible to change the migration policy for intercluster mobility scenarios; for example the broker of the requests to be another gateway instead of a proxy?

    Thanks in advance.

    opened by vyk1 5
  • java null pointer exception

    java null pointer exception

    I am getting the below error while running the java files using the mobility dataset

    at org.fog.mobilitydata.DataParser.parseResourceData(DataParser.java:99) at org.fog.placement.LocationHandler.parseResourceInfo(LocationHandler.java:150) at org.fog.test.perfeval.CardiovascularHealthMonitoringApplication.createFogDevices(CardiovascularHealthMonitoringApplication.java:162) at org.fog.test.perfeval.CardiovascularHealthMonitoringApplication.main(CardiovascularHealthMonitoringApplication.java:109)

    opened by mehbub160 4
  • ClassNotFoundException when running TranslationServiceFog_Clustering

    ClassNotFoundException when running TranslationServiceFog_Clustering

    I am getting the below error while running TranslationServiceFog_Clustering.java, I have all the jars properly added inclusing math3.

    Kindly help me out.

    Starting Translation Service... Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/math3/util/Pair at org.fog.application.Application.addTupleMapping(Application.java:135) at org.fog.test.perfeval.TranslationServiceFog_Clustering.createApplication(TranslationServiceFog_Clustering.java:317) at org.fog.test.perfeval.TranslationServiceFog_Clustering.main(TranslationServiceFog_Clustering.java:75) Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.util.Pair at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ... 3 more

    opened by vijayaramb 2
  • Context-aware Data and Task Placement

    Context-aware Data and Task Placement

    First, thank you for your great sim. I'm working with your sim for a while for academic purposes. I have this question : can we use your sim for Context-aware Data and Task Placement as in this article?

    https://ieeexplore.ieee.org/document/8767386

    opened by MarsXan 2
  • Software is literally broken and won't run

    Software is literally broken and won't run

    You can fix the dependencies that they don't have by adding the following code to the pom.xml and then right click-> Maven0->Update Project or select project and Alt+F5

    <repositories>
           <repository>
           		<id>WSO2</id>
                <url>http://dist.wso2.org/maven2/</url>
            </repository>
      </repositories>
      
      <dependencies>
    	  <dependency>
    	    <groupId>org.apache.commons</groupId>
    	    <artifactId>commons-math3</artifactId>
    	    <version>3.6.1</version>
    	</dependency>
    		<!-- https://mvnrepository.com/artifact/org.apache.clerezza.ext/org.json.simple -->
    		<dependency>
    		    <groupId>org.apache.clerezza.ext</groupId>
    		    <artifactId>org.json.simple</artifactId>
    		    <version>0.4</version>
    		</dependency>
    			<!-- https://mvnrepository.com/artifact/com.google.common/google-collect -->
    	<dependency>
    	    <groupId>com.google.common</groupId>
    	    <artifactId>google-collect</artifactId>
    	    <version>1.0-rc1</version>
    	</dependency>
    	</dependencies>
    

    However, the program still fails to run

    opened by andrei-lz 1
  • cloudsim error message....

    cloudsim error message....

    When vrgameFog.java is executed, the following error message is displayed.....

    Exception in thread "main" java.lang.Error: Unresolved compliation problems: Log cnanot be resolved Log cnanot be resolved The method getId() is undefined for the type FogBroker The method getId() is undefined for the type FogBroker The method getId() is undefined for the type FogBroker The method getName() is undefined for the type FogDevice The method getName() is undefined for the type FogDevice CloudSim cannot be resolved CloudSim cannot be resolved Log cnanot be resolved

    opened by wogur0407 1
  • Mac OS Issue

    Mac OS Issue

    Hi,

    When running examples CardiovascularHealthMonitoringApplication.java and CardiovascularHealthMonitoringApplicationEdgewards.java, Mac OS seems to be getting different results to a Windows system.

    I have included a zip with the outputs I receive in a Windows VM and Mac OS. Once I open the simulator in IntelliJ or Eclipse, and run those files for the first time, those are the outputs I receive.

    Windows appears to be working well (I included images of partial output because the output is very large). But on Mac OS (Version 11.5.1), there are errors. How do I solve this so I don't have to use the VM?

    Thanks. output.zip

    opened by noorb98 0
  • Update VM processing time

    Update VM processing time

    When updating the other VM processing, first, it sets the new mipsshare of the VM In the following line: https://github.com/Cloudslab/iFogSim/blob/fca02da0132d155754373402e72ccaed5aca3d71/src/org/cloudbus/cloudsim/CloudletSchedulerTimeShared.java#L65

    Then, it calculates the FinishedSoFar in line 70: https://github.com/Cloudslab/iFogSim/blob/fca02da0132d155754373402e72ccaed5aca3d71/src/org/cloudbus/cloudsim/CloudletSchedulerTimeShared.java#L70

    While I think, First, it should calculate FinishedSoFar(which has happened based on the previous mipshare of the VM), then update the mipsshare of the VM (to calculate the processing time of the remaining length based on the new mipsshare).

    Would you please check this and let me know if we should move line 70 after that?

    Best, Saeedeh

    opened by saeedehbaneshi 0
  • Module vs Microservice

    Module vs Microservice

    Me and my team are working on a novel load balancing algorithm for fog computing. iFogSim2 has introduced a new way to bring in microservices into the application and readily coding a load balancer for it in LoadBalancer.java file which was not present in iFogSim. What does this load balancer do exactly and why is it so specific to microservices?

    Also is there any difference between a microservice and a module in ifogsim other than the additional features like load balancers, service discovery etc implemented for it? Because logically when I am creating an application, I can divide it either into smaller modules or into smaller microservices, but ifogsim2 provides more fine grained control when I create microservices.

    Thanks in advance!

    opened by sumukhbhat2701 0
  • Containers

    Containers

    In redme.md file of iFogSim2 mentioned that "It is fully compatible with the Latest Version of the CloudSim (i.e., CloudSim 5)" but ClodSim5 supports containers and I can't find any packages like "org.cloudbus.cloudsim.container.schedulers" and others in iFogSim2. Only the jar files of CloudSim version 3.0.3 are added to reference libraries.

    opened by ZarCS 1
  • Errors when testing DCNS

    Errors when testing DCNS

    Hi, I am trying to make the ifogsim and ifogsim2 running. They both have the same error messages as:

    Starting DCNS... Exception in thread "main" java.lang.Error: Unresolved compilation problems: The constructor AppModule(int, String, String, int, double, int, long, long, String, CloudletScheduler, Map<Pair<String,String>,SelectivityModel>) refers to the missing type Pair Pair cannot be resolved to a type

    at ifogsim_1/org.fog.application.Application.addAppModule(Application.java:65)
    at ifogsim_1/org.fog.test.perfeval.DCNSFog.createApplication(DCNSFog.java:233)
    at ifogsim_1/org.fog.test.perfeval.DCNSFog.main(DCNSFog.java:68)
    

    I am using JDK13.0.2.

    opened by sharlec 13
  • Dynamic scheduling scenario updated to enable static clustering.

    Dynamic scheduling scenario updated to enable static clustering.

    Updates made with reference to Issue #5. Corrects the typo in MicroservicesController.java and enables static clustering for dynamic scheduling scenarios thereafter.

    opened by Samodhap 1
  • Opposite if-conditional in org.fog.placement.MicroservicesController::init() methods

    Opposite if-conditional in org.fog.placement.MicroservicesController::init() methods

    Hello,

    In the org.fog.placement.MicroservicesController class, the two init() methods operate differently on the Config.ENABLE_STATIC_CLUSTERING value.

    In particular:

    org.fog.placement.MicroservicesController::init() checks for: if (Config.ENABLE_STATIC_CLUSTERING)

    where

    org.fog.placement.MicroservicesController::init(Map<Integer, List> monitored) checks the opposite:

    if (!Config.ENABLE_STATIC_CLUSTERING)

    Looking at the rest of the implementation, it seems likely a typo in one of them. In this case, which one is the "correct" one? On the other hand, if this is intentional, could you elaborate the reasoning behind this difference between the two methods?

    Thanks, Emmanouil Maroudas

    opened by kapamaroo 0
Releases(v2.0.0)
Owner
The Cloud Computing and Distributed Systems (CLOUDS) Laboratory
The Cloud Computing and Distributed Systems (CLOUDS) Laboratory
A proof-of-concept Android application to detect and defeat some of the Cellebrite UFED forensic toolkit extraction techniques.

LockUp An Android-based Cellebrite UFED self-defense application LockUp is an Android application that will monitor the device for signs for attempts

levlesec 300 Dec 4, 2022
Human Resource Management System (Java & React)

?? HumanResourceManagementSystem ?? Steps İş Arayanlar sisteme kayıt olabilmelidir. ✔️ İş verenler sisteme kayıt olabilmelidir. ✔️ ️ Sisteme genel iş

Furkan Paşaoğlu 5 Sep 12, 2022
Human Resource Management System - Backend

Human Resource Management System - Backend File Structure ??️ Layered Architecture Entities - The package in which the assets are kept DataAcces - Pac

Tarık Kaan Koç 30 Jan 1, 2023
Human resource management system with java spring

Pair Programming This project developed with Emin Ümüt Erarslan a.k.a 8CA5F İnsan Kaynakları Yönetim Sistemi Bu proje Engin Demiroğ' un Java-React kam

Burak KALAYCI 45 Dec 26, 2022
Backend For Human Resource Management System

?? Presentation This is a hrms project. At the backend of this project I used Java(Spring Boot) and I used PostgreSQL as database management. At the f

Salih Bora Öztürk 13 Aug 5, 2022
Human Resource Management System

hrms Human Resource Management System ?? Proje Hakkında N-Katmanlı Solid mimari yapısı ile hazırlanan, SpringBoot kullanılarak CRUD işlemlerinin yapıl

Atakan Reyhanioglu 16 Jun 6, 2022
N-Layer Architecture human resource management system project with Java.

HRMS Project Backend N-Layer Architecture human resource management system project with Java. Report Bug · Request Feature About The Project Built Wit

Ahmet Çetinkaya 78 Dec 26, 2022
Java - Backend for Human Resource Management System

HRMS (Human Resource Management System) Main Directory PostgreSQL (Heroku)Live API Java(1.8) - Spring Boot based. Dependencies: Spring Boot DevTools S

Karcan Ozbal 61 Dec 26, 2022
Human Resource Management Application on JavaFX using MVC Design Pattern

Human-Resource-Management-System-with-JFoenix Human Resource Management Application on JavaFX using MVC Design Pattern Built With Java JavaFX - FXML C

Bahadır Ünal 0 Mar 18, 2022
A JAVA program made to fetch lyrics from internet

Lyrics Fetcher Online A JAVA program made to fetch lyrics from internet. Screenshots Clone to your PC For Windows (I guess) git clone https://github.c

VINU 1 Feb 3, 2022
Building Open-Ended Embodied Agents with Internet-Scale Knowledge

Building Open-Ended Embodied Agents with Internet-Scale Knowledge [Website] [Arxiv Paper] [PDF] [Docs] [Open Database] [MineCLIP] [Team] is a new AI r

null 927 Jan 4, 2023
EMP: Edge-assisted Multi-vehicle Perception (MobiCom '21)

EMP EMP is an edge-assisted multi-vehicle perception system for connected and autonomous vehicles (CAVs), designed for efficient and scalable sensor d

Xumiao Zhang 19 Dec 3, 2022
JHusky - Modern native Git hooks made easy for java environments

JHusky Modern native Git hooks made easy for java environments JHusky improves your commits and more ?? Jwoof! Install Include it to your project as a

Pedro Caires 23 Oct 31, 2022
Programming Services and Processes - 04 Secure Programming Techniques

Programación de Servicios y Procesos - 04 Técnicas de Programación Segura Tema 04. Técnicas de Programación segura. Curso 2021/2022. Contenidos Introd

José Luis González Sánchez 5 Dec 27, 2022
You can draw and many more things in this program

Scribble Table of contents Introduction Screenshots Prerequisite Introduction You can draw/erase in different width. Chose color of your choice. Set b

Japsare Ayushi 1 Jan 27, 2022
Duel Threads - Concurrency techniques duel it out for the championship (and bragging rights)

Duel Threads Concurrency techniques duel it out for the championship (and bragging rights) Phases: Argue over rules, challenges and the grand prize Se

Jason Sipula 2 May 9, 2022
Swerve control, simulation, and trajectory generation / following. Everything you need for swerve.

BearSwerve BearSwerve is intended to be an all in one swerve solution including: teleop driving, simulation, trajectory following and more. It combine

null 7 Dec 28, 2022
Flights metasearch engine simulation using Java, GraphQL and React.js, developed for COMP30220 Distributed Systems.

Distributed Airways For the full project report, see ./report.pdf. A demonstration video is available here. Requirements Docker JDK 8 and Apache Maven

Rajit Banerjee 3 Dec 29, 2022