introducao ao omnetpp

18
 Introdu¸ ao ao OMNeT++ Hugo Soares Zaggo Outubro de 2011 Sum´ ario 1 Introdu¸c˜ao 2 2 Fluxo b´ asico 3 3 Criando uma simula¸ c˜ao usando OMNeT++ e INET 3 3.1 Iniciando um projeto e importando o INET . . . . . . . . . . . . . . . . . . . . . . 4 3.2 Criando uma topologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.3 Criando um a rquivo de cong ura¸ oes . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.4 Execut ando a simula¸ ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.5 Visua lizan do o s re sultad os da simula¸ ao . . . . . . . . . . . . . . . . . . . . . . . . 13 4 Links 16 5 Dicas 16 6 Anexos 17 6.1 Arquivos de exemplo, rede sem o Ad-Hoc . . . . . . . . . . . . . . . . . . . . . . . 17 6.1.1 LAB/src/Network.ned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.1.2 LAB/simulati ons/omnetpp.ini . . . . . . . . . . . . . . . . . . . . . . . . . 17 1

Upload: rodolfo-cruz

Post on 18-Jul-2015

260 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 1/18

 

Introducao ao OMNeT++

Hugo Soares Zaggo

Outubro de 2011

Sumario

1 Introducao 2

2 Fluxo basico 3

3 Criando uma simulacao usando OMNeT++ e INET 33.1 Iniciando um projeto e importando o INET . . . . . . . . . . . . . . . . . . . . . . 43.2 Criando uma topologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.3 Criando um arquivo de configuracoes . . . . . . . . . . . . . . . . . . . . . . . . . . 93.4 Executando a simulacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.5 Visualizando os resultados da simulacao . . . . . . . . . . . . . . . . . . . . . . . . 13

4 Links 16

5 Dicas 16

6 Anexos 176.1 Arquivos de exemplo, rede sem fio Ad-Hoc . . . . . . . . . . . . . . . . . . . . . . . 17

6.1.1 LAB/src/Network.ned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176.1.2 LAB/simulations/omnetpp.ini . . . . . . . . . . . . . . . . . . . . . . . . . 17

1

Page 2: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 2/18

 

1 Introducao

O OMNeT++ e um ambiente de simulacao de eventos. Por si so, ele nao e um simuladorde nenhuma area de conhecimento especıfica, mas por ser bastante flexıvel, pode ser usado parasimular modelos de diversas areas. Em particular, tem sido muito utilizado pela comunidadecientıfica para simular redes de comunicacoes.

O OMNeT++ usa uma arquitetura modular. Modulos sao programados em C++ (chamadosmodulos simples) e modelam o comportamento de componentes discretos do sistema que se desejasimular. Estes modulos podem ser combinados usando uma linguagem de alto nıvel chamadaNED, formando modulos compostos, que por sua vez, podem ser combinados em novos m oduloscompostos, hierarquicamente.

Apesar de o OMNeT++ nao ser um simulador de nenhuma area de conhecimento especıfica,ele permite que frameworks sejam desenvolvidas e utilizem seu ambiente de simulacao. Estas fra-

meworks sao agrupamentos de modulos que simulam uma determinada area de conhecimento. Porexemplo, existe uma framework  chamada INET que agrega ao OMNeT++ modelos de simulacao de

redes de comunicacao. Esta framework  sera usada nesta atividade. Quando se usa uma framework ,e possıvel criar simulacoes sem que se seja necessario programar em C++, ja que os modulos quesimulam o comportamento dos componentes de um modelo j a foram criados. Resta ao usuario opapel de criar topologias e configuracoes, alem de analisar os resultados das simulacoes.

2

Page 3: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 3/18

 

2 Fluxo basico

O fluxo basico do desenvolvimento e execucao de simulacoes e o seguinte:

1. Criar modulos simples que representam o comportamento do sistema a ser simulado, usandoC++

2. Criar modulos compostos a partir de modulos simples, usando a linguagem NED

3. Criar topologias que representem a simulacao, a partir de modulos simples e compostos,usando a linguagem NED

