[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[minion-cvs] Clarify quorum-building language, and remove an ambigui...



Update of /home/minion/cvsroot/doc/spec
In directory moria.mit.edu:/tmp/cvs-serv3384

Modified Files:
	dir-agreement.txt 
Log Message:
Clarify quorum-building language, and remove an ambiguity.

Index: dir-agreement.txt
===================================================================
RCS file: /home/minion/cvsroot/doc/spec/dir-agreement.txt,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- dir-agreement.txt	14 Aug 2003 19:51:24 -0000	1.3
+++ dir-agreement.txt	14 Aug 2003 21:25:36 -0000	1.4
@@ -324,11 +324,12 @@
    needs to be deterministic, so that every cooperating directory
    server in a quorum arrives at the same quorum.
 
-   [Remember: the end goal is for there to be a single most
+   [[[Remember: the end goal is for there to be a single most
    trustworthy quorum that all clients use.  This quorum-building
    algorithm is only designed to minimize the number of competing
    quorums when we can't come up with a single most trustworthy one;
-   and to discourage directory severs from fragmenting the quorum.]
+   and to discourage directory severs from fragmenting the quorum.
+   ]]]
 
    To choose a quorum, directory servers iteratively calculate the
    "best" quorum of directory servers, and see if they belong to it.
@@ -349,13 +350,15 @@
           proceed to step 2.
 
        2. Let N be the size of the tied sets under consideration.  If
-          N>=5, and any two of the tied sets have at least N/2 common
-          elements, we compute the 'friendlier' set as follows: Set A
-          is friendlier than set B if the number of <A_i,B_j> pairs
+          N>=5, we compute a 'friendliness' relation as follows: Set A
+          is "friendly" to set B if A and B share at least N/2
+          elements in common, and the number of <A_i,B_j> pairs
           such that A_i trust B_j is greater than the number of
           <B_i,A_j> pairs such B_i trusts A_j.
 
-          (Note that 'friendliness' can be cyclical.)
+          (Note that 'friendliness' can be cyclical, but cannot be
+	  symmetric.  That is, we can have A-friendly-to-B-friendly-
+	  to-C, but we cannot have A-friendly-to-B-friendly-to-A.)
 
           We then compute the 'index' of each set by taking the SHA1
           hash of the sorted public keys of all the directory servers
@@ -363,10 +366,11 @@
 
           We compute a 'transitive friendliness' relationship as
           follows: First, we break cycles in the friendliness graph,
-          from largest cycle to smallest, by removing the
-          'is-friendlier-than' relation from the smallest-indexed set
-          in the friendliness graph.  Secondly, we take the transitive
-          closure of the resulting graph.
+          from largest cycle to smallest (breaking cycle size ties by
+          highest element index), by removing the 'is-friendlier-than'
+          relation from the smallest-indexed set in the friendliness
+          graph.  Secondly, we take the transitive closure of the
+          resulting graph.
 
           Finally, compute the best set as follows: start with "S_0",
           the set with the highest index.  If there are one or more