Algoritmos Distribuídos
Algoritmos para clusterização em
redes móveis ad hoc
Tópicos




Redes Ad Hoc
Roteamento em redes Ad Hoc
Clusters em redes Ad Hoc
Algoritmos


DCA –
DMAC –
Distributed Clustering Algorithm
Distributed and Mobility Adaptive Clustering
Redes Ad Hoc

Maior mobilidade

Capacidade de auto-organização

Rapidamente estabelecida

Independente de estrutura física
Redes Ad Hoc




Usos militares e civis
Suporte a computação colaborativa em
ambientes temporários ou móveis
Sistemas de comando e controle
distribuídos
Monitoramento móvel de pacientes para
tratamento crítico
Redes Ad Hoc



Estrutura sem fio ubíqua capaz de
intercomunicar milhares de dispositivos
Comunicação em campo de batalha
Auxílio a socorre em desastres naturais,
onde a estrutura está destruída ou é
ausente, como terremotos, maremotos,
avalanches, etc
Clusters em redes Ad hoc




Utilizado desde o surgimento das redes
Uso inicial para roteamento
Alocação de recursos, largura de banda
e canais, para tráfego multimídia em
redes ad hoc
Tornar comunicação mais eficiente e
gastar menos energia
Roteamento em redes Ad Hoc

Quatro categorias:




Roteamento proativo
Flooding
Roteamento reativo
Roteamento dinâmico através de clusters
Roteamento - Proativo




Periodicamente distribui informações de
roteamento através da rede
Rotas pré computadas para todos os
destinos
Boa qualidade para topologia estáticas
Não escalável para ambientes dinâmicos
Roteamento – Flooding



Não requer conhecimento da topologia
Pacotes enviados por broadcast para
todos os destinos com a expectativa de
eventualmente atingir o destino
desejado
Número excessivo de mensagens, o que
significa um grande consumo de
energia para roteamento
Roteamento – Reativo




Terminais não armazenam informação sobre
rotas
Quando um nó quer transmitir, ele manda um
broadcast para requisição de rota
Quando chegar ao destinatário, ele retorna
com as informações da rota utilizada
Tempo necessário para saber a rota é muito
grande e qualidade da rota pode ser ruim
Roteamento – Dinâmico baseado em clusters




Rede é organizada em partições (clusters)
A composição dos clusters muda com o
tempo devido a mobilidade dos nós
Roteamento interno do cluster é
independente do externo
Precisa de algoritmo de clusterização
eficiente, caso contrário manutenção do
cluster vai demandar muito esforço
Clusters em redes ad hoc




Clusterização é realizada em duas fases, set
up e manutenção
Escolha do clusterhead é comparável à
escolha de um coordenador em um algoritmo
de eleição
A escolha do coordenador é baseada em um
“peso”, para que seja escolhido o nó mais
apto para a tarefa
Cada nó tem um ID único na rede
Propriedades dos clusters



Cada nó não coordenador terá pelo
menos um clusterhead vizinho
O nó vai se juntar ao melhor
clusterhead na sua vizinhança
Não deverá haver dois ou mais
coordenadores vizinhos
Exemplo de clusterização
DCA – Distributed Clustering Algorithm



Cada nó tem consciência de seu ID, seu
peso e os IDs e pesos dos seus vizinhos
Toda mensagem enviada é recebida por
todos os vizinhos em tempo finito
Assume que a topologia da rede não
muda durante a execução do set up
DCA – Distributed Clustering Algorithm

São utilizados dois tipos de mensagens




CH(v) – utilizado por um nó v para indicar aos
seus vizinhos que ele será um clusterhead
JOIN(v, u) – o nó v comunica aos seus vizinhos
que ele será parte do cluster no qual o
coordenador é o nó u
A idéia do algoritmo é que um nó decidirá a
sua função quando todos os nós de maior
peso ao seu redor já tiverem decidido
Ao iniciar a execução, apenas os que tiverem
o maior peso enviam CH(v)
DCA – Distributed Clustering Algorithm

On receiving CH(u)


Checa se já recebeu JOIN(z, x) de todos os
vizinhos z tal que W(z) > W(u). Nesse caso
o nó se junta a v e o algoritmo pára
Se existir z tal que W(z) > W(u), o nó
guarda a mensagem e continua
aguardando
DCA – Distributed Clustering Algorithm
on receive JOIN(u, t):
joins[u] = t
if ch then
if self == t then
for z in neighbors do
if z.w < weight and joins[z] != null then
exit
end
end
end
end
boolean allJoins = true
for z in neighbors do
if z.w > weight and joins[z] == null then
allJoins = false
break
end
end
if allJoins then
clusterhead = true
boolean joined = true
for y in neighbors do
if y.w < weight and joins[y] != null then
joined = false
break
end
end
if joined then
exit
else
send CH(self)
end
else
node chMsg = null
for z in neighbors and z.w > weight do
if chMsg == null or z.w > chMsg.w then
chMsg = z
end
end
send JOIN(self, chMsg)
end
DCA – Distributed Clustering Algorithm




