Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduccin Enunciado del problema Consenso: Algoritmo de una ronda Consenso: Algoritmo de los generales bizantinos Consenso: Algoritmo del rey
Introduccin
Los sistemas distribuidos son propensos a fallos La replicacin es una estrategia habitual para conseguir que un sistema sea ms fiable
Si replico y no hay fallos, todos los nodos deberan calcular el mismo resultado (suponiendo que los datos de entrada y el algoritmo de clculo es el mismo) Si replico y hay fallos, pueden generarse distintos resultados
Resultado vlido determinado por medio de algoritmos de consenso
Un grupo de ejrcitos bizantinos est rodeando una ciudad enemiga. El balance de fuerzas es tal que si todos los ejrcitos atacan simultneamente, pueden capturar la ciudad; en caso contrario, todos deben retirarse para evitar la derrota. Los generales tienen mensajeros fiables capaces de entregar con xito cualquier mensaje enviado de un general a otro. El problema es que algunos de los generales son traidores y tienen como objetivo que los ejrcitos sean derrotados. El objetivo es definir un algoritmo que facilite que todos los generales leales lleguen a un consenso sobre el plan de actuacin. La decisin final ser por votacin de la mayora sobre sus elecciones iniciales. Si empatan, la decisin es retirada.
Programacin de Sistemas Concurrentes y Distribuidos
J. Ezpeleta-P. lvarez Univ. de Zaragoza 3
plan[myID]:= chooseAttackOrRetreat for all other generals G send(G, myID, plan[myID]) for all other generals G receive(G, plan[G]) finalPlan:= majority(plan)
A Basilio
-A A R A R
Zoe
Len
Zoe
Len
Len General Basilio Len Zoe Majority
R
Plan A R A A
J. Ezpeleta-P. lvarez Univ. de Zaragoza 7
Plan R A R
Zoe
Len
Len General Basilio Len Zoe Majority
R
Plan A R A A
Plan R A R
R
8
Por tanto, la solucin pasa por asegurar que los planes de los traidores no afecten al consenso de los leales
Envo de planes basado en doble vuelta:
Primera vuelta: generales envan su decisin Segunda vuelta: generales envan los planes recibidos de otros generales
process General
P1: plan[myID]:= chooseAttackOrRetreat P2: for all other generals G P3: send(G, myID, plan[myID]) P4: for all other generals G P5: receive(G, plan[G]) P6: for P7: P8: P9: for P10: P11: all other generals G for all other generals send(G, myID, all other generals G for all other generals receive(G, G, // First round
G le dijo...
10
process General
P1: plan[myID]:= chooseAttackOrRetreat P2: for all other generals G P3: send(G, myID, plan[myID]) P4: for all other generals G P5: receive(G, plan[G]) P6: for P7: P8: P9: for P10: P11: all other generals G for all other generals send(G, myID, all other generals G for all other generals receive(G, G, // First round
G le dijo...
11
12
13
Zoe General Basilio Len Zoe Majority Plan Reported by Basilio Len Basilio Len Zoe Majority Majority General Plan
14
Zoe General Basilio Len Zoe Majority Plan R A Reported by Basilio Len A A R A A Basilio Len Zoe Majority A R A Majority General Plan
Majority
Basta con que un general enve un mensaje para que todos lo sepan J. Ezpeleta-P. lvarez
Univ. de Zaragoza
Len
Zoe General Basilio Len Zoe Majority Plan Reported by Basilio Len Basilio Len Zoe Majority Majority General Plan
16
Len
Zoe General Basilio Len Zoe Majority Plan A R A Reported by Basilio Len A A R A A Basilio Len Zoe Majority A R A Majority General Plan
Majority
A
Zoe General Basilio Len Zoe Majority Plan A R A
Zoe
Len
R
Len
Majority
Plan A R A
Majority
18
A
Zoe General Basilio Len Zoe Majority Plan A R A R
Zoe
Len
R
Len
Majority A R A A
Plan A R A
Majority A R R R
19
Estructura de datos de Basilio con los mensajes recibidos por los generales leales:
Basilio General Basilio Juan Len Zoe Majority Plan A A R ? R ? ? A ? ? Reportedby Juan Len Zoe A A R ? ?
J. Ezpeleta-P. lvarez Univ. de Zaragoza 20
Majority
Puede conocerse con certeza la decisin de cada general leal, independientemente de lo que diga el general traidor
El traidor puede influir en la decisin final de los generales leales, pero entre estos existir consenso (R).
21
Majority
23
Ejemplo:
Plan enviado por Basilio en primera vuelta Intenciones de Basilio difundidas en segunda vuelta
J. Ezpeleta-P. lvarez Univ. de Zaragoza 24
Len A
Zoe A
25
Consistente !
Programacin de Sistemas Concurrentes y Distribuidos
J. Ezpeleta-P. lvarez Univ. de Zaragoza 26
Caso 2: Basilio enva un nico mensaje en primera vuelta a un nico general leal (por ejemplo, a Len).
Basilio X Len X Zoe X
Programacin de Sistemas Concurrentes y Distribuidos
Consistente !
J. Ezpeleta-P. lvarez Univ. de Zaragoza 27
Caso 3: Basilio enva correctamente los mensajes de primera vuelta, pero cae antes de enviar los de segunda vuelta
Basilio X Zoe X Len X Len X Zoe X
Consistente !
J. Ezpeleta-P. lvarez Univ. de Zaragoza 28
Caso 4: Basilio enva correctamente los mensajes de primera vuelta, pero no el segundo a Zoe qu conoce Zoe de Len?
Basilio X Zoe X Len X Len X Zoe X Zoe Y Basilio Y Len Y Basilio Y
Consistente !
J. Ezpeleta-P. lvarez Univ. de Zaragoza 29
30
KT de un general leal:
Len X
Consistente !
Consistente !
No obstante, este algoritmo requiere un elevado flujo de mensajes, especialmente conforme aumenta el nmero de generales
33
En cada ronda el voto de un general tiene una mayor importancia (status de Rey)
La identidad del Rey no es conocida por el resto de los nodos El Rey puede ser un general leal o traidor
34
process General
5 generales (t = 1)
P2: do TWO times P3: for all other generals G //first and third round P4: send(G, myID, plan[myID]) P5: for all other generals G P6: receive(G, plan[G]) P7: myMajority:= majority(plan) P8: votesMajority:= number of votes for myMajority
P9: P10: P11: P12: P13: P14: P15: P16: if my turn to be king //second and fourth round for all other generals G send(G, myID, myMajority) mayor que plan[myID]:= myMajority (generales/2)+t else receive(kingID, kingPlan) if (votesMajority > 3) plan[myID]:= myMajority else plan[myID]:= kingPlan // Final decision
J. Ezpeleta-P. lvarez Univ. de Zaragoza 36
37
kingPlan
kingPlan
kingPlan
kingPlan
39
Ezpeleta-P. lvarez 40 slidas,J. decisin final (R) Programacin de Sistemas Concurrentes Mayoras y Distribuidos Univ. de Zaragoza
Juan
Len
Miguel
Zoe
myMajority
votesMajority
kingPlan R
Len
Miguel
Zoe
myMajority
votesMajority
kingPlan A
Miguel
Zoe
myMajority
votesMajority
kingPlan A
kingPlan
kingPlan
kingPlan
kingPlan
Juan
Len
Miguel
Zoe
myMajority
votesMajority
kingPlan A
Juan
Len
Miguel
Zoe
myMajority
votesMajority
kingPlan A
Juan
Len
Miguel
Zoe
myMajority
votesMajority
kingPlan A
myMajority
votesMajority
kingPlan