Skip to main content
QUICK REVIEW

[论文解读] Paxos Consensus, Deconstructed and Abstracted (Extended Version)

Álvaro García-Pérez, Alexey Gotsman|arXiv (Cornell University)|Feb 16, 2018
Distributed systems and fault tolerance参考文献 15被引用 4
一句话总结

本文通过将单决议Paxos分解为可组合的非确定性规范,并引入协议感知的网络变换,提出了一种模块化验证框架,用于Paxos共识协议。该方法基于已验证的单决议Paxos实现多决议Paxos的验证,支持可重用、可组合的证明,采用依赖/保证推理与预言变量及线性化点,实现行为保持不变的变换,从而保留客户端级别的语义。

ABSTRACT

Lamport's Paxos algorithm is a classic consensus protocol for state machine replication in environments that admit crash failures. Many versions of Paxos exploit the protocol's intrinsic properties for the sake of gaining better run-time performance, thus widening the gap between the original description of the algorithm, which was proven correct, and its real-world implementations. In this work, we address the challenge of specifying and verifying complex Paxos-based systems by (a) devising composable specifications for implementations of Paxos's single-decree version, and (b) engineering disciplines to reason about protocol-aware, semantics-preserving optimisations to single-decree Paxos. In a nutshell, our approach elaborates on the deconstruction of single-decree Paxos by Boichat et al. We provide novel non-deterministic specifications for each module in the deconstruction and prove that the implementations refine the corresponding specifications, such that the proofs of the modules that remain unchanged can be reused across different implementations. We further reuse this result and show how to obtain a verified implementation of Multi-Paxos from a verified implementation of single-decree Paxos, by a series of novel protocol-aware transformations of the network semantics, which we prove to be behaviour-preserving.

研究动机与目标

  • 为解决形式化指定的Paxos变体与其优化的、实际部署的实现之间日益扩大的差距。
  • 通过将单决议Paxos分解为独立可指定的组件,实现Paxos系统模块化、可组合的验证。
  • 提出一种通过重用已验证的单决议Paxos实现多决议Paxos的验证方法,利用行为保持不变的网络语义变换。
  • 支持协议感知的优化,而无需从头开始重新证明正确性,从而提升形式化验证的可扩展性。
  • 为验证Paxos以外的其他共识协议(如Raft和PBFT)提供基础。

提出的方法

  • 借鉴Boichat等人抽象思想,使用类共享内存风格模块将单决议Paxos进行解构,采用非确定性规范。
  • 提出新颖的基于寄存器的非确定性规范,用于提案者与接受者角色,支持模块化细化证明。
  • 应用依赖/保证推理,结合预言变量与显式线性化点,证明实现能够细化其规范。
  • 定义一组协议感知的网络语义变换,确保在组合多个Paxos实例时保持客户端可见行为。
  • 通过将这些变换应用于已验证的单决议Paxos系统,构建一个已验证的多决议Paxos实现。
  • 通过一个可执行原型验证该方法,该原型暴露一个高层级的类共享内存接口。

实验结果

研究问题

  • RQ1如何将单决议Paxos分解为可组合的、可独立验证的组件,并采用非确定性规范?
  • RQ2在规范中引入非确定性后,如何仍能为顶层共识抽象提供强正确性保证?
  • RQ3如何形式化定义协议感知的网络变换,以在组合多个Paxos实例时保持客户端行为?
  • RQ4能否通过重用已验证的单决议Paxos实现的证明,构建一个已验证的多决议Paxos实现?
  • RQ5该方法论在多大程度上可推广至其他共识协议,如Raft或PBFT?

主要发现

  • 作者成功定义了单决议Paxos中提案者与接受者模块的可组合、非确定性规范,支持通过依赖/保证推理实现模块化验证。
  • 预言变量与线性化点的使用,使得即使在非确定性规范下,也能对每个组件进行模块化、独立的正确性证明。
  • 本文建立了形式化框架,用于行为保持不变的网络变换,使得无需重新证明共识性质,即可从已验证的单决议Paxos构建多决议Paxos。
  • 通过这些变换实现了一个高层级、可执行的多决议Paxos原型,证明了该方法的可行性与模块化特性。
  • 该方法论支持在不同实现间重用证明,显著减少了验证优化Paxos变体所需的工作量。
  • 该框架具有可扩展性,可应用于Paxos以外的协议,具有验证Mencius、Raft和PBFT等协议的潜力。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。