https://github.com/comnetshh/omnet-tdma

https://github.com/comnetshh/omnet-tdma

Science Score: 10.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.0%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: ComNetsHH
  • License: gpl-3.0
  • Language: HTML
  • Default Branch: main
  • Size: 889 KB
Statistics
  • Stars: 11
  • Watchers: 6
  • Forks: 4
  • Open Issues: 1
  • Releases: 0
Created almost 5 years ago · Last pushed almost 5 years ago

https://github.com/ComNetsHH/omnet-tdma/blob/main/

[![DOI](https://zenodo.org/badge/397504015.svg)](https://zenodo.org/badge/latestdoi/397504015)

# omnet-tdma
OMNeT++ TDMA is a simple and abstract implementation of a TDMA MAC protocol. It divides time into time slots which are then grouped into frames. For every frame a schedule is created which dictates nodes when to send. In this model, only the transmission of *data* is modelled. Control information is assumed to be exchanged out of band yielding a strongly idealized model. 

To realize communication, a network interface card (`TdmaInterface`) is implemented to be used in any hosts, as well as a single oracle scheduler module (`TdmaScheduler`). Its operation is depicted below:

![alt text](./tdma/doc/img/TDMA-Schema.png)

First, all `TdmaMac` layers, which are included in the `TdmaInterface`, register themselves to the `TdmaScheduler`. With that, the scheduler is able to create and distribute a new schedule when ever a frame begins. To be included into a schedule, nodes report their transmission buffer status to the scheduler. As depicted above, communication of control information is modelled in an idealized way where it always succeeds and has zero delay.

## Getting Started
To use `omnet-tdma`, you need to have OMNeT++ 5.6.x installed.
- Clone this repo by `git clone --recursive git@github.com:ComNetsHH/omnet-tdma.git`. This will automatically also download INET v4.2.5 which is the latest supported version for omnet-tdma
- Create a new OMNeT++ workspace in the `omnet-tdma` directory.
- Import `inet` as existing project into the OMNeT++ IDE.
- Import `tdma` as existing project into the OMNeT++ IDE.
- Make sure `inet` is set as a reference project of `tdma`.
- Navigate to `tdma/simulations/omnetpp.ini` in the OMNeT++ IDE and click run. This will trigger the build of `inet` as well as `tdma` and start an example simulation.

If you have questions or encounter any issues, reach out to k.fuger@tuhh.de

## Technical Specification
A detailed Doxygen documentation is available at https://tdma.omnetlense.com/

## Usage 
There are 4 parameters to tune the behavior of the protocol:
- `slotDuration`: The duration of a timesplot in ms (Used in `TdmaMac` and `TdmaScheduler`)
- `frameLength`: The number of timesplots per frame (Used in `TdmaMac` and `TdmaScheduler`)
- `numRetries`: How often a transmission is retried before abandoning the packet (Used in `TdmaMac`)
- `monitorSchedule`: A switch to record the entire schedule during simulation (Used in `TdmaScheduler`)

When the simulation ends, the scheduler collects a utilization statistic denoting how many of the time slots were used.
It also prints the schedule periodically during simulation, which looks like this:
```
TdmaScheduler: End scheduling:
    Slot    |   nodeId
------------+--------------
       0    |   1
       1    |   2
       2    |   3
       3    |   4
       4    |   5
       5    |   6
       6    |   7
       7    |   8
       8    |   9
       9    |   1
```

Owner

  • Name: Institute of Communication Networks
  • Login: ComNetsHH
  • Kind: organization
  • Location: Hamburg, Germany

Institute of Communication Networks (ComNets) at Hamburg University of Technology (TUHH)

GitHub Events

Total
  • Issues event: 1
  • Watch event: 4
Last Year
  • Issues event: 1
  • Watch event: 4