Skip to content

Instalando o ns-2 no Ubuntu 7.10

Para quem não conhece, o Network Simulator (aka ns-2) é um simulador muito utilizado na pesquisa e desenvolvimento de protocolos de redes e que nos últimos tempos eu venho utilizando com bastante frequência, devido ao meu trabalho de graduação. O objetivo desse post não é explicar a função do ns-2 nem tampouco o seu funcionamento, mas sim disponibilizar um pequeno tutorial da instalação desse simulador baseado no meu exemplo de compilação em um Ubuntu 7.10 Tribe 5.

Se você quiser conhecer mais sobre o ns-2 e/ou sua funcionalidades, visite http://www.isi.edu/nsnam/ns/.

Download

Então vamos baixar o pacote para ser compilado. Apesar de já existir as versões 2.31 e 2.32 do software, eu utilizo o ns-2 na versão 2.30 em meus estudos por questões de compatibilidade, mas acredito que não hajam grandes mudanças na instalação em qualquer uma destas versões.


$ wget http://ufpr.dl.sourceforge.net/sourceforge/nsnam/ns-allinone-2.30.tar.gz

Instalando

Primeiro vamos instalar os pacotes necessários pelo ns-2


$ sudo aptitude install build-essential autoconf automake libxmu-dev

E agora sim, podemos instalar o simulador propriamente dito


$ tar xzvf ns-allinone-2.30.tar.gz
$ cd ns-allinone-2.30/
$ ./install

Se todos os pacotes anteriores foram instalados corretamente, você não terá nenhum problema durante o processo de compilação. Mas caso aconteça alguma coisa de errado, acesse a página de help do ns-2 para verificar a solução para o seu problema.

Agora, uma “dica” dada pelo Eduardo da Silva… Se você pretende instalar o ns-2 apenas para utiliza-lo como simulador, ou seja, se você não tem a intenção de mexer no código fonte e recompila-lo, etc. a melhor (e mais fácil) maneira de terminar a sua instalação é executando os comandos abaixo:


$ cd ns-2.30
$ make install

e feito isso, você já está com o ns-2 definitivamente instalado e configurado. Caso contrário, se você precisará mexer no código fonte e recompilar constantemente, pule as instruções acima e siga em frente no post para configurar o seu ambimente de execução. Valeu Eduardo! :)

Configurando

Agora precisamos configurar as variáveis de ambiente para que o shell reconheça os arquivos executáveis do ns-2 e facilite a nossa vida quando formos utilizar o simulador :)

Para isso vocês podem baixar o arquivo de configuração que eu criei e configurá-lo de acordo com as suas necessidades. Este arquivo toma por base que a instalação do ns-2 foi feita no home do usuário, o que não precisa ser necessariamente verdade e neste caso, você precisará configurar corretamente a variável NS_ROOT do script para que aponte para o local correto da sua instalação.


$ wget http://arthurfurlan.org/dotfiles/.ns2rc
$ echo "[ -f ~/.ns2rc ] && source ~/.ns2rc" >> ~/.bashrc

Validando

Por fim precisamos validar se tudo ocorreu como deveria e se o simulador está instalado corretamente. Para isso o ns-2 disponibiliza um script de validação para ser executado, como segue abaixo. Você estava com vontade fazer uma pausa!? Ok, então esta é a hora certa! Esse processo demoro alguns bons minutos, então vá fazer um lanche enquanto o computador faz o trabalho pesado :)


$ cd ns-2.30/
$ ./validate

E pronto! Agora você tem o seu simulador de redes devidamente instalado e funcionando, divirta-se! :)

UPDATE1: Adicionado o caminho do script setdest no arquivo de configuração do ns-2

UPDATE2: O urlan deixou nos comentários desse post o link para a documentação em doxygen do ns 2.9: http://www.auto-nomos.de/ns2doku/main.html

