Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Sistemas Distribúıdos e Redes de SensoresAula 6: Outros Padrões – disseminação e roteamento
abril de 2013
Sistemas Distribúıdos e Redes de Sensores
Padrões de programas distribúıdos
padrão cliente-servidor exibe assimetria intŕınseca
padrões envolvendo processos pares: código idêntico
G. Andrews. Paradigms for process interaction in distributedprograms. ACM Computing Surveys, 23(1), march 1991,49-90.
Sistemas Distribúıdos e Redes de Sensores
Notação Andrews
canais
desacoplamento em relação a parceiros espećıficos
tipagem
Sistemas Distribúıdos e Redes de Sensores
exemplos C/S
monoprocesso
“monitor”: alocação de recursos de caráter homogêneocontrolador de disco
pré-alocação
sessões de uso (continuidade conversacional) e estado
Sistemas Distribúıdos e Redes de Sensores
Padrões p2p
simetria do código facilita entendimento do programa
algoritmos em execução determinam padrões de comunicação
relação entre discussão no artigo Andrews e aplicações maisrecentemente rotuladas como p2p
Sistemas Distribúıdos e Redes de Sensores
Disseminação de informações
Motivação
Disseminação de informações de um nó raiz para toda a rede
Disseminação de informações de todos os nós para todos osnós da rede (ex., problema de descoberta de topologia darede)
Coleta de dados de todos os nós da rede
Probe/echo e heartbeat
Padrões de interação adequados para disseminação de informaçõesquando os nós trocam mensagens apenas com seus vizinhosimediatos.
Sistemas Distribúıdos e Redes de Sensores
Algoritmos e padrão da aplicação
possivel combinação de vários padrões
algoritmo de disseminação pode ser apenas pequena parte do que écomputado na aplicação
Sistemas Distribúıdos e Redes de Sensores
Disseminação e roteamento
redes f́ısicas
redes de overlay
Sistemas Distribúıdos e Redes de Sensores
Algoritmos heartbeat
Cada processo executa uma sequência de iterações, onde cadaiteração compreende:
1 enviar seu conhecimento local para todos os vizinhos(expansão)
2 receber o conhecimento dos vizinhos (contração)3 ... e combinar os dados gerando nova versão da informação
global
Sistemas Distribúıdos e Redes de Sensores
problema exemplo: descoberta de topologia da rede
Cada nó só se comunica com seus vizinhos;
Inicialmente cada nó só conhece seus vizinhos imediatos;
A rede é conexa (todo nó tem ao menos um vizinho);
Ao final queremos que cada nó (processo) conheça atopologia inteira da rede (grafo de enlaces).
por exemplo, para tomar decisões sobre roteamento demensagens
problema representativo em SDs pois reaparece em váriasformas
Sistemas Distribúıdos e Redes de Sensores
Algoritmo distribúıdo para descoberta de topologia
Cada nó pergunta pela topologia de seus vizinhos (enviando erecebendo uma mensagem);
Depois de uma interação (round), cada nó conhece atopologia no raio de dois saltos;
Depois de r interações, o seguinte predicado será verdadeiroem cada nó p:
ROUND: ∀q : 1 ≤ q ≤ n : (dist(p, q) ≤ r ⇒ top[q, ∗] jápreenchida)
Sistemas Distribúıdos e Redes de Sensores
Algoritmo heartbeat para descoberta de topologia
primeira solução: diâmetro da rede (distância em saltos entreos nós mais distantes) conhecido:
Sistemas Distribúıdos e Redes de Sensores
Interface de comunicação p2p
Interface do enlace
Module:
Name: PerfectP2PLink
Events:
Request: < Send | dest, msg >
Indication: < Deliver | src, msg >
Propriedades do enlace
mensagens são entregues em ordem, não há criação de mensagens
Sistemas Distribúıdos e Redes de Sensores
Interface para componente de descoberta de topologia (v1)
(considerando que o diâmetro da rede seja conhecido)
Module:
Name: Topologia-v1
Events:
Request:
Indication:
Sistemas Distribúıdos e Redes de Sensores
Ligação entre componentes
Sistemas Distribúıdos e Redes de Sensores
Algoritmo heartbeat (parte 1)
Implements: Topologia-v1
Uses: PerfectP2PLink
event 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
resp := num_vizinhos;
end
event do
top[p][1:n] := vizinhos[1:n];
num_vizinhos := computa vizinhos;
call Expande()
end
Sistemas Distribúıdos e Redes de Sensores
Algoritmo heartbeat (parte 2)
event 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 ;
else
call Expande()
end
end
end
Sistemas Distribúıdos e Redes de Sensores
Problemas da solução anterior
1 Conhecimento a priori do diâmetro D da rede
2 Troca excessiva de mensagens: nós na região central da redecontinuarão a ex ecutar as interações mesmo depois de játerem terminado de computar a topologia
Sistemas Distribúıdos e Redes de Sensores
Algoritmo heartbeat refinado para descoberta de topologia
Depois de r interações, o nó p conhecerá a topologia dentroda distância r: ∀q : dist(p, q) ≤ r , os vizinhos de q estarãoarmazenados na linha q de top
Como a rede é conexa, cada nó tem ao menos um vizinho, então onó p terá executado um número suficiente de interações (rounds)para saber a topologia da rede assim que toda linha de top tiver aomenos um valor TRUE
Nesse ponto, q pode terminar após compartilhar sua topologiafinal com seus vizinhos
Sistemas Distribúıdos e Redes de Sensores
Interface para descoberta de topologia (v2)
Module:
Name: Topologia-v2
Events:
Request:
Indication:
Sistemas Distribúıdos e Redes de Sensores
Algoritmo heartbeat (parte 1)
Implements: Topologia-v2
Uses: PerfectP2PLink
event do
global top[1:n][1:n] := false;
global resp := 0; num_vizinhos_ativos := 0;
global ativos[1:n] := false; done := false;
Sistemas Distribúıdos e Redes de Sensores
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
if (done) then
trigger ;
else
resp := num_vizinhos_ativos;
end
end
Sistemas Distribúıdos e Redes de Sensores
Algoritmo heartbeat (parte 3)
event 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
resp := num_vizinhos_ativos;
Sistemas Distribúıdos e Redes de Sensores
Algoritmo heartbeat (parte 4)
event 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
Sistemas Distribúıdos e Redes de Sensores
Observações sobre a solução anterior
O limite superior de mensagens trocadas é: n ∗ 2 ∗m ∗ (D + 1),onde n é o número de nós na rede e m é o número máximo devizinhos de um nó
Cada nó n executa no máximo D + 1 rodadas nas quais troca 2msgs com cada um dos seus m vizinhos
Sistemas Distribúıdos e Redes de Sensores
Observações sobre o padrão heartbeat
O loop principal dos algoritmos heartbeat segue sempre amesma estrutura básica (envia msgs para os vizinhos e esperapelas respostas);
O conteúdo das msgs e como elas são tratadas depende decada aplicação;
O critério de término e como é verificado depende de cadaaplicação
no exemplo, cada nó é capaz de identificar o término;em outros casos, o nó precisará:
interagir com um controlador centraltrocar informações adicionaisou executar o pior caso de número de rodadas
Sistemas Distribúıdos e Redes de Sensores