4. Fornecer parametros de execucao de simulacoes, criando configuracoes em arquivos .ini

5. Executar simulacoes

6. Analisar resultados das simulacoes

Os passos 1 e 2 podem nao ser necessarios se se usa uma framework  que tenha todos os modulosnecessarios para se executar a simulacao de interesse. Se nao ha uma framework  adequada paratal simulacao, ou se for necessario fazer modificacoes em uma framework  existente, e necessarioprogramar o comportamento de modulos usando C++.

3 Criando uma simulacao usando OMNeT++ e INET

O ambiente do laboratorio tem o programa OMNeT++ e a framework  INET previamenteinstalados. Para instala-los em seu proprio computador, siga as instrucoes de instalacao de seusrespectivos manuais.

Abra a IDE do OMNeT++ digitando o seguinte comando no terminal:

omnetpp

A figura 1 mostra a tela principal do OMNeT++. Note na figura 2 o detalhe da janela mos-trando que a pasta inet esta presente. Sua presenca indica que o INET foi instalado no workspacedo OMNeT++ corretamente.

3

Page 4: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 4/18

 

Figura 1: Tela principal do OMNeT++

Figura 2: Project Explorer

3.1 Iniciando um projeto e importando o INET

Para criar um novo projeto, selecione File/New/OMNeT++ project. Em seguida, escolha umnome para o projeto, deixe marcado Use default location e Support C++ development.Selecione Next, escolha Empty project with src and simulations folder e selecione Finish.Uma nova pasta do projeto sera criada no Project Explorer, veja 3.

Em seguida, e necessario indicar que o nosso projeto utilizara o INET. Para isso, clique com obotao direito sobre a pasta do seu projeto e selecione Properties. Na janela que se abre, selecioneProject references, marque a opcao inet, como na figura 4 e selecione OK. Isto faz com quenosso projeto “importe” o INET, permitindo que usemos os modulos por ele definidos.

4

Page 5: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 5/18

 

Figura 3: Novo projeto no Project Explorer

Figura 4: Indicando referencia ao INET

5

Page 6: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 6/18

 

3.2 Criando uma topologia

Certifique-se que o projeto INET esteja aberto, verificando se o ıcone da pasta inet no Project

Explorer e de uma pasta aberta. Caso contrario, para abrir o projeto do INET, clique com o botaodireito sobre a pasta inet e selecione Open Project.

Crie uma nova rede clicando com o botao direito sobre a pasta src de seu projeto, selecioneNew e em seguida, Network. Uma tela como a figura 5 aparecera. Indique um nome para a redeem File name.

Figura 5: Tela de criacao de uma nova rede

Se voce tiver seguido corretamente os passos ate agora, devera ter uma tela parecida coma figura 6. Voce devera ter um bloco representando sua rede, e diversos submodulos do INETdisponıveis em “Submodules”.

Topologias podem ser criadas usando a interface grafica clicando-se nos submodulos desejadose em seguida clicando dentro da area da rede. Conexoes podem ser feitas usando a ferramenta“Connection” em “Palette”. Notar que nao e necessario criar conexoes entre nos de rede sem-fio.O codigo-fonte em linguagem NED correspondente a rede criada na interface gr afica (aba Design)e automaticamente criado na aba Source, e vice-versa. Ha certas topologias que so podem sercriadas a partir do codigo-fonte, por exemplo, topologias com numero variavel de nos. Veja a figura7 para um exemplo de topologia criada usando a interface grafica, e a figura 8 com o codigo geradopelo OMNeT++. Para uma descricao completa da linguagem NED, consulte o manual de usuariodo OMNeT++.

6

Page 7: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 7/18

 

Figura 6: Projeto com INET importado e seus subm odulos disponıveis

7

Page 8: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 8/18

 

Figura 7: Exemplo de uma rede sem-fio Ad-Hoc criada usando a interface gr afica

Figura 8: Codigo gerado pelo IDE do OMNeT++ a partir da rede criada na figura 7

8

Page 9: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 9/18

 

3.3 Criando um arquivo de configuracoes

Para criar um arquivo de configuracao, clique com o botao direito sobre a pasta simulations de

seu projeto, em seguida selecione New e depois Initialization File (ini). Deixe o nome do arquivocomo omnetpp.ini (obrigatorio), clique em Next, selecione Empty Ini File, em seguida clique emFinish. O arquivo omnetpp.ini pode ser editado usando a aba Form, em uma interface grafica,ou usando a aba Source, editando-se o codigo-fonte em formato texto. Neste guia, usaremos asegunda opcao.

O arquivo omnetpp.ini e divido em configuracoes. Configuracoes sao demarcadas por “[Config(NOME)]”, onde (NOME) deve ser substituıdo pelo nome desejado para a configuracao. Todoarquivo omnetpp.ini deve, obrigatoriamente, ter uma configuracao chamada “General”, que podeser abreviada para “[General]” ao inves de “[Config General]”. Esta deve tambem ser a primeiraconfiguracao do arquivo. Quando uma configuracao diferente da “General” omite a definicao deum parametro de sua rede, e adotado o valor da configuracao “General”, se este parametro houversido nela definida. Toda configuracao deve ter uma rede definida, da seguinte forma: “network =

(CAMINHO DA REDE)”, por exemplo, “network = lab.Network”, em um projeto com o nomeLAB, e uma rede com o nome Network. Lembre-se que este par ametro tambem pode ser adotadoda configuracao “General”, caso nao tenha sido definido na propria configuracao.

Cada modulo de sua rede tera parametros que especificam seu comportamento. Alguns destesparametros tem valores padrao. Neste caso, o valor padrao e adotado se nenhum valor e espe-cificado. Outros parametros nao tem valores padrao definidos. Estes devem ser especificados noarquivo de configuracao, ou serao pedidos durante o inıcio da execucao da simulacao.

Parametros sao definidos da seguinte forma: “(CAMINHO DO PARAMETRO) = (VALOR DOPARAMETRO)”. “(CAMINHO DO PARAMETRO)” significa o caminho na hierarquia da redeque especifica um determinado parametro. Por exemplo, se houver uma rede chamada “Network”,que contem um modulo chamado “Client”, que por sua vez inclui um modulo chamado numUd-pApps, especificarıamos este parametro com a linha “Network.Client.numUdpApps = 5”, porexemplo, para definir que um Cliente tera numUdpApps = 5. Wildcards (as vezes traduzido paracuringas em portugues) tambem podem ser usados. Por exemplo, para se definir que qualquer noque tiver um parametro numUdpApps tenha o seu valor igual a 5, pode-se usar: “**.numUdpApps= 5”.

Nem todos os parametros tem valores numericos. Valores strings devem ser definidos usandoaspas duplas, exemplo, “Network.Client.udpAppType = ”UDPVideoStreamCLI””.

Os parametros disponıveis em um modulo e seu significado devem ser consultados na docu-mentacao do modulo, confira o link da referencia do INET.

Para mais detalhes sobre os arquivos INI, consulte o manual de usu ario do OMNeT++.

3.4 Executando a simulacao

Com ao menos uma topologia e uma configuracao definida, selecione o arquivo omnetpp.ini

clicando com o botao esquerdo sobre o arquivo omnetpp.ini em Project Explorer, e em seguida,clique sobre o botao Run, vide figura 9. Na primeira vez que voce tentar executar uma simulacao,uma janela com o tıtulo “Launch Configuration Created” aparecera. Selecione OK. Se nao houvererros no projeto, a tela de execucao de simulacao aparecera. Veja um exemplo na figura 10. Nestatela estarao disponıveis para escolha as configuracoes criadas em omnetpp.ini. Escolhendo umadas configuracoes disponıveis, a rede de tal configuracao sera montada no ambiente de simulacao.E tambem neste momento que o ambiente de simulacao pedira por qualquer parametro que naotenha um valor padrao e tambem nao tenha sido definida em omnetpp.ini.

