RobustIRC
or: IRC without Netsplits
Axel Wagner, Michael Stapelberg
Outline
Background
Motivation
Idea
Overview
Overview (communication architecture)
IRC client 1
IRC client 2
IRC client n
…
bridge 1
bridge 2
bridge m
…
IRC
RobustIRC
IRC over
RobustSession
RobustSession protocol
Raft
„Raft is a consensus algorithm […] It was meant to be more understandable than Paxos […], but it is also formally proven safe and offers some new features.
Raft offers a generic way to distribute a state machine across a cluster of computing systems, ensuring that each node in the cluster agrees upon the same series of state transitions.“
Raft (briefly)
Raft network
A
C
B
Client
6ms
8ms
Raft (usage)
→ each server computes the same state�→ same state will be generated after a replay
Overview (data processing)
POST message
client
replicate to
leader
ircServer.Process
leader
OutputStream
GET messages
client(s)
followers
leader
followers
1
2
3
(quorum)
(rest)
e.g. “JOIN #i3”
e.g. “:stapelberg JOIN #i3”
Deletion of old messages
NICK sECuRE_
JOIN #i3
NICK sECuRE
PRIVMSG #i3 :hey
NICK sECuRE_
JOIN #i3
NICK sECuRE
PRIVMSG #i3 :hey
Deletion of old messages(2)
NICK sECuRE_
JOIN #i3
TOPIC #i3 :ohai
NICK sECuRE
NICK sECuRE_
JOIN #i3
TOPIC #i3 :ohai
NICK sECuRE
:robustirc.net 332 mero #i3 :ohai
:robustirc.net 333 mero #i3 sECuRE_ 1422312312
Deletion of old messages(3)
NICK sECuRE_
JOIN #i3
TOPIC #i3 :ohai
NICK sECuRE
TOPIC #i3 :bye
NICK sECuRE_
JOIN #i3
TOPIC #i3 :ohai
NICK sECuRE
TOPIC #i3 :bye
fine print
conclusion
Demo
Demo!