Skip to content

Commit

Permalink
Expected feature list added to README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
ARLEONTR committed Feb 2, 2024
1 parent f40d507 commit 8e786c7
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 41 deletions.
16 changes: 0 additions & 16 deletions .vscode/launch.json

This file was deleted.

77 changes: 55 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,6 @@
# Ad Hoc Computing (AHC) Framework

Communication engineers are specialised in digital communications and networking technologies, whereas computer engineers or application developers are mostly specialised in software engineering with no or minimal background in the communication domain. With the introduction of virtualisation and softwarization, networks have become programmable that requires knowledge from both telecommunication and computer engineering domains. We have to fill the gap between these two domains to address the challenges of future networks. The main objective of the AHC project is to develop a distributed computing and learning environment on wireless networks employing software-defined radios. There are many simulators, emulators, and test-beds for researching networks or event-driven concurrent programming tools of distributed algorithms. However, there is a need for a tool that helps researchers integrate distributed algorithms considering the specifics of wireless networks. The tool has to incorporate wireless channel characteristics, packet collisions, contention-based channel access, forward- and backward-error correction, topology management, multi-hopping, or end-to-end reliable data transport and many other issues related to wireless communication and networking.

The overall goal of the AHC project is to develop an open-source education and research software framework that facilitates the development of distributed algorithms on wireless networks considering the impairments of wireless channels. The framework will be used as a learning and prompt-prototyping tool.

## Objectives
The specific objectives are
- Creating web-based education tools for teaching and learning distributed systems, networks, and communication,
- Abstraction of the intricate details of the digital communication discipline from networking or distributed computing domains,
- Creating easy-to-understand and accessible educational materials about wireless networks,
- Providing hands-on opportunities for learning these technologies, inside of the classroom and out,
- Facilitating a framework to invent new technologies,
- Improving existing open-source digital communications technologies,
- Creating a remote simulation environment by using web-based tools for getting more realistic, real-world experiment results,
- Creating simulation configurations dynamically so that users will be able to run simulations by meeting specific requirements of projects.

## Users

The users of the AHC framework will be students, teachers, researchers and engineers working in the fields of digital communication, networking or distributed computing. The developed framework will be available to all these user groups as open-source software.

# Design

In this section, we present the details of the ad hoc computing library (AHC) library and algorithms thereof following an asynchronous event-driven composition model. The AHC library is being implemented in Python language, and the software is provided as open-source at [https://github.com/cengwins/ahc](https://github.com/cengwins/ahc). The basic abstraction of AHC is a component, which is a single-threaded automaton. In other words, a component is a single-threaded process implemented in python where the thread waits on a queue for accepting input events from other components. Each component has a name and an instance number. The name and the instance number together uniquely represent each component instance. A component is an event-driven active process that waits for an input event. From this perspective, a component is an automaton.
We present the details of the ad hoc computing library (AHC) library and algorithms thereof following an asynchronous event-driven composition model. The AHC library is being implemented in Python language, and the software is provided as open-source at [https://github.com/cengwins/ahc](https://github.com/cengwins/ahc). The basic abstraction of AHC is a component, which is a single-threaded automaton. In other words, a component is a single-threaded process implemented in python where the thread waits on a queue for accepting input events from other components. Each component has a name and an instance number. The name and the instance number together uniquely represent each component instance. A component is an event-driven active process that waits for an input event. From this perspective, a component is an automaton.

Each component has a separate eventhandlers dictionary (hash table) to which the event handlers are added on the initialization of the component. The component model automatically adds the "init" event to the eventhandlers dictionary. Note that the name of the event is "init" and the function that will handle the "init" event is onInit. The constructor of the component model executes the following.
- initializes the eventhandlers dictionary. This dictionary allows us to develop generic component models and automata.
Expand Down Expand Up @@ -70,3 +49,57 @@ As we have already described, the lowest-layer component's down connector is con
## Contact

Ertan Onur - [@ertan10r](https://twitter.com/Ertan10r) - [email protected]





## Features to be added

Some features that can be added to AHCv2

- Implementation of various logical channel models
- Implementation of various failure models (omission, commission, Byzantine, ...)
- Ethernet switch implementation
- Extension of logical clocks
- Implementation of various topology generators (Erdös-Renyi, power law, small-world graphs)
- Porting routing protocols from AHC v1.2.2 to AHCv2
- Porting some distributed algorithms from AHC v1.2.2 to AHCv2
- Openflow data plane
- TAP interface integration for Ethernet-based communication
- TUN interface integration for IP-based communication
- Distribution of the AHCv2 (This will be AHCv3)
- Implementation of various queueing disciplines internal to AHCv2
- Implementation of additional distributed algorithms
- Failure detectors
- Consensus
- PAXOS
- RAFT
- Networking
- Pipelining protocols
- ARQ protocols
- Reliable data transport protocols
- Group communication
- Atomic multi/broadcast
- Ordered multi/broadcast
- Local-order, total-order, causal-order, FIFO broadcast
- Reliable multi/broadcast
- Reliable ordered multi/broadcast
- Atomic commit
- Distributed graph algorithms
- Spanning tree protocols
- Distance vector protocols
- Link state protocols
- Interval routing
- Prefix routing
- Mutual exclusion algorithms
- Snapshot algorithms
- Global state collection algorithms (Computation of the network topology, counting the number of processes in a distributed system, detecting termination, detecting deadlock, detecting loss of coordination)
- Coordination algorithms
- Leader election
- Distributed hash tables (Tapestry, Pastry, Kademlia)
- Distributed key-value store
- Conflict-free Replicated Data Types (CRDT)
- Distributed algorithm to AHCv2 compiler
- [TLA+](http://lamport.azurewebsites.net/tla/news.html) to AHCv2 compiler (This will help us be formal)

2 changes: 1 addition & 1 deletion documentation/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
project = 'Ad Hoc Computing Framework'
copyright = '2024, Ertan Onur'
author = 'Ertan Onur'
release = 'v2.1.6'
release = 'v2.1.8'

# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
setup(
# TODO: Fix the configs in this part
name='adhoccomputing',
version='2.1.7',
version='2.1.8',
description="Ad Hoc Computing Library",
long_description=long_description,
long_description_content_type="text/markdown",
Expand All @@ -24,5 +24,5 @@
"Programming Language :: Python :: 3",
"Operating System :: OS Independent",
],
python_requires=">=3.8",
python_requires=">=3.10",
)

0 comments on commit 8e786c7

Please sign in to comment.