copilot

module
v0.0.0-...-7c35310 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 18, 2021 License: Apache-2.0

README

Copilot

What is Copilot?

Copilot replication is the first 1-slowdown-tolerant consensus protocol: it delivers normal latency despite the slowdown of any 1 replica.

What makes Copilot novel?

No existing consensus protocol is slowdown-tolerant: a single slow replica can sharply increase their latency. Copilot is the first 1-slowdown-tolerant consensus protocol. It avoids slowdowns using two distinguished replicas, the pilot and copilot. Its pilot and copilot both receive, order, execute, and reply to all client commands. It uses this proactive redundancy and a fast takeover mechanism that allows a fast pilot to safely complete the work of a slow pilot to provide slowdown tolerance.

It has two optimizations—ping-pong batching and null dependency elimination—that improve its performance when there are 0 and 1 slow pilots respectively. Despite its redundancy, Copilot replication's performance is competitive with existing consensus protocols when no replicas are slow. When a replica is slow, Copilot is the only consensus protocol that avoids high latencies for client commands.

How does Copilot work?

Our OSDI 2020 paper describes the motivation, design, implementation, and evaluation of Copilot.

What is Latent Copilot?

Latent Copilot, a variant of Copilot, is another design and implementation of a 1-slowdown-tolerant consensus protocol. Latent Copilot operates with one active pilot, which actively proposes commands, and one latent pilot, which proposes commands only when they have not been committed by the active pilot in a timely manner. In this way, Latent Copilot achieves an intermediate tradeoff between MultiPaxos and Copilot in terms of throughput and slowdown tolerance.

Latent Copilot has different mechanisms to determine when a pilot should switch its mode if it suspects the other pilot is continually slow or fast. To learn about the progress of the other pilot, a pilot uses additional metadata embedded in the ordering messages to learn about the status of the commands from the replicas.

For more details about Latent Copilot, please refer to Ngo's Ph.D. dissertation.

What is in this repository?

This repository contains the Go implementations of:

  • Copilot

  • Latent Copilot

  • EPaxos

  • (classic) Paxos

  • Mencius

  • Generalized Paxos

The implementations of EPaxos, MultiPaxos, Mencius, and Generalized Paxos were created by Iulian Moraru, David G. Andersen, and Michael Kaminsky as part of the EPaxos project.

The struct marshaling and unmarshaling code was generated automatically using the tool available at: https://code.google.com/p/gobin-codegen/

AUTHORS:

Khiem Ngo -- Princeton University

Siddhartha Sen -- Microsoft Research

Wyatt Lloyd -- Princeton University

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL