Mudanças entre as edições de "Omnetpp-Instalacao"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 55: Linha 55:
 
* Selective Repeat
 
* Selective Repeat
  
 
+
Para executá-los siga os passos:
 +
# Faça o download do [http://www.sj.ifsc.edu.br/~msobral/RCO2/soft/p-to-p.tgz modelo de simulação]
 +
# Descompacte-os com o comando: <syntaxhighlight lang=bash>
 +
tar xzf p-to-p.tgz
 +
</syntaxhighlight>
 +
# Entre no diretório ''p-to-p'', e compile o modelo: <syntaxhighlight lang=bash>
 +
cd p-to-p
 +
opp_makemake -f --deep -O out
 +
make
 +
</syntaxhighlight>
 +
# Se tudo der certo, deve aparecer isto na tela: <syntaxhighlight lang=text>
 +
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 .
 +
</syntaxhighlight>
 +
** O importante é a última linha, que informa que a compilação teve sucesso: <syntaxhighlight lang=text>
 +
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 .
 +
</syntaxhighlight>
 +
** Caso a compilação tenha falhado, verifique se a seguinte linha foi adicionada ao seu arquivo ''~/.profile'': <syntaxhighlight lang=bash>
 +
export PATH=~/omnetpp-4.0p1/bin:$PATH
 +
</syntaxhighlight> Se não estiver lá, acrescente-a e também execute o seguinte no prompt do shell: <syntaxhighlight lang=bash>
 +
export PATH=/data/rco2/omnetpp-4.0p1/bin:$PATH
 +
</syntaxhighlight> Isto será necessário somente dessa vez .. nos próximos logins a variável PATH estará definida corretamente.
 +
* Execute o simulador dos mecanismos ARQ: <syntaxhighlight lang=bash>
 +
./p-to-p
 +
</syntaxhighlight>
  
 
== Usando o ambiente de desenvolvimento (IDE) do simulador ==  
 
== Usando o ambiente de desenvolvimento (IDE) do simulador ==  

Edição das 09h25min de 19 de março de 2010

Tutorial para instalação do simulador Omnet++

Obs: assume-se que seu computador possua o Ubuntu Linux 9.04 ou superior.

  1. Instale os seguintes softwares no Ubuntu:
    sudo apt-get install -y bison flex zlib1g-dev g++ libstdc++-dev tcl8.5-dev tk8.5-dev
    
  2. 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
    
  3. Descompacte o arquivo que contém o código fonte do simulador:
    tar xzf omnetpp-4.0p1-src.tgz
    
  4. Entre no diretório do simulador, e execute o script ./configure:
    cd omnetpp-4.0p1
    ./configure
    
  5. 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!
    
  6. 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.
  7. Tendo sucesso no ./configure, compile o simulador:
    make
    
  8. A compilação terá sido bem sucedida se ao final de todo o processo aparecer:
    Now you can type "omnetpp" to start the IDE
    
  9. 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:

  1. Faça o download do modelo de simulação
  2. Descompacte-os com o comando:
    tar xzf p-to-p.tgz
    
  3. Entre no diretório p-to-p, e compile o modelo:
    cd p-to-p
    opp_makemake -f --deep -O out
    make
    
  4. 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:
      export PATH=~/omnetpp-4.0p1/bin:$PATH
      
      Se não estiver lá, acrescente-a e também execute o seguinte no prompt do shell:
      export PATH=/data/rco2/omnetpp-4.0p1/bin:$PATH
      
      Isto será necessário somente dessa vez .. nos próximos logins a variável PATH estará definida corretamente.
  • Execute o simulador dos mecanismos ARQ:
    ./p-to-p
    

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
  1. A tela de abertura do simulador aparecerá como abaixo. Selecione a opção "Workbench":
    Omnet2.png
  2. O simulador mostrará sua área de trabalho com os projetos de exemplo:
    Omnet3.png
  3. Selecione o projeto "aloha", e clique com o botão direito do mouse para abri-lo.
    Omnet4.png
  4. Clique novamente em "aloha", e com o botão direito do mouse selecione a opção "Run as" -> "Omnet++ Simulation":
    Omnet5.png
  5. Caso apareça a tela a seguir, escolha "omnetpp.ini":
    Omnet6.png
  6. Clique em "Ok":
    Omnet7.png
  7. A tela a seguir aparecerá, mostrando uma visão gráfica da rede a ser simulada:
    Omnet8.png
  8. 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):
    Omnet9.png