A figura 11 mostra o ambiente de execucao de simulacoes apos a escolha da configuracao e adefinicao de qualquer parametro que nao tenha sido especificado. Ele e composto por duas janelas.Uma e a representacao grafica da rede, outra e um console onde os modulos podem enviar mensa-gens de status. Clicando-se em Step, a simulacao e executado um passo da simulacao, ou seja, um

9

Page 10: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 10/18

 

evento unico e simulado. Clicando-se em Run, eventos sao simulados em sucessao. Clicando-se emFast, eventos sao simulados sem que o a representacao grafica da rede seja atualizada, executando

mais rapidamente. Clicando-se em Express, eventos sao simulados sem que a representacao graficae nem o console sejam atualizados, executando a simulacao mais rapido ainda. Clicando-se em Un-til, pode-se definir o tempo de simulacao ou o numero de eventos a se simular. Alcancando-se estemomento, a simulacao e pausada. Stop pausa a simulacao em execucao.

O ambiente de simulacao e importante para se ter uma visualizacao grafica e textual do com-portamento do modelo durante sua simulacao. Clicando-se duas vezes sobre um modulo composto,pode-se tambem visualizar a comunicacao de mensagens entre componentes internos deste modulo.

Figura 9: Executando a simulacao

10

Page 11: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 11/18

 

Figura 10: Tela de escolha de configuracao

11

Page 12: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 12/18

 

Figura 11: Ambiente de simulacao em execucao

12

Page 13: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 13/18

 

3.5 Visualizando os resultados da simulacao

A simulacao pode ser finalizada por si so, quando nao ha mais eventos a serem simulados,

ou ao se fechar a janela do console da simulacao. No segundo caso, o ambiente de simulacao iraperguntar se gostaria de executar o metodo finish(). No primeiro caso, este metodo e executadoautomaticamente. Sua funcao e coletar as estatısticas geradas pelo modelo, portanto, escolha Yesquando for perguntado sobre ele. Voltando a tela principal do OMNeT++. Note que dentro dapasta simulations ha agora uma pasta chamada results. Como seu nome indica, nesta pastasao armazenados os resultados das simulacoes. Os arquivos dos resultados das simulacoes temo inıcio de seu nome igual ao da configuracao executada. Ha tres tipos de arquivo: .sca, queguardam resultados escalares; .vec, que guardam resultados vetoriais; e .vci, que sao arquivos deındice, simplesmente dizem onde cada vetor comeca dentro de um arquivo .vec, ja que todos osvetores da simulacao sao guardados no mesmo arquivo .vec. Clique duas vezes sobre o arquivo .veccorrespondente a configuracao executada. Uma tela chamada New Analysis File. O arquivode analise agrega todas as informacoes dos arquivos .vec, .vci e .sca. Por padrao, e salvo na

pasta simulations, sobre o mesmo nome da configuracao executada, com extensao .anf. Clique emFinish para gera-lo. Clique duas vezes sobre o arquivo .anf, e selecione a aba Browse Data.Uma tela como a figura 12 sera mostrada. Nesta tela, voce podera visualizar todas as estatısticasgeradas pela simulacao. Podera tambem exportar estes dados clicando com o botao direito sobrea estatıstica de interesse e selecionando Export data. Clicando duas vezes sobre uma estatısticavetorial, seu grafico sera gerado. Como exemplo, vide figura 13, que mostra o o end to end delay 

(atraso ponto a ponto) da transmissao de vıdeo simulada.

13

Page 14: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 14/18

 

Figura 12: Visualizacao dos dados coletados durante a simulacao

14

Page 15: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 15/18

 

Figura 13: Grafico de uma estatıstica vetorial

15

Page 16: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 16/18

 

4 Links

Seguem alguns links relevantes. O Tutorial TicToc e uma boa introducao a criacao de ummodelo no OMNeT++, incluindo a programacao de um modulo simples. O Manual de usuarioe uma boa fonte de referencia. Para as atividades deste roteiro, em especial, sao interessantes ocapıtulo 2, que da uma visao geral do OMNeT++; o capıtulo 3, sobre a linguagem NED, usada paracriar modulos compostos e topologias; e o capıtulo 9, sobre a sintaxe dos arquivos de configuracoesdas simulacoes.

