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



42 Comments
WGET?!?!
já não tá na hora de fazer seus .deb’s não?! hehehe
[]’s
Danilo
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
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 =).
Estevam:
Na versão ns-allinone-* o comando ./install já faz isso para você. :)
Pra que facilitar se a gente pode complicar?
hehehe
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.
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:
Se estiver em outro local, você vai precisar entrar no arquivo de configuração:
E editar a linha:
Fazendo com que aponte para o seu diretório de instalação do ns-2.30. Por exemplo:
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?
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.
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. :)
Arthur,
estou instalando o NS 2.28 e 2.27 no ubuntu,
posso seguir esse mesmo caminho que foi descrito
anteriormente??
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.
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
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?
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.
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:
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.
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.
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?
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. :)
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!
Poxa… vc era minha última esperança…rsss
$ ns
bash: /usr/bin/ns: Arquivo ou diretório inexistente
não consigo abrir o ns …
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.
configurei .. eu estava fazendo errado … agora funciono … só uma pergunta … tu tens que protocolos configurados no teu ns??
outra pergunta .. quando adiciona um novo protocolo .. tem que fazer o que?
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.
Fala Arthur, tudo bem?
Te perguntar, você sabe se existe em algum site a versão 2.33 documentado usando-se o doxygen?
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. :)
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 =).
urlan:
Bem legal isso! Vou colocar esse link no post. :)
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!
Wagner:
Olá Wagner, esse erro acontece porque você adicinou a linha
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
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
Arthur,
Funcionou perfeito, tinha razão o arquivo.ns2rc estava em local incorreto.
Abraço!
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,
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. :)
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.
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
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?
Talvez precisa fazer um make clean antes…
tentei com o env -i ./install, mas não funcionou, estou procurando uma solução
=P
obrigado mesmo assim ^^
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
Post a Comment