Mudanças entre as edições de "Omnetpp-Instalacao"
Linha 7: | Linha 7: | ||
sudo apt-get install -y expat libxml2-dev blt | sudo apt-get install -y expat libxml2-dev blt | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | # Faça o download do [http:// | + | # Faça o download do [http://tele.sj.ifsc.edu.br/~sobral/simulador/omnetpp-4.0p1-src.tgz Omnet++ 4.0p] para dentro do seu diretório home: <syntaxhighlight lang=bash> |
cd ~ | cd ~ | ||
wget http://omnetpp.org/download/release/omnetpp-4.0p1-src.tgz | wget http://omnetpp.org/download/release/omnetpp-4.0p1-src.tgz |
Edição das 09h10min de 3 de março de 2011
Tutorial para instalação do simulador Omnet++
Obs: assume-se que seu computador possua o Ubuntu Linux 9.04 ou superior.
- Instale os seguintes softwares no Ubuntu:
sudo apt-get install -y bison flex zlib1g-dev g++ libstdc++-dev tcl8.5-dev tk8.5-dev sudo apt-get install -y expat libxml2-dev blt
- Faça o download do Omnet++ 4.0p para dentro do seu diretório home:
cd ~ wget http://omnetpp.org/download/release/omnetpp-4.0p1-src.tgz
- Descompacte o arquivo que contém o código fonte do simulador:
tar xzf omnetpp-4.0p1-src.tgz
- Entre no diretório do simulador, e execute o script ./configure:
cd omnetpp-4.0p1 ./configure
- Se tudo der certo, você deve ver um monte de linhas mostradas na tela, e que finalizam com o seguinte:
configure: WARNING: Optional package Akaroa not found configure: creating ./config.status config.status: creating Makefile.inc config.status: creating test/core/runtest patching the ide configuration file. default workspace is: /home/professores/msobral/rco2/omnetpp-4.0p1/samples WARNING: The configuration script could not detect the following packages: MPI (optional) Akaroa (optional) Scroll up to see the warning messages (use shift+PgUp key), and see config.log for more details. While you can use OMNeT++ in the current configuration, please be aware that some functionality may be unavailable or incomplete. Your PATH contains /home/professores/msobral/rco2/omnetpp-4.0p1/bin. Good! TCL_LIBRARY is set. Good!
- Caso a execução do ./configure tenha falhado, observe qual foi a mensagem de erro. Normalmente a causa é a falta de algum software de que o simulador depende para ser compilado. Instale o software pedido, e tente novamente.
- Tendo sucesso no ./configure, compile o simulador:
make
- A compilação terá sido bem sucedida se ao final de todo o processo aparecer:
Now you can type "omnetpp" to start the IDE
- Execute o seguinte comando para que você possa executar o simulador diretamente (sem entrar em seu diretorio de instalação) nas próximas vezes que logar no seu computador:
echo export PATH+=:~/omnetpp-4.0p1/bin >> ~/.profile
Rodando as simulações dos mecanismos ARQ
Foram desenvolvidos componentes para simularem os três mecanismos ARQ vistos em aula:
- Stop-and-Wait
- Go-Back-N
- Selective Repeat
Para executá-los siga os passos:
- Faça o download do modelo de simulação, que contém o código fonte dos componentes dos mecanismos ARQ e os arquivos de configuração do simulador.
- Descompacte-os com o comando:
tar xzf p-to-p.tgz
- Entre no diretório p-to-p, e compile o modelo:
cd p-to-p opp_makemake -f --deep -O out make
- Se tudo der certo, deve aparecer isto na tela:
Creating Makefile in /data/rco2/p-to-p... Makefile created, running "make depend" to add dependencies... opp_makedep -Y --objdirtree -I. -Iresults -f Makefile -P\$O/ -- ./*.cc results/*.cc sobral@linux-pohy:/data/rco2/p-to-p> make g++ -c -g -Wall -fno-stack-protector -DXMLPARSER=libxml -DWITH_PARSIM -DWITH_NETBUILDER -I. -Iresults -I/data/rco2/omnetpp-4.0p1/include -o out/gcc-debug//ppif.o ppif.cc opp_msgc -s _m.cc -I. -Iresults frame.msg g++ -c -g -Wall -fno-stack-protector -DXMLPARSER=libxml -DWITH_PARSIM -DWITH_NETBUILDER -I. -Iresults -I/data/rco2/omnetpp-4.0p1/include -o out/gcc-debug//ppsink.o ppsink.cc g++ -c -g -Wall -fno-stack-protector -DXMLPARSER=libxml -DWITH_PARSIM -DWITH_NETBUILDER -I. -Iresults -I/data/rco2/omnetpp-4.0p1/include -o out/gcc-debug//ppsink2.o ppsink2.cc ppsink2.cc: In member function ‘virtual void PPSink2::handleMessage(cMessage*)’: ppsink2.cc:61: warning: unused variable ‘acking’ g++ -c -g -Wall -fno-stack-protector -DXMLPARSER=libxml -DWITH_PARSIM -DWITH_NETBUILDER -I. -Iresults -I/data/rco2/omnetpp-4.0p1/include -o out/gcc-debug//ppsource.o ppsource.cc g++ -c -g -Wall -fno-stack-protector -DXMLPARSER=libxml -DWITH_PARSIM -DWITH_NETBUILDER -I. -Iresults -I/data/rco2/omnetpp-4.0p1/include -o out/gcc-debug//ppsource2.o ppsource2.cc g++ -c -g -Wall -fno-stack-protector -DXMLPARSER=libxml -DWITH_PARSIM -DWITH_NETBUILDER -I. -Iresults -I/data/rco2/omnetpp-4.0p1/include -o out/gcc-debug//ppsource3.o ppsource3.cc g++ -c -g -Wall -fno-stack-protector -DXMLPARSER=libxml -DWITH_PARSIM -DWITH_NETBUILDER -I. -Iresults -I/data/rco2/omnetpp-4.0p1/include -o out/gcc-debug//frame_m.o frame_m.cc g++ -Wl,--export-dynamic -Wl,-rpath,/data/rco2/omnetpp-4.0p1/lib:. -o out/gcc-debug//p-to-p out/gcc-debug//ppif.o out/gcc-debug//ppsink.o out/gcc-debug//ppsink2.o out/gcc-debug//ppsource.o out/gcc-debug//ppsource2.o out/gcc-debug//ppsource3.o out/gcc-debug//frame_m.o -Wl,--whole-archive -Wl,--no-whole-archive -L"/data/rco2/omnetpp-4.0p1/lib/gcc" -L"/data/rco2/omnetpp-4.0p1/lib" -u _tkenv_lib -lopptkenvd -loppenvird -lopplayoutd -u _cmdenv_lib -loppcmdenvd -loppenvird -loppsimd -ldl -lstdc++ ln -s -f out/gcc-debug//p-to-p .
- O importante é a última linha, que informa que a compilação teve sucesso:
g++ -Wl,--export-dynamic -Wl,-rpath,/data/rco2/omnetpp-4.0p1/lib:. -o out/gcc-debug//p-to-p out/gcc-debug//ppif.o out/gcc-debug//ppsink.o out/gcc-debug//ppsink2.o out/gcc-debug//ppsource.o out/gcc-debug//ppsource2.o out/gcc-debug//ppsource3.o out/gcc-debug//frame_m.o -Wl,--whole-archive -Wl,--no-whole-archive -L"/data/rco2/omnetpp-4.0p1/lib/gcc" -L"/data/rco2/omnetpp-4.0p1/lib" -u _tkenv_lib -lopptkenvd -loppenvird -lopplayoutd -u _cmdenv_lib -loppcmdenvd -loppenvird -loppsimd -ldl -lstdc++ ln -s -f out/gcc-debug//p-to-p .
- Caso a compilação tenha falhado, verifique se a seguinte linha foi adicionada ao seu arquivo ~/.profile: Se não estiver lá, acrescente-a e também execute o seguinte no prompt do shell:
export PATH=~/omnetpp-4.0p1/bin:$PATH
Isto será necessário somente dessa vez .. nos próximos logins a variável PATH estará definida corretamente.export PATH=/data/rco2/omnetpp-4.0p1/bin:$PATH
- O importante é a última linha, que informa que a compilação teve sucesso:
- Execute o simulador dos mecanismos ARQ: A seguinte tela deve aparecer:
./p-to-p
- Selecione o mecanismo a ser simulado:
- Para Go-Back-N e Selective Repeat será necessário informar ao simulador o tamanho da janela de transmissão. Isto é perguntado duas vezes pelo simulador, e em ambas deve ser digitado o mesmo valor.
- Execute a simulação, clicando no botão Run:
- Quando quiser terminar a simulação e ver os resultados, clique no botão Stop e em seguida em Finish(botão com uma bandeira de fórmula 1):
- Os resultados da simulação estarão em um arquivo de texto dentro do subdiretório results. Cada mecanismo ARQ gera um arquivo diferente. Por exemplo, a execução do Go-Back-N durante 600s, com um link de 1 Mbps, 15 ms de atraso de propagação e BER de , resultou nos seguintes valores:
sobral@laptop:/data/rco2/p-to-p> cat results/GoBackN-0.sca version 2 run GoBackN-0-20100319-10:14:15-7684 attr configname GoBackN attr datetime 20100319-10:14:15 attr experiment GoBackN attr inifile omnetpp.ini attr iterationvars "" attr iterationvars2 $repetition=0 attr measurement "" attr network goBackN attr processid 7684 attr repetition 0 attr replication #0 attr resultdir results attr runnumber 0 attr seedset 0 scalar goBackN.burstySrc "sent frames" 40459 scalar goBackN.burstySrc retransmissions 1581 scalar goBackN.burstySrc "error ACKs" 1 scalar goBackN.burstySrc utilization 0.80919361603125 scalar goBackN.burstySrc "effective data rate" 809193.61603125 scalar goBackN.sink "received frames" 40460 scalar goBackN.sink "error frames" 1581
- Selecione o mecanismo a ser simulado:
O importante é notar os valores precedidos por scalar, os quais informam o desempenho do protocolo durante a simulação.
- Para experimentar outras combinações de taxa de transmissão, atraso de propagação e BER (taxa de erro de bit), deve-se editar o arquivo com extensão .ned correspondente a cada mecanismo ARQ (por exemplo, para o Go-Back-N há o arquivo go-back-n.ned). Dentro desse arquivo devem-se modificaros parâmetros do link, que estão definidos da seguinte forma: Assim, basta alterar o parâmetro desejado, e reexecutar o simulador.
types: channel Link extends ned.DatarateChannel { delay = 0.015s; datarate = 1Mbps; ber = 1e-6; }
- Para experimentar outras combinações de taxa de transmissão, atraso de propagação e BER (taxa de erro de bit), deve-se editar o arquivo com extensão .ned correspondente a cada mecanismo ARQ (por exemplo, para o Go-Back-N há o arquivo go-back-n.ned). Dentro desse arquivo devem-se modificaros parâmetros do link, que estão definidos da seguinte forma:
Usando o ambiente de desenvolvimento (IDE) do simulador
O ambiente de desenvolvimento se destina somente a quem queira desenvolver modelos de simulação. Esses modelos podem ser criados usando-se componentes prontos do Omnet, os quais simulam protocolos e equipamentos, e também componentes desenvolvidos pelo usuário (e que devem ser escritos na linguagem C++, e explorar a API do Omnet++). Fica aqui um guia rápido para os curiosos ... o manual detalhado está no site do Omnet++.
O IDE do Omnet se integra ao Eclipse, e pode ser executado com o seguinte comando:
omnetpp
- A tela de abertura do simulador aparecerá como abaixo. Selecione a opção "Workbench":
- O simulador mostrará sua área de trabalho com os projetos de exemplo:
- Selecione o projeto "aloha", e clique com o botão direito do mouse para abri-lo.
- Clique novamente em "aloha", e com o botão direito do mouse selecione a opção "Run as" -> "Omnet++ Simulation":
- Caso apareça a tela a seguir, escolha "omnetpp.ini":
- Clique em "Ok":
- A tela a seguir aparecerá, mostrando uma visão gráfica da rede a ser simulada:
- Para executar a simulação, clique em "Run", e veja a animação do funcionamento da rede. Para parar a simulação clique em "Stop", e depois em "Finish" (botão com uma bandeira de fórmula 1):