Omnetpp-Instalacao

De MediaWiki do Campus São José
Ir para: navegação, pesquisa

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
    sudo apt-get install -y expat libxml2-dev blt
    
  2. Faça o download do Omnet++ 4.0p (aprox. 109 MB) para dentro do seu diretório home:
    cd ~
    wget http://tele.sj.ifsc.edu.br/~msobral/simulador/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, que contém o código fonte dos componentes dos mecanismos ARQ e os arquivos de configuração do simulador.
  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
    
    A seguinte tela deve aparecer:

    Sim-arq1.png

    • Selecione o mecanismo a ser simulado:

      Sim-arq2.png

    • 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:

      Sim-arq3.png

    • 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):

      Sim-arq4.png

    • 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
      

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:
         types:
            channel Link extends ned.DatarateChannel
              {
                  delay = 0.015s;
                  datarate = 1Mbps;
                  ber = 1e-6;
              }
      
      Assim, basta alterar o parâmetro desejado, e reexecutar o simulador.

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