Funciona melhor em ambientes pouco
móveis, quase estáticos
Reorganização realizada periodicamente
A manutenção é feita através da
reordenação dos clusters
Assume estabilidade dos nós e da
comunicação na rede enquanto está
executando
DMAC – Distributed and Mobility Adaptive Clustering




Similar ao algoritmo do convite, mas cada nó
age individualmente
Não assume estabilidade na construção do
cluster
Nós reagem a mensagens e a falha de
comunicação com outros nós e ao surgimento
de um nó vizinho
Uma mensagem enviada por um nó é
recebida por todos os seus vizinhos em
tempo finito
DMAC – Distributed and Mobility Adaptive Clustering



Cada nó conhece o seu ID, seu peso, sua
função e o ID, peso e função de todos os
seus vizinhos
Se um nó não escolheu sua função, ele e
normal (não coordenador)
São utilizados dois tipos de mensagens


CH(v) – utilizado por um nó v para indicar aos
seus vizinhos que ele será um clusterhead
JOIN(v, u) – o nó v comunica aos seus vizinhos
que ele será parte do cluster no qual o
coordenador é o nó u
DMAC – Distributed and Mobility Adaptive Clustering





Cluster(v) indica os nós pertencentes ao
cluster cujo clusterhead e v
Clusterhead indica o coordenador de um nó
A variável Ch(v) diz se v enviou uma
mensagem CH
Os nós são informados da presença ou falha
de um link por um serviço de mais baixo
nível, que disparará o evento tratador
As variáveis Clusterhead, Cluster(-) e Ch(-)
são iniciadas com valor nil, false e vazio
DMAC – Distributed and Mobility Adaptive Clustering
procedure Init:
begin
if {z Є neighbor(v) | Wz > Wv and Ch (z)} != { } then
x = max Wz>Wv {z: Ch(z)}
send JOIN(v, x)
Clusterhead = x
else
send CH(v)
Ch(v) = true
Clusterhead = v
Cluster(v) = {v}
end
end
DMAC – Distributed and Mobility Adaptive Clustering
procedure Link failure (u):
begin
if Ch (v) and (u Є Cluster (v)) then
Cluster (v) = Cluster (v) - {u}
else if Clusterhead = u then
if {z Є neighbor(v) | Wz > Wv and Ch(z)} != {} then
x = max Wz > Wv {z | Ch(z)}
send JOIN(v, x)
Clusterhead = x
else
send CH(V)
Ch(v) = true
Clusterhead = v
Cluster(v) = {v}
end
end
end
DMAC – Distributed and Mobility Adaptive Clustering
procedure New link (u):
begin
if Ch (u) then
if (Wu > WClusterhead ) then
send JOIN(v, u)
Clusterhead = u
if Ch(v) then
Ch(v) = false
end
end
end
end
DMAC
– Distributed and Mobility Adaptive Clustering
On receiving Ch(u):
begin
if (Wu > WClusterhead ) then
send JOIN(v, u)
Clusterhead = u
if Ch(v) then
Ch(v) = false
end
end
end
DMAC
– Distributed and Mobility Adaptive Clustering
On receiving JOIN(u, z):
begin
if Ch(v) then
if z == v then
Cluster(v) = Cluster(v) + {u}
else if u Є Cluster(v) then
Cluster(v) = Cluster(v) - {u}
end
else if Clusterhead = u then
if {z Є neighbor(v) | Wz > Wv and Ch(z)} != {} then
x = max Wz > Wv {z | Ch(z)}
send JOIN(v, x)
Clusterhead = x
else
send Ch(v)
Ch(v) = true
Clusterhead = v
Cluster(v) = {v}
end
end
end
DMAC



– Distributed and Mobility Adaptive Clustering
Algoritmo é tolerante a falhas de
comunicação em qualquer momento da
execução
Adequado a redes ad hoc reais, onde não se
pode assumir estabilidade da rede em
nenhum momento
Menos eficiente que o DCA quando a rede é
pouco móvel e as falhar de link são menos
constantes
Conclusão



Os dois algoritmos apresentados são
razoavelmente eficientes
O DCA tem uma complexidade máxima de
O(n) e é indicado para redes com pouca
mobilidade, executando uma reclusterização
periodicamente
O DMAC é mais complexo que o DCA, mas é
totalmente adaptativo a mudanças na
topologia
Download

Cluster(v) - PUC-Rio