Utilizando o BonnMotion, um gerador de cenários de mobilidade
Introdução
O BonnMotion é um software Java desenvolvido pelo “Communication Systems group” do Instituto de Ciência da Computação 4 da University of Bonn, Alemanha. O BonnMotion cria e analisa cenários de mobilidade para investigação de ambientes de redes móveis Ac-Hoc (MANETs) e permite gerar cenários de mobilidade para simuladores como o ns-2, ns-3, GloMoSim/QualNet, COOJA, MiXiM, and ONE. Vários cenários de simulação são suportados como
- Random Waypoint model,
- Random Walk model,
- Gauss-Markov model,
- Manhattan Grid model,
- Reference Point Group Mobility model,
- Disaster Area model,
- Random Street model,
Visão geral
Quando simulamos qualquer ambiente real em um computacional, devemos abstrair as características significativas para nosso modelo. Ao modelarmos ambientes de rede com dispositivos móveis, o padrão de movimentação dos elementos impacta diretamente na topologia da rede. De acordo com o caso de uso, os elementos podem apresentar padrões de movimentos diversos. A literatura dispõe de uma gama de padrões conhecidos para simulação de vários cenários.
O BonnMotion é um framework para produção de cenários de mobilidade conhecidos e também o desenvolvimento de novos cenários. Tendo a capacidade de exportar os cenários para várias ferramentas de simulação populares, o bonnMotion permite que simulações existentes ou em desenvolvimento possam ser verificadas com vários cenários diferentes para análise.
Instalação
O bonnMotion está disponível na páginas do projeto http://net.cs.uni-bonn.de/wg/cs/applications/bonnmotion/.
A instalação do bonnMotion requer um SDK Java compatível com Java5. Após o download, deve-se descompactar o pacote zip e executar o install.sh
[code language=”shell” collapse=”false”]
$ unzip bonnmotion-2.0.zip
$ cd bonnmotion-2.0/
$ sh install
[/code]
Utilização
O binário gerado pela instalação é o bm, que pode ser encontrado no diretório bin da instalação.
A execução do bm –h mostra as opções básicas de uso:
[code language=”shell” collapse=”false”]
$ ./bin/bm -h
[/code]
A geração de um cenário de mobilidade é feita pela linha de comando. No geral a sintaxe segue o seguinte padrão
[code language=”shell” collapse=”false”]$ bm -f [-I ] <opções do modelo>[/code]
O <cenario> é um nome atribuído a essa instância de mobilidade pelo usuário. Em <MODELO> , deve ser utilizado um dos modelos do bonnmotion. Para listar os modelos disponíveis, utilize o comendo.
[code langueage=”shell” collapse=”false”]$bm -hm[/code]
As <opções do modelo> dependem do modelo escolhido, mas alguns são comuns a todos.
[code language=”shell” collapse=”false”]
-d <duração> #Duração em segundos do cenário
-i #Numero de segundos de "salto" do início do cenário
-n <número de nós>
-x #Largura do ambiente em unidades
-y #Altura do ambiente em unidades
-R #Uma semente de aleatoriedade fixa
[/code]
Exemplo:
Vamos gerar um cenário usando o RandomWaypoint, com 150 segundos de duração, em um ambiente de 500mx500m com 50 nós moveis. Esse cenário receberá o nome de RWP50:
[code language=”shell” collapse=”false”]
$bm /bm -fRWP50 RandomWaypoint -x 500 -y 500 -n 50
[/code]
O BonnMotion irá gerar dois arquivos correspondentes ao cenário, o RWP50.movements.gz e o RWP50.params. O primeiro é o cenário de movimentação em sí. Para o MiXiM, esse arquivo deve somente ser descomprimido. O segundo arquivo .params, contem os parâmetros utilizados na geração do modelo. É possível reutilizá-lo usando a opção -i arquivo.
Modelos
O BonnMotion pode gerar cenários de acordo com vários modelos disponíveis, para listar os modelos disponíveis, utilize o parâmetro –hm.
Dentre os modelos disponíveis vamos analizar 3 deles, o RandomWaypoint (RWP), o Reference Point Group Mobility model (RPGM) e o Pursue Mobility model (Pursue).
RandomWaypoint
O modelo RandomWaypoint, ou RWP, é um modelo bastante utilizado no estudo de redes móveis ad-hoc (MANETS). Ele simula o caminhar de elementos através de caminhos pré-estabelecidos. A geração do cenário segue os seguinte os passos a seguir:
Configuração
- Em um dado um espaço finito R2, define se um número finito de caminhos
- São definidos um número finito de caminhos ligando pares dos pontos em R2
- Os nós são distribuídos aleatoriamente entre nos pontos.
Execução
- Cada nó permanece parado por um período de tempo entre um intervalo definido
- Os nós escolhem aleatóriamente um dos caminhos possíveis a partir de seu ponto inicial, em uma velocidade distribuída entre parâmetros MAX e MIN
- Ao chegar ao destino o nó permanece parado um determinado tempo e reinicia o processo.
Vejâmos alguns parâmetros relevantes para o RandomWaypoint no bonnmotion
[code language=”shell” collapse=”false”]
-h #velocidade máxima em unidades de área por segundo
-l #velocidade mínima em unidades de área por segundo
-p #Tempo de parada máximo nos pontos
[/code]
ex: Cenário utilizando 30 nós, área 500×500 com velocidade mínima de 2m/s e máxima de 5m/s, máximo de 1 segundo de parada em cada ponto
[code language=”shell” collapse=”false”]
$ bm –f cenarioRWP-30 RandomWaypoint –n 30 –x 500 –y 500 –l 2 –h 5 –p 1
[/code]
Reference Point Group Mobility
O RPGM é um modelo de movimentação que permite simular movimentação de grupos ao redor de um centro, simulando características de cooperação. Esse centro pode ser definido como um líder ou somente a idéia de um grupo em sí.
No RPGM, os nós movimentam-se em conjunto mas não exatamente da mesma forma, mas a direção e a velocidade média ficam em torno da velocidade e direção do centro. Quando dois grupos se encontram, existe a possibilidade de um nó migrar de grupo. Esse tipo de movimentação assemelha-se a encontrada no cenário de turistas onde os grupos passeiam juntos pelos pontos disponíveis ou atrás de um guia.
Parâmetros do RPGM no bonnmotion
[code language=”shell” collapse=”false”]
-a #Média de nós por grupo
-c #Probabilidade de um membro mudar de grupo
-r <distância> #Distância máxima do centro do grupo
-s #desvio padrão do número de elementos do grupo.
[/code]
ex: Cenário utilizando 30 nós, área 500×500 com velocidade mínima de 2m/s e máxima de 5m/s, máximo de 1 segundo de parada em cada ponto, sem possibilidade de troca de grupo e média de 5 elementos por grupo
[code language=”shell” collapse=”false”]
bm –f cenarioRPGM-30 RPGM –n 30 –x 500 –y 500 –l 2 –h 5 –p 1 –c0 –a5
[/code]
Pursue Mobility model
O modelo pursue tenta simular grupos de pessoas seguindo um nó meta. A movimentação do nó objetivo segue os padrões do RandomWaypoint. A movimentação dos nós seguidores segue a formula
[code]
Nova Posição = Posição anterior + aceleração(posição anterior do nó objetivo) + vetor aleatório
[/code]
O vetor aleatório é um parámetro de geração do cenário.
Parâmetros do Pursue para o bonnmotion
[code language=”shell” collapse=”false”]
-o #Velocidade Máxima
-p # Velocidade mínima
-m fator de aleatoriedade do vetor
[/code]
ex: Cenário utilizando 30 nós, área 500×500 com velocidade mínima de 2m/s e máxima de 5m/s, aleatoriedade do vetor de 0.2
[code language=”shell” collapse=”false”]
bm –f cenarioPursue-10 pursue –n 30 –x 500 –y 500 –o 5 -p 2 –m 0.2 [/code]
Utilizando o BonnMotion com o MiXiM
O MiXiM é uma suíte de modelagem de redes sem fio para o Omnet++. Um dos módulos principais do MiXiM é o módulo de movimentação. Ele possibilita o uso de padrões de movimentação internos como o movimento browniano e movimentação circular. Além dos modelos nativos, o MiXiM permite que os nós sigam um modelo produzido pelo bonnmotion.
Para utilizarmos os cenários gerados no bonnmotion, precisaremos somente do arquivo movements.gz, só que descompactado.
A utilização do cenário no MiXiM é feita somente alterando o arquivo .ini da simulação omnetpp. Utilizando os nós padrão do MiXiM host80211 ou Wireless Node, faça a seguinte alteração no ini
[code language=”shell” collapse=”false”]
**.node[*].mobilityType = "BonnMotionMobility"
**.node[*].mobility.nodeId = -1
**.node[*].mobility.traceFile = “/caminho/do/arquivo/movements”
[/code]
Agora a simulação irá se comportar segundo o modelo gerado no bonnmotion.
Links
http://sys.cs.uos.de/bonnmotion/