introducao ao omnetpp
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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