{"id":86559,"date":"2020-06-26T19:42:13","date_gmt":"2020-06-26T17:42:13","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12"},"modified":"2020-06-26T19:42:13","modified_gmt":"2020-06-26T17:42:13","slug":"uchebnik-po-simulyatoru-seti-ns-3-glavy-12","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","title":{"rendered":"Manual del simulador de redes ns-3. Cap\u00edtulos 1, 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Este art\u00edculo inicia una serie de publicaciones con la traducci\u00f3n del manual \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/docs\/release\/3.30\/tutorial\/ns-3-tutorial.pdf\">ns-3 Tutorial Release ns-3.29<\/a><\/noindex>\" sobre el simulador de redes ns-3. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Manual del simulador de redes ns-3. Cap\u00edtulos 1, 2\" src=\"\/wp-content\/uploads\/2020\/06\/cddee391ba8763baab6eaa185e081bf6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Este documento es una traducci\u00f3n del documento original en ingl\u00e9s, que fue escrito en <noindex><a rel=\"nofollow\" href=\"http:\/\/docutils.sourceforge.net\/rst.html\">reStructuredText<\/a><\/noindex> para <noindex><a rel=\"nofollow\" href=\"http:\/\/sphinx.pocoo.org\/\">Sphinx<\/a><\/noindex> y se encuentra en el directorio <em>doc\/tutorial<\/em> del c\u00f3digo fuente de ns-3.<\/p>\n<p><\/p>\n<p>1 Introducci\u00f3n<br \/>\n1.1 Sobre ns-3<br \/>\n1.2 Para usuarios de ns-2<br \/>\n1.3 Participaci\u00f3n en el proyecto<br \/>\n1.4 Estructura del manual<br \/>\n2 Fuentes de informaci\u00f3n<br \/>\n2.1 Red<br \/>\n2.2 Git<br \/>\n2.3 WAF<br \/>\n2.4 Entorno de desarrollo<br \/>\n2.5 Programaci\u00f3n de sockets<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497318\/\">cap\u00edtulo 3<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497478\/\">cap\u00edtulo 4<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/498372\/\">cap\u00edtulo 5<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/500170\/\">cap\u00edtulo 6<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/507472\/\">cap\u00edtulo 7<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/507770\/\">cap\u00edtulos 8, 9<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/508218\/\">Descargar la traducci\u00f3n en un solo archivo pdf<\/a><\/noindex><\/p>\n<p><\/p>\n<p>La documentaci\u00f3n primaria para el proyecto ns-3 est\u00e1 disponible en cinco formatos:<\/p>\n<p><\/p>\n<ul>\n<li>Documentaci\u00f3n de la API del simulador: ns-3 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/doxygen\/index.html\">Doxygen<\/a><\/noindex>.<\/li>\n<li>Manual, gu\u00eda y biblioteca de modelos para <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/documentation\/latest\/\">la \u00faltima versi\u00f3n<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/ns-3-dev\/documentation\/\">\u00e1rbol de desarrollo<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/wiki\/Main_Page\">Wiki<\/a><\/noindex> ns-3.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<h2 id=\"glava-1\">Cap\u00edtulo 1<\/h2>\n<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"predislovie\">Pr\u00f3logo<\/h3>\n<p><\/p>\n<p>El simulador ns-3 es un simulador de red con eventos discretos, dise\u00f1ado principalmente para la investigaci\u00f3n y el uso educativo. El proyecto que desarrolla ns-3 comenz\u00f3 en 2006 y es un proyecto de c\u00f3digo abierto.<\/p>\n<p><\/p>\n<p>El objetivo de esta gu\u00eda es presentar ns-3 a nuevos usuarios de manera sistem\u00e1tica y estructurada. A veces, puede ser dif\u00edcil para un principiante obtener la informaci\u00f3n necesaria y convertirla en modelado funcional. En esta gu\u00eda realizaremos varios ejemplos de modelado, mostrando y explicando conceptos clave y caracter\u00edsticas a lo largo del camino.<\/p>\n<p><\/p>\n<p>A medida que avanzamos, presentaremos la documentaci\u00f3n completa de ns-3 y proporcionaremos enlaces al c\u00f3digo fuente para aquellos interesados en una comprensi\u00f3n m\u00e1s profunda de c\u00f3mo funciona el sistema.<\/p>\n<p><\/p>\n<p>Al principio, es importante se\u00f1alar algunos puntos clave:<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 tiene un c\u00f3digo fuente abierto, y el proyecto busca mantener un entorno abierto donde los investigadores puedan contribuir y compartir sus desarrollos.<\/li>\n<li>ns-3 no es una extensi\u00f3n compatible con versiones anteriores de ns-2, sino un nuevo simulador. Ambos simuladores est\u00e1n escritos en C++, pero ns-3 es un simulador nuevo que no es compatible con las interfaces API de ns-2.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"11-o-ns-3\">1.1 Sobre ns-3<\/h3>\n<p><\/p>\n<p>El simulador ns-3 fue desarrollado para proporcionar una plataforma abierta y extensible para la modelizaci\u00f3n de redes, investigaci\u00f3n en redes y educaci\u00f3n. En resumen, ns-3 ofrece modelos de c\u00f3mo se implementan y funcionan las redes de paquetes, y proporciona al usuario un motor de simulador para llevar a cabo experimentos de simulaci\u00f3n. Las razones para utilizar ns-3 pueden ser situaciones donde se requiere realizar investigaciones que son dif\u00edciles o imposibles de ejecutar en un sistema real, la posibilidad de estudiar el comportamiento del sistema en un entorno estrictamente controlado y reproducible, as\u00ed como aprender sobre el funcionamiento de las redes. <\/p>\n<p><\/p>\n<p>Los usuarios notar\u00e1n que el conjunto de modelos proporcionado en ns-3 se centra en la modelizaci\u00f3n del funcionamiento de protocolos de Internet y redes, pero ns-3 no se limita solo a sistemas de Internet; algunos usuarios utilizan ns-3 para modelizar sistemas que no est\u00e1n basados en tecnolog\u00edas de Internet.<\/p>\n<p><\/p>\n<p>Existen muchas herramientas para la modelizaci\u00f3n de redes. A continuaci\u00f3n, se presentan algunas caracter\u00edsticas distintivas de ns-3 en comparaci\u00f3n con otras herramientas.<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 fue dise\u00f1ado como un conjunto de bibliotecas que pueden combinarse entre s\u00ed, as\u00ed como con otras bibliotecas de software externas. Mientras que algunas plataformas de modelizaci\u00f3n proporcionan a los usuarios un entorno integrado con una interfaz gr\u00e1fica de usuario que gestiona toda la operaci\u00f3n, ns-3 es m\u00e1s modular en este aspecto. Con ns-3 se pueden utilizar varios animadores externos, herramientas de an\u00e1lisis de datos y visualizaci\u00f3n. Sin embargo, se espera que los usuarios trabajen en la l\u00ednea de comandos y con herramientas de desarrollo de software en C++ y\/o Python.<\/li>\n<li>ns-3 se utiliza principalmente en sistemas Linux o macOS, aunque hay soporte para sistemas BSD y tambi\u00e9n para plataformas Windows capaces de compilar c\u00f3digo para Linux, como el Subsistema de Windows para Linux o Cygwin. Visual Studio nativo de Windows actualmente no es compatible, aunque el desarrollador est\u00e1 trabajando en implementar esta posibilidad. Los usuarios de Windows tambi\u00e9n pueden usar una m\u00e1quina virtual con Linux.<\/li>\n<li>ns-3 no es un producto oficialmente soportado por ninguna empresa. El soporte para ns-3 se realiza con el m\u00e1ximo compromiso en el foro de usuarios de ns-3 (ns-3-users@googlegroups.com).<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"12-dlya-polzovateley-ns-2\">1.2 Para usuarios de ns-2<\/h3>\n<p><\/p>\n<p>Para aquellos que est\u00e1n familiarizados con ns-2 (una herramienta popular que precedi\u00f3 a ns-3), el cambio m\u00e1s notable al pasar a ns-3 es la modificaci\u00f3n del lenguaje de scripts. Los programas en ns-2 est\u00e1n escritos en OTcl, y los resultados de la simulaci\u00f3n se pueden visualizar utilizando el animador de redes nam. En ns-2, no es posible ejecutar una simulaci\u00f3n exclusivamente en C++ (es decir, como un programa main() sin ning\u00fan OTcl). Adem\u00e1s, algunos componentes de ns-2 est\u00e1n escritos en C++, mientras que otros est\u00e1n en OTcl. En ns-3, el simulador est\u00e1 completamente escrito en C++ con enlaces opcionales a Python. Por lo tanto, los scripts de simulaci\u00f3n pueden ser escritos tanto en C++ como en Python. Nuevos animadores y visualizadores est\u00e1n disponibles y contin\u00faan en desarrollo. Dado que ns-3 genera archivos de trazas de paquetes pcap, tambi\u00e9n se pueden utilizar otras utilidades para analizar las trazas. En esta gu\u00eda, primero nos centraremos en los scripts implementados en C++ y en la interpretaci\u00f3n de los resultados a trav\u00e9s del an\u00e1lisis de los archivos de traza.<\/p>\n<p><\/p>\n<p>Pero tambi\u00e9n hay similitudes (por ejemplo, ambas herramientas est\u00e1n basadas en objetos C++, parte del c\u00f3digo de ns-2 fue portado a ns-3). A medida que avancemos, intentaremos mostrar las diferencias entre ns-2 y ns-3.<\/p>\n<p><\/p>\n<p>Una pregunta que a menudo escuchamos es: \"\u00bfDeber\u00eda seguir usando ns-2 o cambiar a ns-3?\" Seg\u00fan el autor, si el usuario no est\u00e1 atado de alguna manera a ns-2 (basado en su comodidad y conocimiento personal de ns-2, o en un modelo de simulaci\u00f3n espec\u00edfico que solo est\u00e1 disponible en ns-2), entonces ser\u00e1 m\u00e1s productivo con ns-3 por las siguientes razones:<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 es activamente soportado con una lista de correo de usuarios activa y receptiva, mientras que ns-2 est\u00e1 soportado solo ligeramente y no ha visto cambios significativos en su \u00e1rbol de c\u00f3digo principal en m\u00e1s de diez a\u00f1os.<\/li>\n<li>ns-3 ofrece caracter\u00edsticas que no est\u00e1n disponibles en ns-2, como un entorno de ejecuci\u00f3n de c\u00f3digo de implementaci\u00f3n (que permite a los usuarios ejecutar c\u00f3digo real de implementaci\u00f3n en el simulador).<\/li>\n<li>ns-3 proporciona un nivel base de abstracci\u00f3n m\u00e1s bajo en comparaci\u00f3n con ns-2, lo que le permite ajustarse mejor a la forma en que interact\u00faan los sistemas reales. Algunas limitaciones encontradas en ns-2 (por ejemplo, el soporte correcto para m\u00faltiples tipos de interfaces en un nodo) han sido solucionadas en ns-3.<\/li>\n<\/ul>\n<p><\/p>\n<p>Gracias a su larga historia, ns-2 tiene un conjunto de m\u00f3dulos soportados m\u00e1s diverso que ns-3. Sin embargo, ns-3 presenta modelos m\u00e1s detallados en varias \u00e1reas de investigaci\u00f3n populares (incluyendo modelos complejos de LTE y WiFi); su soporte para el c\u00f3digo de implementaci\u00f3n permite una amplia gama de modelos de alta precisi\u00f3n. Los usuarios pueden sorprenderse al descubrir que toda la pila de red de Linux puede ser encapsulada en un nodo ns-3 utilizando el marco de ejecuci\u00f3n de c\u00f3digo directo (DCE). Modelos de ns-2 a veces pueden ser portados a ns-3, especialmente si han sido implementados en C++.<\/p>\n<p><\/p>\n<p>Si tienes dudas, una buena recomendaci\u00f3n ser\u00eda mirar ambos simuladores (as\u00ed como otros) en particular los modelos disponibles para tu investigaci\u00f3n, pero ten en cuenta que tu resultado puede ser mejor utilizando una herramienta que actualmente est\u00e1 en desarrollo activo y soporte (ns-3).<\/p>\n<p><\/p>\n<h3 id=\"13-uchastie-v-proekte\">1.3 Participaci\u00f3n en el proyecto<\/h3>\n<p><\/p>\n<p>ns-3 es un simulador educativo e investigativo para la comunidad de investigadores. Se apoyar\u00e1 en las contribuciones actuales de la comunidad para el desarrollo de nuevos modelos, la depuraci\u00f3n o el soporte de los existentes y la compartici\u00f3n de resultados. Hay una cierta pol\u00edtica que, esperamos, incentivar\u00e1 a las personas a contribuir a ns-3, tal como lo hacen para ns-2:<\/p>\n<p><\/p>\n<ul>\n<li>Licenciamiento de c\u00f3digo abierto compatible con la licencia GNU GPLv2.<\/li>\n<li>wiki.<\/li>\n<li>P\u00e1gina <noindex><a rel=\"nofollow\" href=\"http:\/\/www.pocoo.org\/\">C\u00f3digo de colaboradores<\/a><\/noindex>, similar a la popular p\u00e1gina para ns-2.<\/li>\n<li>Uso de GitLab.com, incluido el sistema de seguimiento de errores:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.gitlab.com\/nsnam\">https:\/\/www.gitlab.com\/nsnam<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Entendemos que, incluso si est\u00e1 leyendo este documento, es posible que en esta etapa no planee contribuir a \u00e9l. Pero queremos que sepa que contribuir est\u00e1 en el esp\u00edritu del proyecto y que valoraremos sus comentarios incluso sobre sus primeras experiencias con ns-3 (por ejemplo, \"esta secci\u00f3n del manual no fue clara...\"), reportando documentaci\u00f3n obsoleta, o comentarios en el c\u00f3digo, etc. La forma preferida de enviar correcciones es hacer un fork en <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gitlab.com\/nsnam\">https:\/\/www.gitlab.com\/nsnam<\/a><\/noindex> Esta gu\u00eda asume que los nuevos usuarios pueden avanzar inicialmente, por ejemplo, a trav\u00e9s de este camino:<\/p>\n<p><\/p>\n<h3 id=\"14-organizaciya-rukovodstva\">1.4 Estructura del manual<\/h3>\n<p><\/p>\n<p>Intentar descargar y compilar una copia;<\/p>\n<p><\/p>\n<ul>\n<li>Intentar ejecutar algunos ejemplos de programas;<\/li>\n<li>Intenta ejecutar varios ejemplos de programas;<\/li>\n<li>Ver el resultado de la simulaci\u00f3n y tratar de ajustarlo.<br \/>\nAl final, intentamos organizar la exposici\u00f3n de acuerdo con estos pasos.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"glava-2\">Cap\u00edtulo 2<\/h2>\n<p><\/p>\n<h2 id=\"istochniki-informacii\">Fuentes de informaci\u00f3n<\/h2>\n<p><\/p>\n<h3 id=\"21-set\">2.1 Red<\/h3>\n<p><\/p>\n<p>Hay varios recursos importantes que cualquier usuario de ns-3 debe conocer. El sitio web principal se encuentra en: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\">https:\/\/www.nsnam.org<\/a><\/noindex><br \/>\ny proporciona acceso a informaci\u00f3n b\u00e1sica sobre el sistema ns-3. La documentaci\u00f3n detallada est\u00e1 disponible a trav\u00e9s del sitio web principal en: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/documentation\/\">https:\/\/www.nsnam.org\/documentation\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>En esta misma p\u00e1gina web tambi\u00e9n puede encontrar documentos relacionados con la arquitectura del sistema.<\/p>\n<p><\/p>\n<p>Hay una p\u00e1gina wiki que complementa el sitio web principal de ns-3, que puede encontrar en: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/wiki\/\">https:\/\/www.nsnam.org\/wiki\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>All\u00ed encontrar\u00e1 respuestas a preguntas frecuentes para usuarios y desarrolladores, as\u00ed como gu\u00edas de resoluci\u00f3n de problemas, c\u00f3digo de terceros, documentos, etc.<br \/>\nEl c\u00f3digo fuente se puede encontrar y ver en GitLab.com:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/nsnam\/\">https:\/\/gitlab.com\/nsnam\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>All\u00ed, en el repositorio llamado <em>ns-3-dev<\/em> se encuentra el \u00e1rbol de desarrollo actual. Las versiones anteriores y los repositorios experimentales de los desarrolladores del n\u00facleo tambi\u00e9n se pueden encontrar bajo Mercurial en el antiguo sitio del proyecto en:<br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/code.nsnam.org\">http:\/\/code.nsnam.org<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"22-git\">2.2 Git<\/h3>\n<p><\/p>\n<p>Los sistemas de software complejos necesitan alg\u00fan m\u00e9todo para gestionar la organizaci\u00f3n y los cambios en el c\u00f3digo base y la documentaci\u00f3n. Hay muchas maneras de lograr esto, y es posible que haya escuchado sobre algunos de los sistemas que se utilizan com\u00fanmente para esto. Hasta hace poco, el proyecto ns-3 utilizaba Mercurial como sistema de control de c\u00f3digo fuente, pero en diciembre de 2018, cambiamos a utilizar Git. Aunque no necesita saber mucho sobre Git para leer esta gu\u00eda, le recomendamos que se familiarice con \u00e9l y lo utilice para acceder al c\u00f3digo fuente. GitLab.com ofrece recursos para dominar habilidades b\u00e1sicas en: <noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/book\/ru\/v2\">https:\/\/git-scm.com\/book\/ru\/v2<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"23-waf\">2.3 WAF<\/h3>\n<p><\/p>\n<p>Una vez que haya descargado el c\u00f3digo fuente en su computadora, para obtener un programa listo para usar, necesitar\u00e1 compilarlo. Al igual que con la gesti\u00f3n del c\u00f3digo fuente, hay muchas herramientas disponibles para llevar a cabo esta funci\u00f3n. Probablemente, la m\u00e1s conocida de estas herramientas es make. Aunque esta herramienta es la m\u00e1s famosa, se debe se\u00f1alar que resulta ser la m\u00e1s complicada de usar en un sistema muy grande y flexible. Esta fue la raz\u00f3n para desarrollar muchas alternativas. Recientemente, se han creado sistemas utilizando el lenguaje Python.<\/p>\n<p><\/p>\n<p>El proyecto ns-3 utiliza el sistema de construcci\u00f3n Waf. Es de nueva generaci\u00f3n y se basa en Python. Para construir el sistema existente de ns-3, no necesitar\u00e1 saber Python.<\/p>\n<p><\/p>\n<p>Para aquellos interesados en los detalles sobre el uso de Waf, hay un libro disponible en:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/waf.io\/book\/\">https:\/\/waf.io\/book\/<\/a><\/noindex><br \/>\ny el c\u00f3digo actual:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/ita1024\/waf\/\">https:\/\/gitlab.com\/ita1024\/waf\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"24-sreda-razrabotki\">2.4 Entorno de desarrollo<\/h3>\n<p><\/p>\n<p>Como se mencion\u00f3 anteriormente, los scripts en ns-3 se ejecutan en C++ o Python. La mayor parte de la API de ns-3 est\u00e1 disponible en Python, pero los modelos est\u00e1n escritos en C++. Esta gu\u00eda supone que usted est\u00e1 familiarizado con la programaci\u00f3n orientada a objetos en C++. A medida que avanzamos, dedicaremos un tiempo a revisar los conceptos m\u00e1s avanzados y posiblemente caracter\u00edsticas desconocidas del lenguaje, como idiomas y patrones de dise\u00f1o. No queremos que esta gu\u00eda se convierta en un libro de texto sobre C++, por lo que presumimos un dominio b\u00e1sico del lenguaje. Hay muchas fuentes de informaci\u00f3n sobre C++ disponibles en l\u00ednea o en formato impreso.<\/p>\n<p><\/p>\n<p>Si es nuevo en C++, antes de continuar, familiar\u00edcese con los fundamentos del lenguaje utilizando un libro de texto o un sitio web dedicado a la ense\u00f1anza o recetas listas. Por ejemplo, uno como este: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ashtanyuk\/CPP-2018\">https:\/\/github.com\/ashtanyuk\/CPP-2018<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Bajo Linux, el sistema ns-3 utiliza varios componentes del kit de herramientas del proyecto GNU. Un kit de herramientas es un conjunto de herramientas de programaci\u00f3n disponibles en este entorno de software. Para una visi\u00f3n r\u00e1pida de lo que incluye las herramientas de GNU, consulte: <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/GNU_toolchain\">http:\/\/en.wikipedia.org\/wiki\/GNU_toolchain<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>El simulador ns-3 utiliza gcc, GNU binutils y gdb. Al mismo tiempo, no utilizamos ni make ni autotools del conjunto de herramientas GNU para construir el proyecto. Para estas funciones, usamos Waf.<\/p>\n<p><\/p>\n<p>En macOS se utiliza un conjunto de herramientas de Xcode. Se recomienda encarecidamente a los usuarios de ns-3 en Mac que instalen Xcode y los paquetes de herramientas de l\u00ednea de comandos desde la Apple App Store, y para m\u00e1s informaci\u00f3n, visiten la p\u00e1gina de instalaci\u00f3n de ns-3 en la wiki: (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/wiki\/Installation\">https:\/\/www.nsnam.org\/wiki\/Installation<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>Generalmente, el autor de ns-3 trabaja en un entorno Linux o Unix-like. Para aquellos que trabajan en Windows, existen entornos que simulan en diferentes grados el entorno Linux. Para estos usuarios, el proyecto ns-3 hab\u00eda soportado anteriormente, pero no en la actualidad, el desarrollo en el entorno Cygwin. Para obtener detalles sobre la descarga y m\u00e1s informaci\u00f3n sobre Cygwin y ns-3, visite la p\u00e1gina de la wiki de ns-3:<br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/www.cygwin.com\/\">http:\/\/www.cygwin.com\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>MinGW actualmente no est\u00e1 soportado oficialmente. Otra alternativa a Cygwin es establecer un entorno virtual, como VMware server, donde se puede instalar Linux.<\/p>\n<p><\/p>\n<h3 id=\"25-programmirovanie-soketov\">2.5 Programaci\u00f3n de sockets<\/h3>\n<p><\/p>\n<p>En los ejemplos utilizados en esta gu\u00eda, utilizaremos las capacidades b\u00e1sicas de la interfaz API de sockets de Berkeley (Berkeley Sockets). Si es nuevo en los sockets, le recomendamos familiarizarse con la API y algunos casos comunes de uso. Como una buena introducci\u00f3n a la programaci\u00f3n de sockets TCP\/IP, recomendamos: \"TCP\/IP Sockets in C\", Donahoo y Calvert.<\/p>\n<p><\/p>\n<p>Hay un sitio web relacionado que contiene la fuente de ejemplos del libro, que se puede encontrar en:<br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/cs.baylor.edu\/~donahoo\/practical\/CSockets\/\">http:\/\/cs.baylor.edu\/~donahoo\/practical\/CSockets\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Si entiende los primeros cuatro cap\u00edtulos del libro (o para aquellos que no tienen acceso a una copia del libro, los clientes y servidores de eco mostrados en el sitio web del enlace anterior), eso ser\u00e1 suficiente para entender el tutorial. Hay un libro similar<br \/>\n\"Multicast Sockets, Multicast Sockets\", Makofske y Almeroth.<\/p>\n<p><\/p>\n<p>Cubre el material que puede necesitar si va a estudiar en el distribuidor ejemplos de multidifusi\u00f3n.<\/p>\n<p><\/p>\n<p>Continuaci\u00f3n: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497318\/\">cap\u00edtulo 3<\/a><\/noindex><\/p>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497106\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 &quot;ns-3 Tutorial Release ns-3.29&quot; \u043f\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0443 \u0441\u0435\u0442\u0435\u0439 ns-3. \u042d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0432 reStructuredText \u0434\u043b\u044f Sphinx \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 doc\/tutorial \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 ns-3. 1 \u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435 1.1 \u041e ns-3 1.2 \u0414\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 ns-2 1.3 \u0423\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 1.4 \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 2 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":86560,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-86559","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 &quot;ns-3 Tutorial Release.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0423\u0447\u0435\u0431\u043d\u0438\u043a \u043f\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0443 \u0441\u0435\u0442\u0438 ns-3. \u0413\u043b\u0430\u0432\u044b 1,2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 &quot;ns-3 Tutorial Release.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-26T17:42:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-26T17:42:13+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Tutorial del simulador de red ns-3. Cap\u00edtulos 1,2 | ProHoster","description":"Este art\u00edculo abre una serie de publicaciones con la traducci\u00f3n del tutorial \"ns-3 Tutorial Release.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0423\u0447\u0435\u0431\u043d\u0438\u043a \u043f\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0443 \u0441\u0435\u0442\u0438 ns-3. \u0413\u043b\u0430\u0432\u044b 1,2 | ProHoster","og:description":"\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 &quot;ns-3 Tutorial Release.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-26T17:42:13+00:00","article:modified_time":"2020-06-26T17:42:13+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"86559","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:48:32","updated":"2022-09-30 06:25:10","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/86559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=86559"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/86559\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/86560"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=86559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=86559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=86559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}