290 likes | 384 Views
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 – Distributed Clustering Algorithm DMAC – Distributed and Mobility Adaptive Clustering. Redes Ad Hoc. Maior mobilidade
E N D
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 – Distributed Clustering Algorithm • DMAC – 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
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 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 end 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
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