41 Comments

  1. Danilo wrote:

    WGET?!?!

    já não tá na hora de fazer seus .deb’s não?! hehehe

    []’s

    Danilo

    Posted on 15-Sep-07 at 2:29 am | Permalink
  2. Danilo:
    O ns-2 geralmente é utilizado para fins de pesquisa. Portanto o seu código-fonte é alterado/recompilado constantemente (leia-se: várias vezes por dia) o que impossibilita a criação de um pacote .deb

    Posted on 20-Sep-07 at 9:17 am | Permalink
  3. Estevam wrote:

    Gostei, fico muito bem explicado, talvez só faltou colocar um comentário final do ./configure, o make, e o make install. Para iniciantes pode não parecer “óvio”, execeto para iniciantes feito eu =).

    Posted on 27-Oct-07 at 4:36 pm | Permalink
  4. Estevam:
    Na versão ns-allinone-* o comando ./install já faz isso para você. :)

    Posted on 28-Oct-07 at 9:21 pm | Permalink
  5. Estevam wrote:

    Pra que facilitar se a gente pode complicar?
    hehehe

    Posted on 01-Nov-07 at 1:31 am | Permalink
  6. Lucas wrote:

    Parabéns pela explicação! Consegui instalar mas, visto que sou um iniciante em Linux, não sei o que fazer com o arquivo de configuração que você indicou para se baixar.

    Posted on 07-Feb-08 at 4:49 pm | Permalink
  7. Lucas:
    Se o diretório do ns-2.30 estiver no seu home (/home/lucas/ns-allinone-2.30), você não precisa configurar nada. Basta executar:

    
    $ ns seu-script.tcl
    

    Se estiver em outro local, você vai precisar entrar no arquivo de configuração:

    
    $ gedit ~/.ns2rc
    

    E editar a linha:

    
    BASEPATH=$HOME/ns-allinone-2.30
    

    Fazendo com que aponte para o seu diretório de instalação do ns-2.30. Por exemplo:

    
    BASEPATH=/home/lucas/algum-diretorio/outro-diretorio/ns-allinone-2.30
    
    Posted on 07-Feb-08 at 5:15 pm | Permalink
  8. Lucas wrote:

    Entendi. É como colocar uma variável nova no PATH do Windows pra ele reconhecer de qualquer diretório em que eu esteja. Só +1 probleminha: onde fica o .ns2rc?

    Posted on 07-Feb-08 at 6:50 pm | Permalink
  9. Lucas wrote:

    Puxa, eu não sabia que “~” era um diretório… Deu pra notar o meu nível de iniciante, né? Agora funcionou. Agradeço a ajuda! Se quiser apagar esses meus 2 últimos comentários, fique à vontade, mas talvez isso possa ajudar os iniciantes do meu nível.

    Posted on 07-Feb-08 at 7:15 pm | Permalink
  10. Lucas:
    Exato! Na verdade o que o script faz é colocar todos os diretórios necessários pelo ns-2 no PATH do Linux.

    As suas dúvidas podem ser as dúvidas de outras pessoas. :)

    Posted on 07-Feb-08 at 9:35 pm | Permalink
  11. Milena Lima wrote:

    Arthur,
    estou instalando o NS 2.28 e 2.27 no ubuntu,
    posso seguir esse mesmo caminho que foi descrito
    anteriormente??

    Posted on 28-Feb-08 at 12:30 am | Permalink
  12. Milena Lima:
    Sinceramente? Não me lembro… Eu tive problemas para instalar a versão 2.6 do ns-2, porque pelo que eu me lembro ela utiliza uma versão antiga do gcc mas as versões 2.27 e 2.28 eu realmente não lembro.

    Posted on 28-Feb-08 at 1:31 am | Permalink
  13. Milena Lima wrote:

    Syntax error: Unterminated quoted string
    tcl8.3.2 configuration failed! Exiting …
    Tcl is not part of the ns project.

    Vc poderia me explicar q erro seria esse?

    Obrigada

    Posted on 02-Mar-08 at 10:20 am | Permalink
  14. Milena Lima:
    Hm, só com essas informações fica difícil… Mas pela mensagem de erro, parece que o compilador não conseguiu encontrar o Tcl durante a processo de instalação. Você está utilizando a versão allinone?

    Posted on 03-Mar-08 at 2:44 pm | Permalink
  15. Geveson de Oliveira wrote:

    Como faço para instalar a versão 2.32,no UBUNTU 7.10,no NS?
    na hora do comando ./intall aparece essas mensagens:
    ============================================================
    * Testing for Darwin (OS X) environment
    ============================================================
    ============================================================
    * Testing for Cygwin environment
    ============================================================
    Cygwin not detected, proceeding with regular install.
    ============================================================
    * Build XGraph-12.1
    ============================================================
    cd: 280: can’t cd to ./xgraph-12.1
    ./install: 281: ./configure: not found
    make: *** Nenhum alvo indicado e nenhum arquivo make encontrado. Pare.
    Can not create xgraph; But xgraph is an optional package, continuing…
    ============================================================
    * Build CWeb
    ============================================================
    cd: 300: can’t cd to ./cweb
    Making cweb
    Makefile.in is newer than Makefile.
    You need to re-run configure.
    false
    make: ** [Makefile] Erro 1
    cweb failed to make, but it’s optional
    chmod: impossível acessar `cweave’: Arquivo ou diretório inexistente
    chmod: impossível acessar `ctangle’: Arquivo ou diretório inexistente
    ln: objetivo `cweave’ existe, mas não é um diretório
    ln: objetivo `ctangle’ existe, mas não é um diretório
    ============================================================
    * Build Stanford GraphBase
    ============================================================
    cd: 331: can’t cd to ./sgb
    Unable to create sgb library. This library is used by gt-itm and so for scenario generators. If you already have sgblib (possible if you are on solaris,sunos or freebsd platforms) you may still be able to run gt-itm. so continuing..
    ============================================================
    * Build GT-ITM
    ============================================================
    sgb lib not found. gt-itm & sgb2ns could not be installed. Continuing..
    ============================================================
    * Build zlib
    ============================================================
    cd: 390: can’t cd to ./zlib-1.2.3
    ./install: 402: ./configure: not found
    Zlib-1.2.3 configuration failed, but it’s optional, so continuing …
    ============================================================
    * Build tcl8.4.15
    ============================================================
    cd: 412: can’t cd to ./tcl8.4.15/unix
    ./install: 419: ./configure: not found
    tcl8.4.15 configuration failed! Exiting …
    Tcl is not part of the ns project. Please see http://www.Scriptics.com
    to see if they have a fix for your platform.

    Posted on 25-Mar-08 at 7:15 pm | Permalink
  16. Geveson de Oliveira:
    Apesar de não utilizar a versão 2.32, eu instalei ela para testar (seguindo este tutorial) e a instalação ocorreu normalmente.

    Pelo que li da sua mensagem de erro, eu acredito que você não deve ter instalado todos os pacotes necessários antes de executar o script “./install”. Você tem certeza que possui os pacotes build-essential, autoconf, automake e libxmu-dev instalados? Caso contrário, execute o seguinte comando:

    $ sudo aptitude install build-essential autoconf automake libxmu-dev
    Posted on 25-Mar-08 at 11:26 pm | Permalink
  17. Matheus wrote:

    Olá, tentei seguir seu tutorial para instalar o NS 2.30 no Ubuntu 6.06 LTS e gostaria de saber algumas coisas:

    Na hora que eu insiro o comando
    $ sudo aptitude install build-essential autoconf automake libxmu-dev

    Pede uma senha e eu insiro minha senha de usuário aqui da Universidade. A senha passa mas não aparece nenhum mensagem. É assim mesmo?

    Após isso e começcar a instalar com o comando ./install eu tenho o seguinte erro a instalação é cancelada após todas aquelas mensagens durante a instalação:

    erro: request for member ‘borderTable’ in something not a structure or union
    /home/matheus/Desktop/NS/ns-allinone-2.30/tk8.4.13/unix/../generic/tk3d.c:1396: erro: syntax error before ‘)’ token
    {standard input}: Assembler messages:
    {standard input}:13: Error: symbol `q’ is already defined
    {standard input}:25: Error: symbol `q’ is already defined
    {standard input}:31: Error: symbol `q’ is already defined
    {standard input}:37: Error: symbol `p’ is already defined
    {standard input}:79: Error: symbol `dy’ is already defined
    {standard input}:85: Error: symbol `dx’ is already defined
    make: ** [tk3d.o] Erro 1
    tk8.4.13 make failed! Exiting …
    For problems with Tcl/Tk see http://www.scriptics.com
    matheus@projhumberto:~/Desktop/NS/ns-allinone-2.30$
    matheus@projhumberto:~/Desktop/NS/ns-allinone-2.30$

    Poderia me ajudar?
    Obrigado.

    Posted on 11-Apr-08 at 12:57 pm | Permalink
  18. Matheus:
    Com relação á senha, isso acontece porque você não é um sudoer, ou seja, não tem permissão para utilizar o comando sudo. E a parte do erro, provavelmente ocorre porque está faltando uma das bibliotecas que não foram instaladas no passo anterior.

    Posted on 13-Apr-08 at 2:02 pm | Permalink
  19. Bia wrote:

    Arthur,

    Preciso rodar tanto o ns 2.33 quanto o 2.19b na mesma máquina, porém a mais antiga precisa de uma versão anterior ao gcc, o q fazer?

    Posted on 16-Apr-08 at 4:10 pm | Permalink
  20. Bia:
    Hm, para fazer isso você via ter que instalar em standalone a versão anterior do gcc, o que é um problema… Porque ela precisa de um versão antiga da libc, então você também vai ter que instalar também a libc e compilar o ns 2.19b passando esses diretórios.

    Feito isso, na hora de compilar o ns 2.19b ocorre um problema que, pelo que eu pesquisei, é relacionado a um bug antigo da libc que existe nessa versão da libc que você instalou.

    Resumindo, eu já tentei instalar essa versão do ns e não obtive sucesso! Se você conseguir, me manda o caminho das pedras. :)

    Posted on 22-Apr-08 at 3:29 am | Permalink
  21. Matheus wrote:

    Obrigado Arthur, consegui finalmente instalar a NS, e valdei corretamente. Acho que tá tudo certo..

    Eu só precisei entrar com root na máquina e fazer o processo que você descreveu.

    Obrigado!

    Posted on 24-Apr-08 at 10:40 am | Permalink
  22. Bia wrote:

    Poxa… vc era minha última esperança…rsss

    Posted on 24-Apr-08 at 11:19 am | Permalink
  23. Norxs wrote:

    $ ns
    bash: /usr/bin/ns: Arquivo ou diretório inexistente

    não consigo abrir o ns …

    Posted on 27-Apr-08 at 10:04 pm | Permalink
  24. Matheus:
    Boa! :)

    Bia:
    Hahaha… Que isso, não desiste não!? E quando descobrir, não esquece que vir aqui me dizer como fez. :)

    Norxs:
    Você efetuou corretamente a sessão de “CONFIGURANDO” deste tutorial? O seu problema é que o sistema está procurando pelo ns no diretório /usr/bin e, pelo que parece, ele não está lá. A proposta aqui deste tutorial é configurar as suas variáveis de ambiente para adicionar os diretórios de instalação do ns na variável PATH.

    Posted on 28-Apr-08 at 12:30 am | Permalink
  25. Norxs wrote:

    configurei .. eu estava fazendo errado … agora funciono … só uma pergunta … tu tens que protocolos configurados no teu ns??

    Posted on 29-Apr-08 at 1:11 am | Permalink
  26. Norxs wrote:

    outra pergunta .. quando adiciona um novo protocolo .. tem que fazer o que?

    Posted on 29-Apr-08 at 1:12 am | Permalink
  27. Norxs:
    Eu possuo somentes os protocolos instalados por padrão.

    Se o protocolo que você deseja adiconar já estiver implementado para o ns2, basta baixar o código e compilar. Caso contrário, você mesmo vai ter que implementa-lo.

    Posted on 29-Apr-08 at 1:45 am | Permalink
  28. urlan wrote:

    Fala Arthur, tudo bem?

    Te perguntar, você sabe se existe em algum site a versão 2.33 documentado usando-se o doxygen?

    Posted on 04-May-08 at 3:38 pm | Permalink
  29. urlan:
    Opa, tudo bom urlan?

    Com relação ao doxygen, eu nunca vi e acho difícil de encontrar.

    A versão 2.33 acabou de ser lançada (1 mês atrás), então mesmo que exista algum esforço nesse sentido, eu acho difícil que já se tenham documentado toda a nova versão.

    Se/Quando você encontrar, não esquece de voltar aqui para avisar. :)

    Posted on 04-May-08 at 4:14 pm | Permalink
  30. urlan wrote:

    Tudo tranquilo por aqui =).

    Eu só encontrei no oráculo (google) a documentação do ns2 usando o doxygen para a versão abaixo da 2.29 e pelo que eu estou sabendo, existem novas correções para bugs no MAC, que eu vou precisar hehehe.

    Documentação do ns2.29 utilizando o Doxygen: http://www.auto-nomos.de/ns2doku/main.html

    Abração, valeu =).

    Posted on 04-May-08 at 5:17 pm | Permalink
  31. urlan:
    Bem legal isso! Vou colocar esse link no post. :)

    Posted on 04-May-08 at 5:25 pm | Permalink
  32. Wagner wrote:

    Boa Noite,

    Instalei o ns pelo seu tutorial e tbm o scrip de configuração(ns2r.txt) e agora quando entro no terminal como root ele me dá o seguinte erro ” bash: /root/.ns2rc: Arquivo ou diretório inexistente ” como faço para desisntalar o script?

    Grato pela atenção!

    Posted on 12-May-08 at 9:31 pm | Permalink
  33. Wagner:
    Olá Wagner, esse erro acontece porque você adicinou a linha

    
    source ~/.ns2rc
    

    No seu script .bashrc mas não adicionou o arquivo no diretório correto. Para desinstalar o script basta remove-lo, através do comando

    
    $ rm -f ~/.ns2rc
    

    e em seguida editar o seu arquivo .bashrc (no seu caso, /root/.bashrc) para remover a linha que faz referência a esse arquivo, mostrada no início deste comentário.

    Espero que consiga resolver seu problema,
    Abraços

    Posted on 12-May-08 at 9:48 pm | Permalink
  34. Wagner wrote:

    Arthur,

    Funcionou perfeito, tinha razão o arquivo.ns2rc estava em local incorreto.

    Abraço!

    Posted on 13-May-08 at 5:59 pm | Permalink
  35. Arthur,
    vi um post perguntando sobre a questao da insercao de novos protocolos no ns. Gostaria de saber se vc tem um bom tutorial sobre isso. Eu ja vi o tutorial Marc Greis, mas o conteudo ta um pouco desatualizado e não informa realmente o que fazer. Fico no aguardo de alguma noticia.
    Até mais,

    Posted on 02-Jun-08 at 11:14 am | Permalink
  36. Breno Caetano:
    Eu acho que não tem muito o que se falar sobre a implementação de um novo protocolo no ns-2. Os pré-requisitos para isso são: saber programar em C++ e conhecer a arquitetura do ns-2.

    Quando eu comecei a mexer com o ns-2, utilizei bastante os links daqui para aprender a estrutura no ns-2. Nessa página também tem um exemplo de como montar um Agente, talvez isso possa ser o primeiro passo. :)

    Posted on 02-Jun-08 at 10:23 pm | Permalink
  37. Thiago wrote:

    Olá Arthur,

    Sou mais um iniciante no linux e NS-2 e preciso instalar o simulador para dar continuidade ao meu projeto de iniciação científica, entretanto estou com um problema.

    Segui seu tutorial, mas durante o processo de instalação do simulador ocorre um erro:

    Make: ** [tk3d.o] Erro 1
    tk8.4.13 make failed! Exiting…

    Entrei na página de help do ns-2 mas não entendi a solução do problema.

    Obrigado por sua ajuda e parabéns pelo tutorial.

    Posted on 09-Jun-08 at 2:24 am | Permalink
  38. Venyton Izidoro wrote:

    Olá Arthur, sou orientando da prof Gisane da Unicentro, estou usando Ubuntu 8.04, semana passada instalei o ns tranquilo usando o seu tutorial, mas tive que reinstalar o ubuntu e agora durante a instalação da esse erro:

    ============================================================
    * Build tcl8.4.13
    ============================================================
    configure: warning: Trabalho/ns-allinone-2.30: invalid host type
    configure: error: can only configure for one host and one target at a time
    tcl8.3.2 configuration failed! Exiting …
    Tcl is not part of the ns project. Please see http://www.Scriptics.com
    to see if they have a fix for your platform.

    sabe o que pode ser?

    obrigado

    Posted on 10-Jun-08 at 11:06 pm | Permalink
  39. Thiago:
    1. Você executou corretamente os passos anteriores a instalação ao ns-2? Houve algum erro?
    2. Você está instalando a versão allinone do ns-2? Está instalando qual versão? Em qual distribuição?
    3. O ns-2 deve ter gerado alguma mensagem de erro melhor do que o Error 1, tente encontrar e depois poste aqui… Só isso não ajuda muito a desvendar o problema! :)

    O problema é que você não conseguiu compilar o tk… A questão agora é: porque não? :)

    Venyton Izidoro:
    Se você está usando Ubuntu já é um bom começo! :)

    Esse seu erro é bem estranho, nunca vi nada parecido… Dando um procurada no Google, encontrou algumas fontes falando em executar o comando com env -i na frente. Você já tentou isso?

    
    $ env -i ./install
    

    Talvez precisa fazer um make clean antes…

    Posted on 10-Jun-08 at 11:55 pm | Permalink
  40. Venyton Izidoro wrote:

    tentei com o env -i ./install, mas não funcionou, estou procurando uma solução

    =P

    obrigado mesmo assim ^^

    Posted on 11-Jun-08 at 11:02 pm | Permalink
  41. Thiago wrote:

    Olá novamente Arthur,

    Desculpa por ter postado algo meio abstrato. Estou utilizando o ubuntu 7.10.

    Sim, segui a rigor as instruções presentes neste tutorial. Acho que meus problemas se iniciam na instalação dos pacotes necessários ao ns-2, pois aparecem msgs como:

    Não é possível encontrar nenhum pacote que casasse com “autoconf” ou “libxmu-dev”
    0 pacotes atualizados, 0 pacotes novos instalados…

    Acho que o comprometimento na instação destes pacotes impede que o restante da instalação ocorra de maneira correta.

    Obrigado por sua ajuda Arthur, se quiser apagar o post anterior tudo bem.

    []’s

    Posted on 12-Jun-08 at 2:07 am | Permalink

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*