• Links do OMNeT++

– Site do OMNeT++

http://www.omnetpp.org

– Manual de instalacao

http://omnetpp.org/doc/omnetpp41/InstallGuide.pdf– Tutorial TicToc

http://www.omnetpp.org/doc/omnetpp/tictoc-tutorial/

– Manual de usuario

http://www.omnetpp.org/doc/omnetpp41/Manual.pdf

– Referencia da API

http://www.omnetpp.org/doc/omnetpp41/api/index.html

• Links do INET

– Site do INET

http://inet.omnetpp.org– Manual do INET

http://inet.omnetpp.org/doc/inet-manual-DRAFT.pdf

– Referencia do INET

http://inet.omnetpp.org/doc/INET/neddoc/index.html

5 Dicas

• A pasta examples, dentro da pasta inet contem diversos exemplos que podem ser execu-tados. Pode-se tambem abrir os arquivos .ned e omnetpp.ini que os geraram. E uma otimafonte de inspiracao!

• Nao ha um modelo no INET especificamente para aplicacoes FTP. No entanto, ha um modelopara aplicativos TCP. Pode-se usar um aplicativo TCPSessionApp para simular um servidorFTP e um aplicativo TCPSinkApp para simular um cliente FTP.

• Toda simulacao que use nos de redes sem-fio devem necessariamente usar um e apenas ummodulo do tipo ChannelControl. Este no modela o canal de comunicacao.

• O modulo FlatNetworkConfigurator e extremamente util, ele configura automaticamente osIPs e tabelas de roteamento dos nos.

• A documentacao e sua amiga, veja os links.

16

Page 17: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 17/18

 

6 Anexos

6.1 Arquivos de exemplo, rede sem fio Ad-Hoc6.1.1 LAB/src/Network.ned

package lab;

import inet.nodes.adhoc.MobileHost;

import inet.networklayer.autorouting.FlatNetworkConfigurator;

import inet.world.ChannelControl;

network Network

{

@display("bgb=304,218");

submodules:

channelControl: ChannelControl {

@display("p=59,53");

}

flatNetworkConfigurator: FlatNetworkConfigurator {

@display("p=200,58");

}

Server: MobileHost {

@display("p=200,142");

}

Client: MobileHost {

@display("p=59,142");

}}

6.1.2 LAB/simulations/omnetpp.ini

[General]

[Config Networ]

network = lab.Network

Network.channelControl.playgroundSizeX = 300Network.channelControl.playgroundSizeY = 200

Network.Client.numUdpApps = 1

Network.Client.udpAppType = "UDPVideoStreamCli"

Network.Client.udpApp[*].localPort = 8000

Network.Client.udpApp[*].serverAddress = "Server"

Network.Client.udpApp[*].serverPort = 8001

Network.Client.wlan.mac.maxQueueSize = 1500

Network.Client.wlan.mac.bitrate = 11Mbps

Network.Client.wlan.radio.bitrate = 11Mbps

Network.Client.wlan.radio.sensitivity = -100mW

17

Page 18: Introducao Ao Omnetpp

5/16/2018 Introducao Ao Omnetpp - slidepdf.com

http://slidepdf.com/reader/full/introducao-ao-omnetpp 18/18

 

Network.Server.numUdpApps = 1

Network.Server.udpAppType = "UDPVideoStreamSvr"Network.Server.udpApp[*].serverPort = 8001

Network.Server.udpApp[*].waitInterval = 0.1ms

Network.Server.udpApp[*].packetLen = 1000B

Network.Server.udpApp[*].videoSize = 100MB

Network.Server.wlan.mac.maxQueueSize = 1500

Network.Server.wlan.mac.bitrate = 11Mbps

Network.Server.wlan.radio.bitrate = 11Mbps

Network.Server.wlan.radio.sensitivity = -100mW

18