It's early Sunday morning... so...
Let's read a paper! "The Impact of RDMA on agreement"!
https://arxiv.org/abs/1905.12143
Here we start with the authors toting a really cool feature of RDMA I didn't know about?
Let's read a paper! "The Impact of RDMA on agreement"!
https://arxiv.org/abs/1905.12143
Here we start with the authors toting a really cool feature of RDMA I didn't know about?
So, RDMA remote memory isn't *exactly* reliable. They seem to get around this with Byzantine Fault Tolerance, which is a good idea!
BFT typically has a lot of message passing though, which increases the Round-Trip-Times, which kills high performance systems.
BFT typically has a lot of message passing though, which increases the Round-Trip-Times, which kills high performance systems.
Here they explain RDMA supplies an ability to revoke write permission of other processes, ensuring you have uncontended writes to that memory.
I'm sure the authors were chuckling to themselves when they got to figure out how to make LaTeX properly Skull 'n Crossbone something.
Blah blah blah, okay cool they made a single writer multi reader region type.
So in Rust we get 1 &mut **xor** many &'s...
(iirc this paper is related: https://homes.cs.washington.edu/~djg/papers/cyclone_memory.pdf)
In this you could have &mut **and** &'s.
So in Rust we get 1 &mut **xor** many &'s...
(iirc this paper is related: https://homes.cs.washington.edu/~djg/papers/cyclone_memory.pdf)
In this you could have &mut **and** &'s.

Here the authors spend a bit of time explaining that there is a way to change permissions of a region of memory, and they have that call some functionality to ensure that change is a change which the responsible party is allowed to make.
The authors are nice and explain k-deciding to us here, so when they measure performance later we might get it.
The authors tease Robust Backup here, which can be used for fairly traditional shared memory models (read: your computer) while providing BFT resilience. 
Next they explain Cheap Quorum, which is described at least here as basically a short cut.

Next they explain Cheap Quorum, which is described at least here as basically a short cut.
"Processes include their full history with each message" catches my eye here. Are these processes intended to be short lived? Would we reach a case where each message would have some enormous costs?!
Here the authors help us correctly understand the Non-equivocating broadcasts that Clement et al wrote of.
Basically, they're using a counter that gets increased by one each step, and can never go down. This is a technique I've seen before!
Basically, they're using a counter that gets increased by one each step, and can never go down. This is a technique I've seen before!
The authors get into nuts and bolts, then go onto define some theorems/lemmas.
They show their SWMR registers can implement the Non-Equivocating broadcast we saw earlier, and that this means they can do Byzantine Agreement.
They show their SWMR registers can implement the Non-Equivocating broadcast we saw earlier, and that this means they can do Byzantine Agreement.
Now let's look at that other one, Cheap Quorum!
It seems this one has an "abort" value that can initialize Robust Backup. It does this on a timeout.
It seems this one has an "abort" value that can initialize Robust Backup. It does this on a timeout.

Here we get a cute diagram that you can tell someone really didn't enjoy making with LaTeX.
You can tell because the authors do not show any input into the system.
They define a bunch more implementation details around selecting which algorithm to use etc. Let's skip it...
You can tell because the authors do not show any input into the system.

They define a bunch more implementation details around selecting which algorithm to use etc. Let's skip it...
... Because in this section we talk about using this in situations where we're only worried about failures, not, for example, nodes impersonating other nodes.
This is great, since a lot of that stuff beforehand with the signatures and non-equivocation was expensive!
This is great, since a lot of that stuff beforehand with the signatures and non-equivocation was expensive!
Here we see a Paxos variant where the memories themselves can be treated as agents equivalent to the processes? Interesting...
In section 6, the authors explain that dynamic permissions are indeed necessary.
They use a proof by contradiction, which is a good strategy here. Find one instance that breaks the proof.
They use a proof by contradiction, which is a good strategy here. Find one instance that breaks the proof.
Section 7 offers us a look at RDMA, what it is, and how it works.
Anyways! I hope you had fun reading along, I really liked this paper.
Anyways! I hope you had fun reading along, I really liked this paper.
Want to share a paper with me that you think I might like? https://twitter.com/messages/compose?recipient_id=283372394