Sistemas Distribu´ıdos e Redes de Sensores
Aula 6: Outros Padr˜oes – dissemina¸c˜ao e roteamento
abril de 2013
Padr˜ oes de programas distribu´ıdos
padr˜ao cliente-servidor exibe assimetria intr´ınseca padr˜oes envolvendo processospares: c´odigo idˆentico
G. Andrews. Paradigms for process interaction in distributed programs. ACM Computing Surveys, 23(1), march 1991, 49-90.
Nota¸c˜ ao Andrews
canais
desacoplamento em rela¸c˜ao a parceiros espec´ıficos tipagem
exemplos C/S
monoprocesso
“monitor”: aloca¸c˜ao de recursos de car´ater homogˆeneo controlador de disco
pr´e-aloca¸c˜ao
sess˜oes de uso (continuidade conversacional) e estado
Padr˜ oes p2p
simetria do c´odigo facilita entendimento do programa
algoritmos em execu¸c˜ao determinam padr˜oes de comunica¸c˜ao
rela¸c˜ao entre discuss˜ao no artigo Andrews e aplica¸c˜oes mais recentemente rotuladas como p2p
Dissemina¸c˜ ao de informa¸c˜ oes
Motiva¸c˜ao
Dissemina¸c˜ao de informa¸c˜oes de um n´o raiz para toda a rede Dissemina¸c˜ao de informa¸c˜oes de todos os n´os para todos os n´os da rede (ex., problema de descoberta de topologia da rede)
Coleta de dados de todos os n´os da rede Probe/echo e heartbeat
Padr˜oes de intera¸c˜ao adequados para dissemina¸c˜ao de informa¸c˜oes quando os n´os trocam mensagens apenas com seus vizinhos imediatos.
Algoritmos e padr˜ ao da aplica¸c˜ ao
possivel combina¸c˜ao de v´arios padr˜oes
algoritmo de dissemina¸c˜ao pode ser apenas pequena parte do que ´e computado na aplica¸c˜ao
Dissemina¸c˜ ao e roteamento
redes f´ısicas redes de overlay
Algoritmos heartbeat
Cada processo executa uma sequˆencia de itera¸c˜oes, onde cada itera¸c˜ao compreende:
1 enviar seu conhecimento local para todos os vizinhos (expans˜ao)
2 receber o conhecimento dos vizinhos (contra¸c˜ao)
3 ... e combinar os dados gerando nova vers˜ao da informa¸c˜ao global
problema exemplo: descoberta de topologia da rede
Cada n´o s´o se comunica com seus vizinhos;
Inicialmente cada n´o s´o conhece seus vizinhos imediatos;
A rede ´e conexa (todo n´o tem ao menos um vizinho);
Ao final queremos que cada n´o (processo) conhe¸ca a topologia inteira da rede (grafo de enlaces).
por exemplo, para tomar decis˜oes sobre roteamento de mensagens
problema representativo em SDs pois reaparece em v´arias formas
Algoritmo distribu´ıdo para descoberta de topologia
Cada n´o pergunta pela topologia de seus vizinhos (enviando e recebendo uma mensagem);
Depois de uma intera¸c˜ao (round), cada n´o conhece a topologia no raio de dois saltos;
Depois derintera¸c˜oes, o seguinte predicado ser´a verdadeiro em cada n´o p:
ROUND:∀q : 1≤q≤n: (dist(p,q)≤r ⇒top[q,∗] j´a preenchida)
Algoritmo heartbeat para descoberta de topologia
primeira solu¸c˜ao: diˆametro da rede (distˆancia em saltos entre os n´os mais distantes) conhecido:
Interface de comunica¸c˜ ao p2p
Interface do enlace Module:
Name: PerfectP2PLink Events:
Request: < Send | dest, msg >
Indication: < Deliver | src, msg >
Propriedades do enlace
mensagens s˜ao entregues em ordem, n˜ao h´a cria¸c˜ao de mensagens
Interface para componente de descoberta de topologia (v1)
(considerando que o diˆametro da rede seja conhecido) Module:
Name: Topologia-v1 Events:
Request: <DescobreTopologia | d, vizinhos[N]>
Indication: <TopologiaAtual | top[N][N]>
Liga¸c˜ ao entre componentes
Algoritmo heartbeat (parte 1)
Implements: Topologia-v1 Uses: PerfectP2PLink event <Init> do
global top[1:n][1:n] := false;
global r := 0; resp := 0; num_vizinhos := 0;
proc Expande() do
forall q in top[p] do trigger <Send | q, top>
resp := num_vizinhos;
end
event <DescobreTopologia | d, vizinhos[N]> do top[p][1:n] := vizinhos[1:n];
num_vizinhos := computa vizinhos;
call Expande()
Algoritmo heartbeat (parte 2)
event <Deliver | q, newtop> do top := top or newtop;
resp := resp - 1;
call Topo();
end
proc Topo() do
if (resp = 0) then r := r + 1;
if (r = d) then
trigger <TopologiaAtual | top>;
else
call Expande() end
Problemas da solu¸c˜ ao anterior
1 Conhecimento a priori do diˆametro D da rede
2 Troca excessiva de mensagens: n´os na regi˜ao central da rede continuar˜ao a ex ecutar as intera¸c˜oesmesmo depois de j´a terem terminado de computar a topologia
Algoritmo heartbeat refinado para descoberta de topologia
Depois derintera¸c˜oes, o n´o p conhecer´a a topologia dentro da distˆanciar: ∀q :dist(p,q)≤r, os vizinhos deq estar˜ao armazenados na linha q detop
Como a rede ´e conexa,cada n´o tem ao menos um vizinho, ent˜ao o n´o p ter´a executado um n´umero suficiente de intera¸c˜oes (rounds) para saber a topologia da rede assim que toda linha detoptiver ao menos um valor TRUE
Nesse ponto, q pode terminar ap´os compartilhar sua topologia final com seus vizinhos
Interface para descoberta de topologia (v2)
Module:
Name: Topologia-v2 Events:
Request: <DescobreTopologia | vizinhos[N]>
Indication: <TopologiaAtual | top[N][N]>
Algoritmo heartbeat (parte 1)
Implements: Topologia-v2 Uses: PerfectP2PLink event <Init> do
global top[1:n][1:n] := false;
global resp := 0; num_vizinhos_ativos := 0;
global ativos[1:n] := false; done := false;
Algoritmo heartbeat (parte 2)
proc Topo() do if (resp = 0) then
if (todas linhas de top tem uma entrada true) then done := true;
forall q in ativos do
trigger <Send | q, [done, top]>
if (done) then
trigger <TopologiaAtual | top>;
else
resp := num_vizinhos_ativos;
end end
Algoritmo heartbeat (parte 3)
event <DescobreTopologia | vizinhos[N]> do top[p][1:n] = vizinhos[1:n];
ativos[1:n] = vizinhos[1:n];
num_vizinhos_ativos := computa vizinhos;
forall q in ativos do
trigger <Send | q, [done, top]>
resp := num_vizinhos_ativos;
Algoritmo heartbeat (parte 4)
event <Deliver | q, [qdone, newtop]> do if (not done) then
top := top or newtop;
if (qdone) then ativos[q] := false;
num_vizinhos_ativos = num_vizinhos_ativos-1;
end
resp := resp - 1;
call Topo();
end
Observa¸c˜ oes sobre a solu¸c˜ ao anterior
O limite superior de mensagens trocadas ´e: n∗2∗m∗(D+ 1), onden ´e o n´umero de n´os na rede em ´e o n´umero m´aximo de vizinhos de um n´o
Cada n´o n executa no m´aximoD+ 1 rodadas nas quais troca 2 msgs com cada um dos seusmvizinhos
Observa¸c˜ oes sobre o padr˜ ao heartbeat
O loop principal dos algoritmos heartbeatsegue sempre a mesma estrutura b´asica (envia msgs para os vizinhos e espera pelas respostas);
O conte´udo das msgs e como elas s˜ao tratadas depende de cada aplica¸c˜ao;
O crit´erio de t´ermino e como ´e verificado depende de cada aplica¸c˜ao
no exemplo, cada n´o ´e capaz de identificar o t´ermino;
em outros casos, o n´o precisar´a:
interagir com um controlador central trocar informa¸c˜oes adicionais
ou executar o pior caso de n´umero de rodadas