What Can Be Implemented Anonymously ?
description
Transcript of What Can Be Implemented Anonymously ?
1
What Can Be Implemented Anonymously ?
Paper by Rachid Guerraui and Eric Ruppert
Presentation by Amir Anter
2
Talk outline What is anonymously ? Motivation Anonymously implementation Counter Snapshot Consensus Summary
3
Talk outline What is anonymously ? Anonymously implementation Counter Snapshot Consensus Summary
4
What is anonymously ? There is no unique identifiers for the
processes.
5
Leader election in rings
• Each process has to decide whether it is a leader or not• Termination states are partitioned to elected and not-elected.• In every execution, exactly one process enters an elected state, all others enter a non-elected state.• We assume rings are oriented.
p0
p1p2
1
1
1
2
2
2
6
Leader election in anonymous rings
• A ring algorithm is anonymous if processes don’t have an ID they can use in the algorithm (all perform the same code)An anonymous leader election algorithm is… Impossible!!
p0
p1p2
1
1
1
2
2
2
7
Motivation Sensor networks – Might not have id’s Privacy:
Web servers Peer-to-peer sharing systems
8
Talk outline What is anonymously? Anonymously implementation Weak Counter Snapshot Consensus Summary
9
Anonymously Implementation Number of processes is know – n. Shared memory – multi-reader, multi-writer. Using registers Crash failures may occur Deterministic Asynchronous
10
Wait freedomDefinition:
An algorithm is wait-free if a process invoking it will finish after a finite number of steps
11
Talk outline What is anonymously? Anonymously implementation Weak Counter Snapshot Consensus Summary
12
Atomic CounterRead-Modify-Write operation:
Fetch-and-add(w, d)do atomically prev:=w w:= prev+d return prev
13
Atomic Counter
Example: the sequential spec of a counter
H0: H1: c.f&i() c:0H2: c.f&i() c:0 c.f&i() c:1 H3: c.f&i() c:0 c.f&i() c:1 c.f&i() c:2H4: c.f&i() c:0 c.f&i() c:1 c.f&i() c:2 c.f&i() c:3
.
.
.
14
Atomic Counter It has been shown by Herlihy that fetch&
increment object has no wait-free implementation from registers, even for the non anonymous case.
15
Anonymous Counter
So how can we implement a counter only from registers and also
anonymously ?!
16
Weak Counters Single operation: GetTimestamp
Returns an integer Properties:
Let GetTimestamp(t) = x, GetTimestamp(t’)=x’, If t≥t’ then x ≥x’.
If GetTimestamp was invoked n times then each of those invocation returned a value x ≤n.
Weaker version of fetch&increment. Strong enough for our purposes.
17
Weak CountersExample: the sequential spec of a weak counter
H0: H1: c.f&i() c:0H2: c.f&i() c:0 c.f&i() c:1 H3: c.f&i() c:0 c.f&i() c:1 c.f&i() c:1H4: c.f&i() c:0 c.f&i() c:1 c.f&i() c:1 c.f&i() c:2 ...
18
Weak Counters• Array A[1,2,…] of binary registers.
• Initially each register A[i]=0.• Invariant:
• If A[k]=1, then all entries A[1..k]=1.
1 2 3 4A 1 1 1 0 0 0
19
Weak Counters1 2 3 4
A 0 0 0 0 0 0
20
Weak Counters
a- Last location returned by the process’s previous
GetTimestamp operation.
21
Weak Counters
L- Shared register initialized to 0.- When process change some A[b] to 1, it also writes b to L.
22
Weak Counters
j- Local variable- The number of times the process has seen L changes.
23
Weak Counters
t- Local variable- The largest value the process has seen in L.
24
Weak Counters
1 2 3 4A 1 1 0 0 0 0
• Line 3, iteration # 1: a=1 , b=2 , l=2• A[2]=1
25
Weak Counters
1 2 3 4A 1 1 0 0 0 0
• Line 3, iteration # 2: a=1 , b=4 , l=2• A[4]=0
26
Weak Counters
1 2 3 4A 1 1 0 0 0 0
• Line 11, iteration # 1: a=1 , b=4• mid=2• A[2]=1 a=3
27
Weak Counters
1 2 3 4A 1 1 0 0 0 0
• Line 11, iteration # 2: a=3 , b=4• mid=3• A[3]=0 b=3
28
Weak Counters
1 2 3 4A 1 1 1 0 0 0
• Line 11, iteration # 3• a=3=b A[3]=1 , L=3
29
Weak Counters• Wait freedom
The second loop stops – binary search. The first loop stops
If j≥n then return t• In any finite execution in which k GetTimestamp
operations are invoked: O(k) registers are accessed. Any operation takes O(log k).
30
Weak Counters
31
Talk outline What is anonymously? Anonymously implementation Weak Counter Snapshot Consensus Summary
32
Snapshot object R[1…n] registers Operations
Scan Returns a vector V, where V is an n-element vector
called a view (with a value for each segment). Update(d)
Process i writes d to R[i]
V[i] must return the value of the latest Updatei operation (or the initial value if there were none)Scan returns a snapshot of the segments array that existed at some point during the execution!
A wait-free simulation of atomic snapshot
33
Initially segment[i].ts=0, segment[i].data=vi, segment[i].view=<v0, …, vn-1>
Scani(S)1. for all j <> i c[j]=Segment[j]2. while true do3. for all j a[j] = Segment[j]4. for all j b[j] = Segment[j]5. if, for all j a[j]=b[j] ; Comparison includes timestamp!6. return <b[0].data, …, b[n-1].data> ; Direct scan7. else if, for some j ≠ i, b[j].ts - c[j].ts ≥ 28. return b[j].view ; Indirect scan
Updatei(S, d)1. view:=scan()2. Segment[i]=<segment[i].ts+1, d, view>
34
Anonymous snapshot object R[1…m] registers Operations
Scan Returns a vector V, where V is an m-element vector
called a view (with a value for each segment). Update(i,x)
Writes x to R[i]
35
Anonymous snapshot object
36
Anonymous snapshot object
The algorithm is anonymous and wait-free. The average number of steps per operation in
any finite execution is2( )O m n
37
Talk outline What is anonymously? Anonymously implementation Weak Counter Snapshot Consensus Summary
38
Consensus Object
© 2003 Herlihy and Shavit 13
The Consensus object: each process has a private input
32 1921
© 2003 Herlihy and Shavit 15
They Agree on Some Process’ I nput
1919 19
39
Formally: Consensus Object- Supports a single operation: decide- Each process pi calls decide with some input vi from some domain. decide returns a value from the same domain.- The following requirements must be met:
Agreement: In any execution E, all decide operations must return the same value.Validity: The values returned by the operations must equal one of the inputs.
FIFO queue + registers can implement 2-process consensus
40
Decide(v) ; code for pi, i=0,11. Prefer[i]:=v2. qval=Q.deq()3. if (qval = 0) then return v4. else return Prefer[1-i]
Initially Q=<0> and Prefer[i]=null, i=0,1
There is a proof that wait-free consensus for 2 or more processes cannot be solved by registers.
41
Anonymous Consensus
So how can we implement it only from registers and also anonymously ?!
42
Obstruction freedom Obstruction-freedom guarantees that a
process will complete its algorithm whenever it has an opportunity to take enough steps without interruption by other processes.
43
Consensus
44
Consensus The algorithm is using 8n+2 registers.
Anonymous Uses anonymous snapshot object.
Obstruction free Correct
45
Consensus - Obstruction freedom
Let’s see that if process is running by itself it eventually halts.
46
Consensus - Obstruction freedom
Let C be any configuration. m is the maximum value of R in C. P run by itself forever from C.
47
Consensus - Obstruction freedom
lap increases at least once every iterations Eventually and Now P will write values larger than m to in the next
iterations.
1lap m
4 1n
1j
0vR 4 1n
48
Consensus - correctness
Let P’ be a process that decides 0 (without loss of generality). Let T be the time P’ last scans R and S’ that scan. We shall show that every other process that terminates
also decides 0.
49
Consensus - correctness
Let m be the minimum value in All values in are less than m.
0'S
1'S
50
Consensus - correctness
Claim 1: After T, at most n UPDATES write smaller value than m to R.
51
Consensus - correctness
Proof: n+1 writes, let’s look at the first process P that writes to R in the second time.
4n+1>n one of the values in is at least m, from line 10 we get that P local P will write at least m to R.
0Rlap m
52
Consensus - correctness
Claim 2: After T, at most n UPDATES write a value to 1R
53
Consensus - correctness
Proof: n+1 writes, let’s look at the iteration of the first process P that writes to R in the second time.
At most n values are greater than m in From claim 1, at most n values are smaller than m in
1R
0R
54
Consensus - correctness
We get that for at leastvalues of i. P will change its local value to 0 in line 5.
0 1[ ] [ ]R i m R i 4 1 2 1n n n n
55
Talk outline What is anonymously? Anonymously implementation Weak Counter Snapshot Consensus Summary
56
Summary We showed anonymous algorithms by using
only read/write registers. Weak counter – wait free implementation Snapshot object – wait free implementations Consensus – obstruction free implementation
57
Thank you!