Increasing Performance in Byzantine Fault-Tolerant Systems with On-Demand Replica Consistency
Tobias Distler and R¨ udiger Kapitza
System Software Group Friedrich-Alexander University Erlangen-Nuremberg
EuroSys April 11, 2011
supported by
Increasing Performance in Byzantine Fault-Tolerant Systems with - - PowerPoint PPT Presentation
Increasing Performance in Byzantine Fault-Tolerant Systems with On-Demand Replica Consistency Tobias Distler and R udiger Kapitza System Software Group Friedrich-Alexander University Erlangen-Nuremberg EuroSys April 11, 2011 supported by
System Software Group Friedrich-Alexander University Erlangen-Nuremberg
supported by
3f + 1 replicas to tolerate f faults BFT agreement protocol Client-side voting
High resource usage Performance overhead for agreement
Replica0 Replica1 Replica2 Replica3 Client
[Castro et al., Practical Byzantine fault tolerance, OSDI ’99]
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 2
Reduced number of replicas Same performance Recent examples
SPARE [Distler et al., NDSS ’11] ZZ [Wood et al., EuroSys ’11]
Default number of replicas Increased performance
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 3
BFT agreement protocol Sequence of agreed requests
Service application Request processing
Agreement0 Execution0 Agreement1 Execution1 Agreement2 Execution2 Agreement3 Execution3 Client
[Yin et al., Separating agreement from execution for Byzantine fault tolerant services, SOSP ’03]
Past optimizations have significantly reduced agreement overhead Non-trivial services: response times are dominated by execution stage
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 4
All 3f + 1 replicas process all requests Client waits for f + 1 identical replies
Each request is processed by only f + 1 replicas Load distribution across replicas Additional replicas process the request in case of faults
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 5
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 6
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 7
Selects requests for execution Stores requests that have not been selected
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 8
Examples: files, directories, ... Assumption: requests carry information about object access
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client State Objects
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 9
Each object is maintained on f + 1 replicas, unmaintained on others State of unmaintained objects may be outdated
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client Maintained Objects
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 10
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
Periodic object checkpoints of maintained objects Stable checkpoint: f + 1 identical checkpoints
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 11
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc()
Periodic object checkpoints of maintained objects Stable checkpoint: f + 1 identical checkpoints
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 11
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc()
Periodic object checkpoints of maintained objects Stable checkpoint: f + 1 identical checkpoints
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 11
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc()
1 1
Periodic object checkpoints of maintained objects Stable checkpoint: f + 1 identical checkpoints
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 11
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc() inc() inc()
1 1
Periodic object checkpoints of maintained objects Stable checkpoint: f + 1 identical checkpoints
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 11
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc() inc() inc()
1 1
Periodic object checkpoints of maintained objects Stable checkpoint: f + 1 identical checkpoints
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 11
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc()
1 1 1 1
Periodic object checkpoints of maintained objects Stable checkpoint: f + 1 identical checkpoints
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 11
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 12
Only unmaintained objects ⇒ store request At least one maintained object
Update unmaintained objects Process request Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc()
1 1 1 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 13
Only unmaintained objects ⇒ store request At least one maintained object
Update unmaintained objects Process request Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc() inc() inc() inc() inc()
1 1 1 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 13
Only unmaintained objects ⇒ store request At least one maintained object
Update unmaintained objects Process request Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc() inc() inc() inc() inc()
1 1 1 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 13
Only unmaintained objects ⇒ store request At least one maintained object
Update unmaintained objects Process request Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc() inc() inc() inc() inc()
1 1 1 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 13
Only unmaintained objects ⇒ store request At least one maintained object
Update unmaintained objects Process request Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc() inc() inc() inc()
1 1 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 13
Only unmaintained objects ⇒ store request At least one maintained object
Update unmaintained objects Process request Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc() inc() inc() inc()
1 1 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 13
Only unmaintained objects ⇒ store request At least one maintained object
Update unmaintained objects Process request Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc() inc() inc() inc()
1 1 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 13
Only unmaintained objects ⇒ store request At least one maintained object
Update unmaintained objects Process request Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc() inc() inc()
1 1 1 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 13
Only unmaintained objects ⇒ store request At least one maintained object
Update unmaintained objects Process request Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc() inc() inc()
1 1 1 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 13
Only unmaintained objects ⇒ store request At least one maintained object
Update unmaintained objects Process request Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc() inc()
1 1 2 1 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 13
Only unmaintained objects ⇒ store request At least one maintained object
Update unmaintained objects Process request Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc() inc()
1 1 2 1 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 13
Only unmaintained objects ⇒ store request At least one maintained object
Update unmaintained objects Process request Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc()
1 1 2 1 2 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 13
Only unmaintained objects ⇒ store request At least one maintained object
Update unmaintained objects Process request Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
inc() inc() inc() inc()
1 1 2 1 2 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 13
Processed by more than f+1 replicas Goal: minimize number of cross-border requests
Application-centric strategies Consider object dependencies
Selector0 Selector1 Selector2 Selector3
Assign files and their parent directories to the same replicas Subdirectories may be assigned to different replicas
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 14
Standard BFT clients Request retransmission after timeout Additional replicas process the request
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
Replies
inc() inc() inc() inc()
8 1 2 1 2 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 15
Standard BFT clients Request retransmission after timeout Additional replicas process the request
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
Replies
inc() inc() inc() inc()
8 1 2 1 2 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 15
Standard BFT clients Request retransmission after timeout Additional replicas process the request
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
Replies
inc() inc() inc() inc() force force force force
8 1 2 1 2 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 15
Standard BFT clients Request retransmission after timeout Additional replicas process the request
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
Replies
inc() inc() inc() inc()
8 1 2 1 2 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 15
Standard BFT clients Request retransmission after timeout Additional replicas process the request
Agreement0 Selector0 Execution0 Agreement1 Selector1 Execution1 Agreement2 Selector2 Execution2 Agreement3 Selector3 Execution3 Client
Replies
inc() inc()
8 1 2 1 1 2 1 1 2 1
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 15
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 16
BFT Unreplicated NFS ODRC 4 replicas (f=1), write-mostly workload
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 17
BFT Unreplicated NFS ODRC ODRC (optimized distribution) 4 replicas (f=1), write-mostly workload
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 17
4 ODRC replicas 20 clients
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 18
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 19
All replicas process all requests Consistency overhead
Selective request execution based on object access On-demand replica consistency Additional replies in case of faults
Tobias Distler (distler@cs.fau.de) Increasing Performance in BFT Systems with ODRC 20