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

Cue-based experiment configurations #139

Open
wants to merge 5 commits into
base: config-and-latency-cleanup
Choose a base branch
from

Conversation

meling
Copy link
Member

@meling meling commented Dec 22, 2024

The cue-based configuration allows to specify separate machines
for clients and replicas. Further, it allows to specify how many
replicas and clients should be placed on those machines. The Go
code takes care of assigning replicas and clients to machines
based on the number of replicas and clients specified in the config.
Furthermore, you may optionally specify locations where the replicas
should be placed (and corresponding latencies will be applied by
the latency framework). Finally, you may also specify treePositions
for the replicas; the treePositions refers to the positions in the
locations list, and follow a given format (root, left, right, left-left...)
Finally, you may also specify Byzantine strategies of the different
replicas in the locations list, by providing a map from strategy
name (slow, silent) to a list of replicas that exhibit this behavior.

Please see the schema.cue for specification of constraints, and the
code for details on how to use it within the framework.

The cue-based configuration allows to specify separate machines
for clients and replicas. Further, it allows to specify how many
replicas and clients should be placed on those machines. The Go
code takes care of assigning replicas and clients to machines
based on the number of replicas and clients specified in the config.
Furthermore, you may optionally specify locations where the replicas
should be placed (and corresponding latencies will be applied by
the latency framework). Finally, you may also specify treePositions
for the replicas; the treePositions refers to the positions in the
locations list, and follow a given format (root, left, right, left-left...)
Finally, you may also specify Byzantine strategies of the different
replicas in the locations list, by providnig a map from strategy
name (slow, silent) to a list of replicas that exhibit this behavior.

Please see the schema.cue for specification of constraints, and the
code for details on how to use it within the framework.
@meling meling changed the base branch from master to config-and-latency-cleanup December 22, 2024 10:29
We don't need to provide a latency file if we are not using the
locations field. We currently don't check if locations is provided
(so we still allow to provide the latenciesFile even though we
don't use it when locations isn't provided.)
This allows to specify also the branch factor to use for a given
tree configuration.
We no longer support providing latency file at runtime as part
of the config; we instead compile the hotstuff binary with the
appropriate latency file. Hence, you should run the latencygen
before running with a given configuration.

One issue is that the config file may contain location names that
don't match the csv latency file.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant