Giter Site home page Giter Site logo

jpvt / wireless-networks Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 448 KB

Repository dedicated to the Wireless Networks course took at the Federal University of Paraíba. On this class, we created experiments using ns-3.

License: MIT License

Dockerfile 0.49% C++ 98.98% Shell 0.53%
iot ns3 ns3-simulation ns3-simulator

wireless-networks's Introduction

Wireless Networks

GitHub license Author docs

Repository dedicated to the Wireless Networks course took at the Federal University of Paraíba. On this class, we created experiments using ns-3. The project's structure is based on Alejandro Gomez's Network Simulator. The experiments are implemented in the scenarios directory, where each scenario has it's own docker-compose file to setup the necessary containers and volumes. The simulations can be run using scripts that sets up th required linux networking interfaceson host and connects them to the running containers and simulation.

Table of Contents

Requeriments

  1. Linux or MacOS

    ⚠️ Warning: This installation was only tested on Linux (but should work fine for MacOS as well).

  2. docker - https://docs.docker.com/get-docker/

  3. docker compose - https://docs.docker.com/compose/install/

  4. git installed by your distribution Linux or macOS (e.g. HomeBrew)

Installation

  1. Install docker and verify installation. Should be possible to run the hello-world image:

    foor@bar# sudo docker run hello-world
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    To generate this message, Docker took the following steps:
    1. The Docker client contacted the Docker daemon.
    2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
    3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
    4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.
    
    To try something more ambitious, you can run an Ubuntu container with:
    $ docker run -it ubuntu bash
    
    Share images, automate workflows, and more with a free Docker ID:
    https://hub.docker.com/
    
    For more examples and ideas, visit:
    https://docs.docker.com/get-started/
  2. Clone the repo. Example using SSH:

    foo@bar# git clone [email protected]:jpvt/wireless-networks.git
  3. Prepare the hello_world.sh script to run:

    foo@bar# chmod a+x scripts/hello_world.sh
  4. Run the hello_world.sh script:

    ⚠️ Warning: On the first run this should take about ~22 minutes on a 300Mbps connection.

    foo@bar# ./scripts/hello_world.sh
    
    ns3  | -- Configuring done
    ns3  | -- Generating done
    ns3  | -- Build files have been written to: /usr/local/ns-allinone-3.37/ns-3.37/cmake-cache
    ns3  | Scanning dependencies of target scratch_hello
    ns3  | [  0%] Building CXX object scratch/CMakeFiles/scratch_hello.dir/hello.cc.o
    ns3  | [  0%] Linking CXX executable ../../build/scratch/ns3.37-hello-default
    ns3  | At time +2s client sent 1024 bytes to 10.1.1.2 port 9
    ns3  | At time +2.00369s server received 1024 bytes from 10.1.1.1 port 49153
    ns3  | At time +2.00369s server sent 1024 bytes to 10.1.1.1 port 49153
    ns3  | At time +2.00737s client received 1024 bytes from 10.1.1.2 port 9
    ns3 exited with code 0
    Done

Scenarios

Hello World

This is a test scenario to check if your setup is working properly. There is not much to it. Files in this scenario:

  • script: hello_world.sh
  • docker compose: scenarios/hello-world.yaml
  • src file: hello.cc
  • image: ns3.Dockerfile

Smart Hospital

In this scenario, a smart hospital is equipped with an Internet of Things (IoT) network to continuously monitor patients' vital parameters and respond to events in real-time to improve patient care quality.

Smart Hospital Scenario Note: the intervals of vital parameters may change accordingly to the patient data.

Nodes

  1. Sensor Nodes: These nodes are associated with patients and are responsible for continuously monitoring patients' vital parameters, such as heart rate, blood pressure, body temperature, respiratory rate, and blood oxygen levels.

  2. Server Node: This node receives readings from the sensor nodes. It has predefined rules to identify normal and abnormal readings. When an abnormal reading is detected, the server node identifies this as an event.

  3. Actuator Nodes: These nodes are associated with various actions that may be required in response to an event. For example, there might be an actuator node associated with a robot that delivers medications to patients.

  4. Intermediate Nodes: These nodes facilitate communication between the sensor nodes, the server node, and the actuator nodes.

Server Data

The server node stores and processes the patients' vital parameters, which are continuously monitored by the sensor nodes. This includes patients' heart rate, blood pressure, body temperature, respiratory rate, and blood oxygen levels.

Files

  • script: hospital.sh
  • docker compose: scenarios/hospital.yaml
  • src file: hospital.cc
  • logs: data/hospital_logs.txt
  • server data: data/patients_data.csv
  • test input: data/sensor_readings.csv
  • image: ns3.Dockerfile

Running the scenario

  1. Prepare the hospital.sh script to run:

    foo@bar# chmod a+x scripts/hospital.sh
  2. Run the hospital.sh script:

    ⚠️ Warning: If this is the first time that you're building the image, this should take about ~22 minutes on a 300Mbps connection.

    foo@bar# ./scripts/hospital.sh

wireless-networks's People

Contributors

jpvt avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

dufeifelix

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.