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