Commit 5d7a1c71 authored by Jonathan Lejeune's avatar Jonathan Lejeune
Browse files

Update README.md

parent 8b1e9074
......@@ -8,15 +8,15 @@ DiPLab (**D**istributed **P**rotocols **Lab**oratory) is a Java library providin
Experimental analysis of distributed protocols is a very strong aspect of the [DELYS team](https://team.inria.fr/delys/)'s research activities. Exprimentation implies necessarily software development step which uses tools or libraries to handle a distributed system model and thus deploy the protocols to be evaluated. Usually we model a distributed system as a set of computing nodes linked by a network, which do not share any memory and communicates only thanks to messages passing. It exists a lot of tools to implement and to test distributed protocols. However it is possible to classify this tools into two families : **Middleware for real distributed infrastructure** and **Simulators**.
**Middleware for real distributed infrastructure** are tools that consider a set of real remote sites being able to host several processes (= the nodes of the model) which communicate thanks to a real network with sockets. The **M**essage **P**assing **I**interface (MPI) is the most famous standard for message-oriented middleware and offers a large panel of communication primitives. This family brings a better representativeness of a real distributed system which allow to value experiments. However, the development is not trivial because :
- it is impossible to have a global vision
**Middleware for real distributed infrastructure** are tools that consider a set of real remote sites being able to host several processes (= the nodes of the model) which communicate thanks to a real network with sockets. The **M**essage **P**assing **I**interface (MPI) is the most famous standard for message-oriented middleware and offers a large panel of communication primitives. This family brings a better representativeness of a real distributed system which allows to value experiments. However, the development is not trivial because :
- it is impossible to have a global view
- the network brings indeterminism in the message delivery order (making the debug phases harder)
- the settings are numerous and hard to fix
- it is usually impossible to run the experiment in a totally controlled infrastructure due to sharing with other users or unpredictable unavailability of system components
**Simulators** are centralized tools. Thanks to a configuration file, the user is able to describe a network (topology, links, latency ...) with its nodes that compose it (terminal, router ...) and simulate the execution of distributed applications inside a single process. Simulators simplify debug phases beacause they are determinist and offer a global view of the simulated system. However, they are limited if we want to consider large-scale system and/or reproduce the real world as faithfully as possible (e.g. by simulate lower layers of the network and the operating systems) leading to a very long simulation time.
**Simulators** are centralized tools. Thanks to a configuration file, the user is able to describe a network (topology, links, latency ...) with its nodes that compose it (terminal, router ...) and then can simulate the execution of distributed applications inside a single process. Simulators simplify debug phases because they are determinist and offer a global view of the simulated system. However, they are limited if we want to consider large-scale system and/or reproduce the real world as faithfully as possible (e.g. by simulating lower layers of the network and the operating systems) leading to a very long simulation time.
All these tools are complementary but it remains hard to switch from one to the other without changes of the specific code of experiments because each tool offer its own API wich can be in different programming languages. Consequently, DipLab helps the protocol experimenter to make these tools interchangeable without modify the experiment code.
All these tools are complementary but it remains hard to switch from one to the other without changes of the specific code of experiments because each tool offers its own API which could be in different programming languages. Consequently, DipLab helps the protocol experimenter to make these tools interchangeable without modifying the experiment code.
# Features
- Define distributed protocols with an event-based Java API
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment