Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

26
Protocolo de Ordem Total Fernando Ney da Costa Nascimento

Transcript of Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

Page 1: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

Protocolo de Ordem Total

Fernando Ney da Costa Nascimento

Page 2: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

Multicast com ordem total

Camadas abaixo: Camada Multicast com Ordem Causal (MOC). Camada de Gerenciamento de Grupo.

Idéia: Examinar o C-DAG e determinar a ordem total (em todos os processos).

Sem mensagens adicionais além das mensagens da camada MOC.

Page 3: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

Esboço do Algoritmo

G = {Ø,Ø} //DAG causalA = Ø //msg´s com ordem totalwave = 1forever when causal-deliver(mij), insert mij in G loop until exit compute C(G) //candidatos compute S(G) //fontes if Consensus(G) deliver S(G) in a deterministic order A = A U S wave++ else exit

Page 4: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

Definições

C(G): conjunto de mensagens candidatas a serem entregues. Raízes do grafo G. (candidatas)

S(G): conjunto de mensagens a serem entregues em uma determinada onda do protocolo. (fontes)

Entrega é realizada quando Consensus é satisfeito. O protocolo deve garantir que cada processo irá entregar o mesmo conjunto de mensagens S (fontes). O Consensus é atingido quando S(G) não pode mudar,

mesmo se mais mensagens são recebidas.

Page 5: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

Consenso

Uma simples estratégia para o consenso é esperar uma mensagem de cada processo no C-DAG e entregar as raízes do grafo (fontes) em uma ordem deterministica. Sem custo adicional de mensagens O sistema opera na velocidade do processo mais lento

É possível dar prioridade as primeiras mensagens recebidas com base na maioria dos processos.

Page 6: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

Entrega Antecipada

A idéia é desenvolver uma regra de estabilidade que funciona sem necessitar que uma mensagem seja recebida de cada processador.

O conjunto S deve permanecer o mesmo em cada possível extensão G´ de G. (Condição de Segurança)

G´ estende G se e somente se G G´: Future(G) = {G´ | G´ seja uma extensão de G}

Page 7: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

Condições de Segurança (Estabilidade)

Cada mensagem candidata não-fonte em G não pode torna-se uma fonte em G´. se m C(G) \ S(G), então m C(G´) \ S(G´) para todo G´

Future(G) Cada fonte em G é também uma fonte em G´.

se m S(G), então m S(G´) para todo G´ Future(G) Mensagem não recebidas não podem torna-se fontes em G´.

se i tail(G), então para todo j, mij S(G´) para todo G´ Future(G)

Se G satisfaz as 3 condições acima, G é dito ser estável.

* tail(G): conjunto de processos com mensagens em G.

Page 8: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

Condições de Vivacidade

Enquanto as condições de segurança garantem que cada processo irá receber os mesmos conjuntos de mensagens, é preciso ainda garantir, que eventualmente, alguma mensagem seja entregue.

Condições de Vivacidade: se |tail(G)| = M, então S(G) ≠ se |tail(G)| = M, então G é estável

Page 9: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

Protocolo TOP

Voto de Processo: A 1a mensagem mij do processo pi em G vota nas

mensagens candidatas do DAG causais a mij. Cada mensagem vota em si própria.

A cada mensagem está associado um vetor de votos, VV(m)[i]. VV(m)[i] =

1, se processo i votou em m 0, se processo i votou mas não em m *, se processo i ainda não votou

Page 10: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

Protocolo TOP

Número de processos que enviaram mensagens causualmente a m: ntail(m) = |tail(m)|

Número de processos que ainda não votaram: u = |P – ntail(G)| = |{j : VV(m)[j]=*}| = M – ntail(G)

Número de votos de uma mensagem candidata: nvt(m) = |{i : VV(m)[i]=1}|

Mensagens candidatas são comparadas com base nos votos que as mesmas recebem:

votes(m1,m2) = |{j : VV(m1)[j]=1 VV(m2)[j]=0}| win(m1,m2) =

1, se votes(m1,m2) > threshold 0, se votes(m2,m1) > threshold X, casos contrários

* threshold = M/2

Page 11: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

Protocolo TOP

O valor de win é definido com base no grafo G atual. É necessário uma função em relação as extensões de G, G´.

win[G´](m1,m2) = {win[G´](m1,m2), onde G´ estende G} O único interessante modo de G´ estender G é especificando votos de processos que ainda não

votaram. Dessa forma, 1 win[G´](m1,m2) se e somente se o número de processos que votam em m1 mas não em m2,+ o número de votos não processados, seja maior que threshold:

1 win[G´](m1,m2) se votes(m1,m2) + u > threshold X win[G´](m1,m2) se X win(m1,m2) 0 win[G´](m1,m2) se 1 win[G´](m2,m1)

Ainda temos: 1 win[G´](m1,m2) votes(m1,m2) + u ≤ threshold win[G´](m1,m2) = {1} win(m1,m2) = 1

Seja M(G) o número de candidatos no DAG causal G. O conjunto de fontes, S(G), é definida como:

i S(G) i M(G) j M(G), 1 win[G´](j,i) ou seja, a mensagem i é uma fonte se ela nunca perde para qualquer outra mensagem j já em G.

Page 12: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Regras de Entrega

1) Entrega antecipada Se m M(G)\S(G) m´ S(G), win[G´](m´,m) = 1 s S(G), nvt(s) > threshold

2) Entrega normal Se ntail(G) = M

Page 13: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Corretude

Como mensagens são recebidas em ordem causal, um processo p que já tem uma mensagem em G, não irá votar para mensagens a serem recebidas. A primeia mensagem de p vota para as candidatas que ela causalmente segue que já estão em G.

Entrega Antecipada: Existe uma fonte s com pelo menos threshold+1 votos. s pode ainda

compartilhar esses votos com outras candidatas, mas todos os processos (threshold+1) que ja votaram para s não iram votar para mensagens ainda não recebidas. Quando s´ é recebida, se s´ é uma candidata, a mesma não se tornará um fonte. s´ irá perder para s, desde que a maioria votou para s e não irá votar para s´: votes(s,s´) > threshold

Uma candidata não-fonte i não irá torna-se uma fonte se i perde para uma candidata j: win(j,i) = 1 win[G´](j,i) = 1

Entrega normal: A condição de vivacidade é satisfeita desde se ntail(G) = M, ou a entrega

antecipada é satisfeita ou todas as candidatas são entregues.

Page 14: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Tolerância a falhas

Mudanças de configuração no grupo são consistentemente informadas pela camada de gerenciamento de grupo.

Um processo falho vota numa mensagem candidata m da seguinte forma: VV(m)[i] = 0, caso i seja um processo falho

Page 15: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Exemplo

B

G C

F I

H

A D E

Page 16: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Exemplo

B

A B C D E F G H I JM A * 0 * * * * * * * *

M B * 1 * * * * * * * *

M C * 0 * * * * * * * *

M D * 0 * * * * * * * *

M E * 0 * * * * * * * *

M F * 0 * * * * * * * *

M G * 0 * * * * * * * *

M H * 0 * * * * * * * *

M I * 0 * * * * * * * *

M J * 0 * * * * * * * *

Page 17: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Exemplo

A B C D E F G H I JM A * 0 * * * * * * 0 *

M B * 1 * * * * * * 0 *

M C * 0 * * * * * * 0 *

M D * 0 * * * * * * 0 *

M E * 0 * * * * * * 0 *

M F * 0 * * * * * * 0 *

M G * 0 * * * * * * 0 *

M H * 0 * * * * * * 0 *

M I * 0 * * * * * * 1 *

M J * 0 * * * * * * 0 *

B I

Page 18: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Exemplo

A B C D E F G H I JM A * 0 * * * * 0 * 0 *

M B * 1 * * * * 1 * 0 *

M C * 0 * * * * 0 * 0 *

M D * 0 * * * * 0 * 0 *

M E * 0 * * * * 0 * 0 *

M F * 0 * * * * 0 * 0 *

M G * 0 * * * * 1 * 0 *

M H * 0 * * * * 0 * 0 *

M I * 0 * * * * 0 * 1 *

M J * 0 * * * * 0 * 0 *

B

G

I

Page 19: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Exemplo

A B C D E F G H I JM A * 0 * * * 0 0 * 0 *

M B * 1 * * * 0 1 * 0 *

M C * 0 * * * 0 0 * 0 *

M D * 0 * * * 0 0 * 0 *

M E * 0 * * * 0 0 * 0 *

M F * 0 * * * 1 0 * 0 *

M G * 0 * * * 0 1 * 0 *

