Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mir Diagnostics and Fault Injection (mircat) #220

Open
matejpavlovic opened this issue Sep 12, 2022 · 0 comments
Open

Mir Diagnostics and Fault Injection (mircat) #220

matejpavlovic opened this issue Sep 12, 2022 · 0 comments
Labels
project Big task that can be addressed as a small stand-alone project SDK Debugging and analytics tools, e.g., creation / inspection of event logs, profiling...

Comments

@matejpavlovic
Copy link
Contributor

matejpavlovic commented Sep 12, 2022

Background: The Mir Project

The Mir project aims at developing a production-quality implementation of:

  • a general framework for easily implementing distributed protocols
  • a Byzantine fault-tolerant consensus protocol using the framework.

This implementation (in the Go language) will be available as the open-source mir library.
Our aim is integration with the Eudico Filecoin client,
specifically its ordering service.
Being framed as a library, however, Mir's goal is also to serve as a general-purpose high-performance BFT component of other projects.

The first fault-tolerant consensus protocol implemented within mir is a variant of ISS (next generation of the MirBFT consensus protocol, that appeared at EuroSys22 as State Machine Replication Scalability Made Simple). However, the framework is general enough to facilitate the implementation of other distributed protocols in the future. The framework is highly modular, allowing the developer of the distributed protocol to focus on the protocol logic, without having to care about network transport, storage, and cryptographic primitives, etc.
At the same time, the high modularity facilitates creating custom protocol implementations tailored to the consumer's needs. Mir hopes to be a building block of a next generation of distributed systems.

The mir library is still in development. This project is one of the ways to improve it by adding support for easily analyzing and testing protocols developed with mir.

The mircat Diagnostics Tool

Part of the mir framework are tools that facilitate implementation and diagnostics of distributed protocols. The main such tool, mircat, should be able to record traces of events occurring at a node in the distributed network, analyze those traces, edit them (or even construct new artificial ones), and replay them to a node in debug mode. Such a tool greatly improves the development, testing and debugging of protocols built using mir.

Currently, mircat only has very rudimentary features: printing a list of events, potentially applying a simple filter on it. The goal of this project is to extend mircat by the above-mentioned features.

To implement the missing features of mircat, it is necessary need to:

  • Become familiar with the existing code base and understand the event-handling mechanism of mir.
  • Identify concrete features for analyzing traces of these events.
  • Implement those features.
  • Extend the main mir code to support replaying recorded events in a way that maximizes the insights into the inner workings of mir and protocols built on top of it.

Expected Outcomes

The mircat analysis tool that can:

  • Display the event trace in an insightful manner (basic functionality already present, the focus here is on "insightful").
  • Simulate the occurrence of these events to a mir node (rudimentary implementation present, improvement required).
  • Create / edit artificial event traces to test the node's behavior in specific scenarios, expecially in presence of a malicious adversary.

Skills

Required:

  • Experience in programming in the Go programming language
  • Basic knowledge of the usage of the Git version control system.
  • Understanding of distributed systems theory and consensus protocols
  • Proficiency in the English language

Contact Info

@matejpavlovic matejpavlovic added the project Big task that can be addressed as a small stand-alone project label Sep 12, 2022
@matejpavlovic matejpavlovic changed the title Mir Diagnostics and Fault Injection Mir Diagnostics and Fault Injection (mircat) Sep 12, 2022
@matejpavlovic matejpavlovic added the SDK Debugging and analytics tools, e.g., creation / inspection of event logs, profiling... label Apr 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
project Big task that can be addressed as a small stand-alone project SDK Debugging and analytics tools, e.g., creation / inspection of event logs, profiling...
Projects
None yet
Development

No branches or pull requests

1 participant