====== Instalación de ns-3 ====== A continuación se realiza una descripción detallada del proceso de instalación del simulador ns-3 y los elementos que intervienen en él. ====== Requisitos ====== ===== Sistema Operativo ===== * **Sistema operativo tipo Unix** (**GNU/Linux**, BSD, MacOS X) o Windows usando las librerías **[[http://www.cygwin.com/|Cygwin]]**. * **Toolchain de GNU**: compilador gcc, make, gdb, etc Se usará la distribución GNU/Linux **Debian 5.0.3 (Lenny)** y su herramienta de paquetería **apt** como sistema de referencia. Los ejemplos son extrapolables a otras distribuciones y sistema de paquetes. ===== Listado de paquetes para Debian ===== Listado de paquetes Debian necesarios para la instalación de NS-3: * **gcc** (>=4.0): compilador C de GNU * **g++**: compilador C++ de GNU * **cpp**: preprocesador C++ de GNU * **pkg-config**: sistema de gestión y opciones de compilación y enlazado de bibliotecas * **libsqlite3-dev**: librerías para SGBD sqlite3 * **python** (>=2.5): lenguaje de programación Python * **python2.5-dev**: librerías de desarrollo Python * **sudo**: proporciona privilegios de root a determinados usuarios * **mercurial**: sistema de control de versiones distribuido * **bzr**: Bazaar, sistema de control de versiones distribuido * **valgrind**: depurador * **libxml2-dev**: archivos de desarrollo de la librería XML de GNOME * **gsl-bin**: librería cientírica de GNU * **libgsl0-dev** * **libgtk2.0-dev** apt-get install gcc g++ cpp pkg-config libsqlite3-dev python python2.5-dev sudo mercurial bzr valgrind libxml2-dev gsl-bin libgsl0-dev libgtk2.0-dev Los paquetes anteriores tienen una serie de dependencias que si instalarán automáticamente, la salida del anterior comando será similar a la siguiente en una instalación estándar: Leyendo lista de paquetes... Hecho Creando árbol de dependencias Leyendo la información de estado... Hecho gcc ya está en su versión más reciente. fijado gcc como instalado manualmente. g++ ya está en su versión más reciente. fijado g++ como instalado manualmente. cpp ya está en su versión más reciente. fijado cpp como instalado manualmente. python ya está en su versión más reciente. fijado python como instalado manualmente. sudo ya está en su versión más reciente. fijado sudo como instalado manualmente. mercurial ya está en su versión más reciente. Se instalarán los siguientes paquetes extras: bzrtools gdb libatk1.0-dev libcairo2-dev libdirectfb-dev libdirectfb-extra libexpat1-dev libfontconfig1-dev libfreetype6-dev libglib2.0-dev libgsl0ldbl libice-dev libjpeg62-dev libmpeg3-1 libmpeg3-dev libpango1.0-dev libpixman-1-dev libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libsm-dev libsysfs-dev libx11-dev libxau-dev libxcb-render-util0-dev libxcb-render0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxrandr-dev libxrender-dev python-crypto python-paramiko rsync x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev zlib1g-dev Paquetes sugeridos: bzr-gtk bzr-svn python-pycurl python-kerberos librsvg2-bin gdb-doc libcairo2-doc libglib2.0-doc gsl-ref-psdoc gsl-doc-pdf gsl-doc-info gsl-ref-html libgtk2.0-doc libpango1.0-doc sqlite3-doc python-crypto-dbg libc6-dbg kcachegrind alleyoop Se instalarán los siguientes paquetes NUEVOS: bzr bzrtools gdb gsl-bin libatk1.0-dev libcairo2-dev libdirectfb-dev libdirectfb-extra libexpat1-dev libfontconfig1-dev libfreetype6-dev libglib2.0-dev libgsl0-dev libgsl0ldbl libgtk2.0-dev libice-dev libjpeg62-dev libmpeg3-1 libmpeg3-dev libpango1.0-dev libpixman-1-dev libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libsm-dev libsqlite3-dev libsysfs-dev libx11-dev libxau-dev libxcb-render-util0-dev libxcb-render0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxml2-dev libxrandr-dev libxrender-dev pkg-config python-crypto python-paramiko python2.5-dev rsync valgrind x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev zlib1g-dev 0 actualizados, 62 se instalarán, 0 para eliminar y 0 no actualizados. Necesito descargar 79,1MB de archivos. Se utilizarán 241MB de espacio de disco adicional después de esta operación. ¿Desea continuar [S/n]? En la anterior salida, el sistema de paquetes //apt-get// informa de los paquetes que ya están presentes en el sistema en su versión más reciente, los que se instalarán nuevos y las dependencias extra que es necesario instalar para poder realizar el proceso. Opcionalmente, para el desarrollo en ns-3 con Python obtener e instalar el paquete **pygccxml**: sudo apt-get install gccxml wget http://sourceforge.net/projects/pygccxml/files/pygccxml/pygccxml-1.0/pygccxml-1.0.0.zip/download unzip pygccxml-1.0.0.zip cd pygccxml-1.0.0 sudo python setup.py install ====== Ramas de ns-3 ====== El proyecto ns-3 está aun en fase de desarrollo, por lo que cada cierto tiempo se toma una instantánea del proyecto, se depura y lanza como versión estable, etiquetada con su correspondiente número de versión (3.3, 3.4, 3.5, ...) [[http://code.nsnam.org|Repositorio de código de ns-3]] Las ramas más interesantes de cara al uso y desarrollo con ns-3 son: * **ns-3-dev**: rama de desarrollo, a pesar de estar en continuo cambio, es suficientemente estable como para trabajar con ella. * **ns-3.X**: ramas estables, a día de hoy la más reciente es la 3.5. * **ns-3.X-RC**: ramas candidatas a estable, a día de hoy el proyecto trabaja en la ns-3.6-RC, futura ns-3.6 versión estable. ===== ns-3-allinone ===== Aparte de estas ramas principales, cabe destacar **ns-3-allinone**, la cual únicamente contiene una colección de scripts que facilitan la selección, descarga e instalación de las anteriores ramas citadas (estable, desarrollo, RC) junto con ficheros útiles para realizar pruebas de regresión. En los ejemplos se instalará la rama de desarrollo mediante los scripts ns-3-allinone ====== Instalación ====== ===== Directorio de instalación ===== Todos los archivos generados durante la instalación de NS-3 y compilación de sus fuentes están contenidos dentro del directorio donde inicialmente se descargó el código fuente. Por tanto, puede eliminarse el simulador borrando simplemente dicho directorio, sin que quede ningún otro rastro en el sistema. Es recomendable la creación de un directorio para NS-3 dentro del directorio //home// de usuario. cd $HOME mkdir ns-3 ===== Obtener código fuente de NS-3 ===== El código del simulador NS-3 puede obtenerse por dos vías distintas: * Descarga mediante Mercurial * Descarga mediante archivo comprimido con las fuentes ===== Descarga a través de Mercurial ===== El proyecto ns-3 gestiona su repositorio de código con Mercurial. Es necesario tener instalada esta herramienta para poder hacer uso del repositorio. La descarga de código fuente mediante Mercurial es la opción más recomendable para trabajar sobre la rama de desarrollo **ns-3-dev**. Mercurial permite de manera fácil tener actualizada la copia de trabajo con todos los cambios que se van incluyendo en el repositorio. Para realizar una copia de trabajo del repositorio de código, bastará con situarse en el directorio donde se creará la copia y ejecutar: mkdir repositorio cd repositorio hg clone http://code.nsnam.org/ns-3-allinone Donde el comando //hg// tiene los siguientes parámetros: * //hg//: ejecutable de la herramienta Mercurial * //clone//: indica que la acción a realizar es la creación de una copia de trabajo * //[[http://code.nsnam.org/ns-3-allinone]]//: especifica la rama del repositorio a partir de la que se creará la copia de trabajo Tras ejecutar el anterior comando, el directorio //ns-3-allinone// contendrá los scripts que permiten descargar las versiones de desarrollo, estables, etc: build.py constants.py dist.py download.py README util.py El script **download.py** permite especificar que rama concreta del repositorio que será descargada. Si no se le pasa parámetro alguno, selecciona por defecto **ns-3-dev** (rama de desarrollo): cd ns-3-allinone ./download.py -n ns-3-dev -r ns-3-dev-ref-traces Donde: * //./download.py//: script de descarga * //-n ns-3-dev//: indica la rama de código a descargar * //-r ns-3-dev-ref-traces//: descarga los archivos necesarios para las pruebas de regresión ===== Descarga de archivo comprimido ===== El código fuente de la versión estable de ns-3 también puede ser descargada en forma de archivo comprimido. [[http://www.nsnam.org/download.html| Página de descarga de ns-3]] Este método es sólo una alternativa al uso de Mercurial. Una vez descargado el archivo, sólo hay que descomprimirlo: tar xvjf ns-allinone-3.X.tar.bz2 La estructura de directorios resultantes de la descompresión es similar a la obtenida tras descargar la rama //allinone// desde el repositorio Mercurial e invocar el script //download.py//.