Skip to content

Emulation and simulation for VANETs based solution

Notifications You must be signed in to change notification settings

aaarafat/vanessa

Repository files navigation

VANESSA

Vanessa_logo

VANESSA is a Vehicular Ad-hoc Network (VANET) solution for road safety

📝 Table of Contents

Problem Statement

VANESSA aims to build an efficient and scalable VANET system with protocols that can be used in a wide variety of applications. We used known methods in literature and built on them to meet scalability and efficiency requirements that can be run on any Unix-like system

Motivation

Vehicular Ad-hoc Networks (VANETs) is a rising and active research field that has drawn the attention of many researchers and companies around the globe. The network architecture is continuously and rapidly changing. So, due to frequent disconnection, finding the best routing protocols that can handle such dynamicity is very challenging.

System Architecture

UI-ARCH

Prerequisites

  • Python3 & pip
  • Go
  • Socat
  • Node JS & npm
  • A web browser

Environment setup

  • Clone the repo

    $ git clone https://github.com/aaarafat/vanessa.git
  • Install mininet wifi

    $ sudo ./scripts/install-mnwifi.sh
  • Install dependencies

    $ sudo ./scripts/install-dep.sh

Running the project

  • Build

    $ ./scripts/build.sh
  • Running the emulation

    $ sudo ./scripts/run-emulation.sh
  • Running the simulation

    $ npm run simulation

    You can access it on localhost:4200

  • Running the Car UI

    $ npm run car

    You can access it on localhost:4201

  • Running the RSU UI

    $ npm run rsu

    You can access it on localhost:4202

How to use

The simulator

Once we open the simulator, we will see the following image

We can do the following

  • Click on any point at the map to add an initial point
  • Export the current state by clicking on Export
  • Import an exported file by clicking on Import
  • Clear the map by clicking on clear

image

we have the following options:

  • Add accident on that selected location by clicking on Add Accident on the left-side bar
  • Cancel the point by clicking on the rewind button on the top right corner
  • Add another point to make a route in order to add a car

image

Now that we have added 2 points and constructed a route We can add a car or we can still cancel it.

We can adjust the car speed by updating the input shown in the figure below. And then we can add a car by pressing on Add Car button

image

shows a running simulation containing 2 cars pointed at by 1 and an obstacle pointed at by 2. Also, The RSUs ranges are indicated by the circles pointed at by 3

image

We can click on any of the added car to show its information and show its current route

image

we can see the range of this car and its speed and its port that we will use to login in into its UI.

Car UI

Once we open the Car UI, we will be asked to enter the port of the car we want to

image

By entering the port that we can get from the simulator we will enter the car UI

image

In Car UI, we are shown the current location of the selected car and we can see the messages that it received on the right-side bar.

RSU UI

Just like the car we will enter the RSU port in the beginning

image

And once we enter it, we will be shown the RSU UI, in which we can observe its current state. We can see the Total packets it sent or received

image

Also, we can see its ARP table and the list of all obstacles reported by the cars to the RSUs

image

image

image

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b AmazingFeature-Feat)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin AmazingFeature-Feat)
  5. Open a Pull Request

Contributers


Abdelrahman Arafat


Abdelrahman Tarek


Ahmed Walid


Hassan Mohamed