A Discrete-Event Network Simulator
Rastreamento

Recursos

A Internet

Há vários recursos importantes que um usuário do ns-3 deve conhecer. O principal está em http://www.nsnam.org e fornece acesso a informações básicas sobre o ns-3. A documentação detalhada esta disponível no sítio principal através do endereço http://www.nsnam.org/documentation/. Nesta página, também podem ser encontrados documentos relacionados a arquitetura do sistema.

Também existe um Wiki que completa o sítio do ns-3 e pode ser encontrado em http://www.nsnam.org/wiki/. Nesta página são encontradas perguntas freqüentes - FAQs (do inglês, Frequently Asked Questions) para usuários e desenvolvedores, guias para resolução de problemas, código de terceiros, artigos, etc.

O código fonte também pode ser encontrado e explorado em http://code.nsnam.org/. Neste encontra-se a árvore de código em desenvolvimento em um repositório chamado ns-3-dev. Repositórios antigos e experimentais do núcleo de desenvolvimento podem ser encontrados neste sítio também.

Mercurial

Sistemas complexos precisam gerenciar a organização e alterações do código, bem como a documentação. Existem várias maneiras de fazer isto e o leitor provavelmente já ouviu falar de algumas. O Concurrent Version System (CVS) — em português, Sistema de Versões Concorrentes — é provavelmente o mais conhecido.

O ns-3 utiliza o Mercurial para isto. Embora não seja necessário conhecer muito sobre o Mercurial para entender este tutorial, recomenda-se a familiarização com o uso da ferramenta para acessar o código fonte do sistema. O Mercurial tem um sítio em http://www.selenic.com/mercurial/, no qual pode-se baixar diretamente os executáveis ou o código fonte deste sistema de Software Configuration Management (SCM) — em português, Software de Gerenciamento de Configuração. Selenic (o desenvolvedor do Mercurial), também fornece tutoriais em http://www.selenic.com/mercurial/wiki/index.cgi/Tutorial/, e um guia rápido em http://www.selenic.com/mercurial/wiki/index.cgi/QuickStart/.

Informações vitais de como usar o Mercurial e o ns-3 são encontradas no sítio principal do projeto.

Waf

Uma vez baixado o código fonte para o seu sistema de arquivos local, será necessário compilar estes fontes para criar os executáveis. Para esta tarefa existem várias ferramentas disponíveis. Provavelmente a mais conhecida é o Make. Além de mais conhecido, também deve ser o mais difícil de usar em grandes sistemas e com muitas opções de configuração. Por este motivo, muitas alternativas foram desenvolvidas, utilizando principalmente a linguagem Python.

O Waf é utilizado para gerar os binários no projeto ns-3. Ele faz parte da nova geração de sistemas de compilação e contrução baseados em Python. O leitor não precisa entender nada de Python para compilar o ns-3, e terá que entender um pequeno e intuitivo subconjunto da linguagem se quiser estender o sistema.

Para os interessados em mais detalhes sobre o Waf, basta acessar o sítio http://code.google.com/p/waf/.

Ambiente de Desenvolvimento

Como mencionado anteriormente, a programação no ns-3 é feita em C++ ou Python. A partir do ns-3.2, a maioria das APIs já estão disponíveis em Python, mas os modelos continuam sendo escritos em C++. Considera-se que o leitor possui conhecimento básico de C++ e conceitos de orientação a objetos neste documento. Somente serão revistos conceitos avançados, possíveis características pouco utilizadas da linguagem, dialetos e padrões de desenvolvimento. O objetivo não é tornar este um tutorial de C++, embora seja necessário saber o básico da linguagem. Para isto, existe um número muito grande de fontes de informação na Web e em materiais impressos (livros, tutoriais, revistas, etc).

Se você é inexperiente em C++, pode encontrar tutoriais, livros e sítios Web para obter o mínimo de conhecimento sobre a linguagem antes de continuar. Por exemplo, pode utilizar este tutorial.

O ns-3 utiliza vários componentes do conjunto de ferramentas GNU — “GNU toolchain” — para o desenvolvimento. Um software toolchain é um conjunto de ferramentas de programação para um determinado ambiente. Para uma breve visão do que consiste o GNU toolchain veja http://en.wikipedia.org/wiki/GNU_toolchain. O ns-3 usa o gcc, GNU binutils e gdb. Porém, não usa as ferramentas GNU para compilar o sistema, nem o Make e nem o Autotools. Para estas funções é utilizado o Waf.

Normalmente um usuário do ns-3 irá trabalhar no Linux ou um ambiente baseado nele. Para aqueles que usam Windows, existem ambientes que simulam o Linux em vários níveis. Para estes usuários, o projeto ns-3 fornece suporte ao ambiente Cygwin. Veja o sítio http://www.cygwin.com/ para detalhes de como baixá-lo (o MinGW não é suportado oficialmente, embora alguns mantenedores do projeto trabalhem com ele). O Cygwin fornece vários comandos populares do Linux, entretanto podemos ter problemas com a emulação, às vezes a interação com outros programas do Windows pode causar problemas.

Se você usa o Cygwin ou MinGW e usa produtos da Logitech, evite dores de cabeça e dê uma olhada em MinGW FAQ.

Busque por “Logitech” e leia a entrada com o assunto: “why does make often crash creating a sh.exe.stackdump file when I try to compile my source code.”. Acredite ou não, o Logitech Process Monitor influencia todas as DLLs do sistema. Isto pode ocasionar problemas misteriosos durante a execução do Cygwin ou do MinGW. Muita cautela quando utilizar software da Logitech junto com o Cygwin.

Uma alternativa ao Cygwin é instalar um ambiente de máquina virtual, tal como o VMware server e criar uma máquina virtual Linux.

Programando com Soquetes (Sockets)

Neste tutorial assume-se, nos exemplos utilizados, que o leitor está familiarizado com as funcionalidades básicas da API dos soquetes de Berkeley. Se este não for o caso, recomendamos a leitura das APIs e alguns casos de uso comuns. Uma API — do Inglês, Application Programming Interface — é um é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades. Para uma boa visão geral sobre a programação de soquetes TCP/IP sugerimos TCP/IP Sockets in C, Donahoo and Calvert.

O sítio http://cs.baylor.edu/~donahoo/practical/CSockets/ contém os códigos fontes dos exemplos do livro.

Se o leitor entender os primeiros quatro capítulos do livro (ou para aqueles que não têm acesso ao livro, os exemplos de cliente e servidor de eco mostrado no sítio anterior) estará apto para compreender o tutorial. Existe também um livro sobre soquetes multidifusão, Multicast Sockets, Makofske and Almeroth. que é um material que cobre o necessário sobre multidifusão caso o leitor se interesse.

Tabela de Conteúdo

Tópico anterior

Introdução

Próximo tópico

Iniciando

Esta Página