Skip to content
This repository has been archived by the owner on Oct 4, 2022. It is now read-only.

Commit

Permalink
save
Browse files Browse the repository at this point in the history
  • Loading branch information
glouppe committed Aug 9, 2022
1 parent 4de1bbf commit 8f98faa
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 8 deletions.
17 changes: 17 additions & 0 deletions lecture2.md
Original file line number Diff line number Diff line change
Expand Up @@ -671,6 +671,23 @@ Assuming a crash-stop process abstraction, the **perfect detector** encapsulates

???

Degrees of completeness
The degrees of completeness depend on the number of crashed process is suspected by a failure detector in a certain period.[5]

- Strong completeness: "every faulty process is eventually permanently suspected by every non-faulty process."[6]
- Weak completeness: "every faulty process is eventually permanently suspected by some non-faulty process."[6]

Degrees of accuracy
The degrees of accuracy depend on the number of mistakes that a failure detector made in a certain period.[5]

- Strong accuracy: "no process is suspected (by anybody) before it crashes."[6]
- Weak accuracy: "some non-faulty process is never suspected."[6]
- Eventual strong accuracy: "no non-faulty process is suspected after some time since the end of the initial period of chaos as the time at which the last crash occurs."[6]
- Eventual weak accuracy: "after some initial period of confusion, some non-faulty process is never suspected."[6]


<br>

- PFD1. Strong completeness: liveness
- PFD2. Strong accuracy: safety

Expand Down
8 changes: 7 additions & 1 deletion lecture3.md
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,12 @@ class: middle

.exercise[Show that eager reliable broadcast is correct.]

???

Hence, RB can be implemented in asynchronous systems (see Lecture 2, slide 23).

Insist on the fact that different distributed system models assumptions lead to distinct implementations.

---

# Uniformity
Expand Down Expand Up @@ -439,7 +445,7 @@ causally preceding messages `mpast`.

???

.exercise[Show the correctness of the algorithm.]
Every process $p$ maintains a vector clock $V$ such that entry $V [ rank (q)]$ represents the number of messages that $p$ has crb-delivered from process $q$.

---

Expand Down
21 changes: 14 additions & 7 deletions lecture7.md
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ class: middle

The distance between two identifiers is defined as $$d(x, y) = x \oplus y.$$
- XOR is a valid, albeit non-Euclidean metric.
- XOR captures the notion of distance between two identifiers: in a fully-populated binary tree of 160-bit IDs, it is the height of the smallest subtree containing them both.
- XOR captures the notion of distance between two identifiers: in a fully-populated binary tree of 160-bit IDs, the magnitude of the distance is the height of the smallest subtree containing them both.
- XOR is symmetric.
- XOR is unidirectional.

Expand All @@ -433,13 +433,8 @@ class: middle

## Node state

- For every prefix of size $0 \leq i < 160$, every node keeps a list, called a **k-bucket**, of (IP address, Port, ID) for nodes of distance between $2^i$ and $2^{i+1}$ of itself.
- For each $0 \leq i < 160$, every node keeps a list, called a **k-bucket**, of (IP address, Port, ID) for nodes of distance between $2^i$ and $2^{i+1}$ of itself.
- Every k-bucket is sorted by time last seen (least recently seen first).
- When a node receives a message, it updates the corresponding k-bucket for the sender's identifier. If the sender already exists, it is moved to the tail of the list.
- If the k-bucket is full, the node pings the **least recently** seen node and checks if it is still available.
- Only if the node is **not available** it will replace it.
- If available, the node is pushed back at the end of the bucket.
- Policy of replacement only when a nodes leaves the network $\rightarrow$ prevents Denial of Service (DoS) attacks (e.g., flushing routing tables).

---

Expand Down Expand Up @@ -562,6 +557,18 @@ The routing table is an (unbalanced) binary tree whose leaves are $k$-buckets.

class: middle

## Update

When a node receives a message, it updates the corresponding k-bucket for the sender's identifier. If the sender already exists, it is moved to the tail of the list.
- If the k-bucket is full, the node pings the **least recently** seen node and checks if it is still available.
- Only if the node is **not available** it will replace it.
- If available, the node is pushed back at the end of the bucket.
- Policy of replacement only when a nodes leaves the network $\rightarrow$ prevents Denial of Service (DoS) attacks (e.g., flushing routing tables).

---

class: middle

## Dynamic construction of the routing table

- The routing tables are allocated dynamically as node receive requests.
Expand Down

0 comments on commit 8f98faa

Please sign in to comment.