SlideShare a Scribd company logo
Kamil Jeřábek
& Vladimír Veselý
2019
One of the Ways How to
Make RIB Distributed
RAFT
▪ What is RAFT?
▪ Consensus algorithm
▪ Solves fundamental problem in fault-tolerant distributed
system
▪ Multiple servers agree on value
One of the Ways How to Make RIB Distributed
RAFT
▪ Why we chose RAFT?
▪ Understable version of Paxos
▪ Easy to implement
▪ The same fault-tolerance and performance guarantees
▪ Suitable for RINA environment and RPC
communication
▪ Already used in databases like InfluxDB
One of the Ways How to Make RIB Distributed
RAFT RPCs
▪ RequestVotes
▪ Send by Candidates during Leader election to gather
votes
▪ AppendEntries
▪ Sent by Leader for log replication
▪ Also sent by Leader as an HeartBeat to reset timers
One of the Ways How to Make RIB Distributed
Leader Election
▪ Based on the timer expiration
▪ Presumption that all nodes are equal
One of the Ways How to Make RIB Distributed
Follower
Timeout:
300ms
Follower
Timeout:
200ms
Follower
Timeout:
150ms
Leader Election
▪ Based on the timer expiration
▪ Presumption that every nodes are equal
One of the Ways How to Make RIB Distributed
Follower
Timeout:
300ms
Follower
Timeout:
200ms
Candidate
Timeout:
150ms
Vote for itself
Request vote Request vote
Leader Election
▪ Based on the timer expiration
▪ Presumption that every nodes are equal
One of the Ways How to Make RIB Distributed
Follower
Timeout:
300ms
Follower
Timeout:
200ms
Candidate
Timeout:
150ms
Grant votes Grant votes
Majority votes
Leader Election
▪ Based on the timer expiration
▪ Presumption that every nodes are equal
One of the Ways How to Make RIB Distributed
Follower
Timeout:
300ms
Follower
Timeout:
200ms
Leader
Timeout:
150ms
Log Replication
▪ Each client request is stored in the Leader’s log
▪ Leader replicate new log entries to the Followers
▪ Command
▪ Sent by the client to be executed
▪ Index
▪ Position identifier in the log
▪ Term Number
▪ Identification of the time of the command
One of the Ways How to Make RIB Distributed
Client Request
One of the Ways How to Make RIB Distributed
Follower
Timeout:
300ms
Follower
Timeout:
200ms
Leader
Timeout:
150ms
Client
Request
Response
RAFT RINA Approach
▪ Not possible to use current RAFT implementation
▪ RINA RPC commands as RAFT client commands
▪ RAFT Leader shared during Enrollment phase
▪ RIB
▪ RPC commands stored in RAFT log
One of the Ways How to Make RIB Distributed
RAFT module
▪ Current state of the Application Process
▪ RAFT provided as compound module within RIBDaemon
▪ Management of objects in RIB
▪ Replication and updates primarily using Management AE
One of the Ways How to Make RIB Distributed
Demonstration Topology
▪ Topology of 5 nodes
▪ 4 nodes RAFT synced
▪ 1 client node
One of the Ways How to Make RIB Distributed
Questions?
Questions?
One of the Ways How to Make RIB Distributed

More Related Content

One of the Ways How to Make RIB Distributed

  • 1. Kamil Jeřábek & Vladimír Veselý 2019 One of the Ways How to Make RIB Distributed
  • 2. RAFT ▪ What is RAFT? ▪ Consensus algorithm ▪ Solves fundamental problem in fault-tolerant distributed system ▪ Multiple servers agree on value One of the Ways How to Make RIB Distributed
  • 3. RAFT ▪ Why we chose RAFT? ▪ Understable version of Paxos ▪ Easy to implement ▪ The same fault-tolerance and performance guarantees ▪ Suitable for RINA environment and RPC communication ▪ Already used in databases like InfluxDB One of the Ways How to Make RIB Distributed
  • 4. RAFT RPCs ▪ RequestVotes ▪ Send by Candidates during Leader election to gather votes ▪ AppendEntries ▪ Sent by Leader for log replication ▪ Also sent by Leader as an HeartBeat to reset timers One of the Ways How to Make RIB Distributed
  • 5. Leader Election ▪ Based on the timer expiration ▪ Presumption that all nodes are equal One of the Ways How to Make RIB Distributed Follower Timeout: 300ms Follower Timeout: 200ms Follower Timeout: 150ms
  • 6. Leader Election ▪ Based on the timer expiration ▪ Presumption that every nodes are equal One of the Ways How to Make RIB Distributed Follower Timeout: 300ms Follower Timeout: 200ms Candidate Timeout: 150ms Vote for itself Request vote Request vote
  • 7. Leader Election ▪ Based on the timer expiration ▪ Presumption that every nodes are equal One of the Ways How to Make RIB Distributed Follower Timeout: 300ms Follower Timeout: 200ms Candidate Timeout: 150ms Grant votes Grant votes Majority votes
  • 8. Leader Election ▪ Based on the timer expiration ▪ Presumption that every nodes are equal One of the Ways How to Make RIB Distributed Follower Timeout: 300ms Follower Timeout: 200ms Leader Timeout: 150ms
  • 9. Log Replication ▪ Each client request is stored in the Leader’s log ▪ Leader replicate new log entries to the Followers ▪ Command ▪ Sent by the client to be executed ▪ Index ▪ Position identifier in the log ▪ Term Number ▪ Identification of the time of the command One of the Ways How to Make RIB Distributed
  • 10. Client Request One of the Ways How to Make RIB Distributed Follower Timeout: 300ms Follower Timeout: 200ms Leader Timeout: 150ms Client Request Response
  • 11. RAFT RINA Approach ▪ Not possible to use current RAFT implementation ▪ RINA RPC commands as RAFT client commands ▪ RAFT Leader shared during Enrollment phase ▪ RIB ▪ RPC commands stored in RAFT log One of the Ways How to Make RIB Distributed
  • 12. RAFT module ▪ Current state of the Application Process ▪ RAFT provided as compound module within RIBDaemon ▪ Management of objects in RIB ▪ Replication and updates primarily using Management AE One of the Ways How to Make RIB Distributed
  • 13. Demonstration Topology ▪ Topology of 5 nodes ▪ 4 nodes RAFT synced ▪ 1 client node One of the Ways How to Make RIB Distributed
  • 14. Questions? Questions? One of the Ways How to Make RIB Distributed