M H * 0 * * * 0 0 * 0 *

M I * 0 * * * 0 0 * 1 *

M J * 0 * * * 0 0 * 0 *

B

G

F I

Page 20: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Exemplo

A B C D E F G H I JM A * 0 0 * * 0 0 * 0 *

M B * 1 1 * * 0 1 * 0 *

M C * 0 1 * * 0 0 * 0 *

M D * 0 0 * * 0 0 * 0 *

M E * 0 0 * * 0 0 * 0 *

M F * 0 1 * * 1 0 * 0 *

M G * 0 0 * * 0 1 * 0 *

M H * 0 0 * * 0 0 * 0 *

M I * 0 0 * * 0 0 * 1 *

M J * 0 0 * * 0 0 * 0 *

B

G C

F I

Page 21: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Exemplo

A B C D E F G H I JM A * 0 0 * 0 0 0 * 0 *

M B * 1 1 * 1 0 1 * 0 *

M C * 0 1 * 1 0 0 * 0 *

M D * 0 0 * 0 0 0 * 0 *

M E * 0 0 * 1 0 0 * 0 *

M F * 0 1 * 1 1 0 * 0 *

M G * 0 0 * 0 0 1 * 0 *

M H * 0 0 * 0 0 0 * 0 *

M I * 0 0 * 0 0 0 * 1 *

M J * 0 0 * 0 0 0 * 0 *

B

G C

F I

E

Page 22: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Exemplo

A B C D E F G H I JM A * 0 0 0 0 0 0 * 0 *

M B * 1 1 1 1 0 1 * 0 *

M C * 0 1 1 1 0 0 * 0 *

M D * 0 0 1 0 0 0 * 0 *

M E * 0 0 0 1 0 0 * 0 *

M F * 0 1 1 1 1 0 * 0 *

M G * 0 0 1 0 0 1 * 0 *

M H * 0 0 0 0 0 0 * 0 *

M I * 0 0 0 0 0 0 * 1 *

M J * 0 0 0 0 0 0 * 0 *

B

G C

F I

D E

Page 23: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Exemplo

A B C D E F G H I JM A * 0 0 0 0 0 0 0 0 *

M B * 1 1 1 1 0 1 0 0 *

M C * 0 1 1 1 0 0 0 0 *

M D * 0 0 1 0 0 0 0 0 *

M E * 0 0 0 1 0 0 0 0 *

M F * 0 1 1 1 1 0 0 0 *

M G * 0 0 1 0 0 1 0 0 *

M H * 0 0 0 0 0 0 1 0 *

M I * 0 0 0 0 0 0 1 1 *

M J * 0 0 0 0 0 0 0 0 *

B

G C

F I

H

D E

Page 24: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Exemplo

A B C D E F G H I JM A 1 0 0 0 0 0 0 0 0 *

M B 1 1 1 1 1 0 1 0 0 *

M C 0 0 1 1 1 0 0 0 0 *

M D 0 0 0 1 0 0 0 0 0 *

M E 0 0 0 0 1 0 0 0 0 *

M F 0 0 1 1 1 1 0 0 0 *

M G 1 0 0 1 0 0 1 0 0 *

M H 0 0 0 0 0 0 0 1 0 *

M I 0 0 0 0 0 0 0 1 1 *

M J 0 0 0 0 0 0 0 0 0 *

B

G C

F I

H

A D E

Page 25: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Exemplo

M = 10threshold = 5ntail(G) = 9u = M - ntail(G) = 1M(G) = {B, F, I}

mi B F I

nvt(mi){A,B,C,D,E,G} = 6 {C,D,E,F} = 4 {H,I} = 2

votes B F IB - 3 6F 1 - 4I 2 2 -

Page 26: Protocolo de Ordem Total Fernando Ney da Costa Nascimento.

TOP: Exemplo

S(G) = i M(G) j M(G), 1 win[G´](j,i) B S(G)

nvt(B) = 6 > threshold F S(G)

votes(B,F) + u = 4 ≤ threshold votes(I,F) + u = 3 ≤ threshold

I S(G) nvt(I) = 2 ≤ threshold B M(G), votes(B,I) + u = 7 > threshold

Entrega Antecipada M(G)\S(G) = {I}

nvt(I) + u = 3 ≤ threshold B S(G), votes(B,I) = 6 > threshold B S(G), nvt(B) > threshold