{"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\/pt\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","title":{"rendered":"Tutorial do simulador de rede ns-3. Cap\u00edtulos 1, 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Este artigo inicia uma s\u00e9rie de publica\u00e7\u00f5es com a tradu\u00e7\u00e3o do 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 o simulador de redes ns-3. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Tutorial do simulador de rede 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 \u00e9 uma tradu\u00e7\u00e3o do documento original em ingl\u00eas, que foi escrito em <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> e est\u00e1 armazenado no diret\u00f3rio <em>doc\/tutorial<\/em> do c\u00f3digo-fonte do ns-3.<\/p>\n<p><\/p>\n<p>1 Pref\u00e1cio<br \/>\n1.1 Sobre o ns-3<br \/>\n1.2 Para usu\u00e1rios do ns-2<br \/>\n1.3 Participa\u00e7\u00e3o no projeto<br \/>\n1.4 Organiza\u00e7\u00e3o do guia<br \/>\n2 Fontes de informa\u00e7\u00e3o<br \/>\n2.1 Rede<br \/>\n2.2 Git<br \/>\n2.3 WAF<br \/>\n2.4 Ambiente de desenvolvimento<br \/>\n2.5 Programa\u00e7\u00e3o 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\/\">Baixar a tradu\u00e7\u00e3o em um \u00fanico arquivo pdf<\/a><\/noindex><\/p>\n<p><\/p>\n<p>A documenta\u00e7\u00e3o prim\u00e1ria para o projeto ns-3 est\u00e1 dispon\u00edvel em cinco formatos:<\/p>\n<p><\/p>\n<ul>\n<li>Documenta\u00e7\u00e3o da API do simulador: ns-3 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/doxygen\/index.html\">Doxygen<\/a><\/noindex>.<\/li>\n<li>Tutorial, guia e biblioteca de modelos para <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/documentation\/latest\/\">\u00faltima vers\u00e3o<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/ns-3-dev\/documentation\/\">da \u00e1rvore de desenvolvimento<\/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\">Pref\u00e1cio<\/h3>\n<p><\/p>\n<p>O simulador ns-3 \u00e9 um simulador de rede de eventos discretos, destinado principalmente \u00e0 pesquisa e uso educacional. O projeto que desenvolve o ns-3 come\u00e7ou em 2006 e \u00e9 um projeto de c\u00f3digo aberto.<\/p>\n<p><\/p>\n<p>O objetivo deste guia \u00e9 apresentar o ns-3 a novos usu\u00e1rios de forma sistem\u00e1tica e estruturada. \u00c0s vezes, \u00e9 dif\u00edcil para um iniciante obter as informa\u00e7\u00f5es necess\u00e1rias e transform\u00e1-las em modelagem funcional. Neste guia, implementaremos v\u00e1rios exemplos de modelagem, explicando e mostrando os conceitos e caracter\u00edsticas-chave ao longo do caminho.<\/p>\n<p><\/p>\n<p>\u00c0 medida que progredimos, apresentaremos a documenta\u00e7\u00e3o completa do ns-3 e forneceremos links para o c\u00f3digo-fonte para aqueles que est\u00e3o interessados em entender mais profundamente o funcionamento do sistema.<\/p>\n<p><\/p>\n<p>No in\u00edcio, \u00e9 importante destacar alguns pontos-chave:<\/p>\n<p><\/p>\n<ul>\n<li>O ns-3 possui c\u00f3digo aberto e o projeto busca manter um ambiente aberto, onde pesquisadores possam contribuir e compartilhar suas implementa\u00e7\u00f5es.<\/li>\n<li>O ns-3 n\u00e3o \u00e9 uma extens\u00e3o retrocompat\u00edvel do ns-2; \u00e9 um novo simulador. Ambos os simuladores s\u00e3o escritos em C++, mas o ns-3 \u00e9 um novo simulador que n\u00e3o suporta as interfaces da API do ns-2.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"11-o-ns-3\">1.1 Sobre o ns-3<\/h3>\n<p><\/p>\n<p>O simulador ns-3 foi desenvolvido para oferecer uma plataforma aberta e expans\u00edvel para modelagem de redes, pesquisa de redes e educa\u00e7\u00e3o. Em resumo, o ns-3 fornece modelos de como as redes de pacotes s\u00e3o implementadas e funcionam, e d\u00e1 ao usu\u00e1rio um mecanismo de simula\u00e7\u00e3o para realizar experimentos de simula\u00e7\u00e3o. As raz\u00f5es para usar o ns-3 podem incluir situa\u00e7\u00f5es em que \u00e9 necess\u00e1rio conduzir uma pesquisa que \u00e9 dif\u00edcil ou imposs\u00edvel de realizar em um sistema real, a capacidade de estudar o comportamento do sistema em um ambiente rigorosamente controlado, replic\u00e1vel, al\u00e9m de entender como as redes funcionam. <\/p>\n<p><\/p>\n<p>Os usu\u00e1rios perceber\u00e3o que o conjunto de modelos fornecido no ns-3 \u00e9 focado na modelagem do funcionamento de protocolos da Internet e redes, mas o ns-3 n\u00e3o est\u00e1 limitado apenas a sistemas de internet, alguns usu\u00e1rios utilizam o ns-3 para modelar sistemas que n\u00e3o s\u00e3o baseados em tecnologias da Internet.<\/p>\n<p><\/p>\n<p>Existem muitas ferramentas de modelagem de redes. Abaixo est\u00e3o algumas caracter\u00edsticas distintivas do ns-3 em compara\u00e7\u00e3o com outras ferramentas.<\/p>\n<p><\/p>\n<ul>\n<li>O ns-3 foi projetado como um conjunto de bibliotecas que podem ser integradas entre si, bem como com outras bibliotecas de software externas. Enquanto algumas plataformas de modelagem oferecem aos usu\u00e1rios um ambiente de integra\u00e7\u00e3o \u00fanico com uma interface gr\u00e1fica que controla todo o trabalho, o ns-3 \u00e9 mais modular nesse aspecto. Com o ns-3, pode-se utilizar v\u00e1rios animadores externos, ferramentas de an\u00e1lise de dados e visualiza\u00e7\u00e3o. No entanto, os usu\u00e1rios devem esperar trabalhar na linha de comando e com ferramentas de desenvolvimento de software C++ e\/ou Python.<\/li>\n<li>O ns-3 \u00e9 amplamente utilizado em sistemas Linux ou macOS, embora exista suporte para sistemas BSD, bem como para plataformas Windows capazes de compilar c\u00f3digo para Linux, como o Windows Subsystem for Linux ou Cygwin. O Visual Studio nativo para Windows n\u00e3o \u00e9 suportado no momento, embora os desenvolvedores estejam trabalhando para implementar essa funcionalidade. Usu\u00e1rios do Windows tamb\u00e9m podem utilizar uma m\u00e1quina virtual com Linux.<\/li>\n<li>O ns-3 n\u00e3o \u00e9 um produto oficialmente suportado por qualquer empresa. O suporte ao ns-3 \u00e9 oferecido com m\u00e1ximo empenho no f\u00f3rum de usu\u00e1rios do ns-3 (ns-3-users@googlegroups.com).<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"12-dlya-polzovateley-ns-2\">1.2 Para usu\u00e1rios do ns-2<\/h3>\n<p><\/p>\n<p>Para aqueles que est\u00e3o familiarizados com o ns-2 (uma ferramenta popular anterior ao ns-3), a mudan\u00e7a mais vis\u00edvel ao migrar para o ns-3 \u00e9 a troca de linguagem de script. Os programas no ns-2 s\u00e3o escritos em OTcl, e os resultados da simula\u00e7\u00e3o podem ser visualizados usando o animador de redes nam. No ns-2, n\u00e3o \u00e9 poss\u00edvel executar uma simula\u00e7\u00e3o exclusivamente em C++ (ou seja, como um programa main() sem qualquer OTcl). Al\u00e9m disso, alguns componentes do ns-2 s\u00e3o escritos em C++, enquanto outros s\u00e3o em OTcl. No ns-3, o simulador \u00e9 completamente escrito em C++ com bindings opcionais em Python. Portanto, os scripts de simula\u00e7\u00e3o podem ser escritos tanto em C++ quanto em Python. Novos animadores e visualizadores est\u00e3o dispon\u00edveis e continuam a ser desenvolvidos. Como o ns-3 gera arquivos de rastreamento de pacotes pcap, outras utilidades tamb\u00e9m podem ser usadas para analisar os rastros. Neste guia, vamos nos concentrar inicialmente em scripts implementados em C++ e na interpreta\u00e7\u00e3o de resultados atrav\u00e9s da an\u00e1lise de arquivos de rastreamento.<\/p>\n<p><\/p>\n<p>Mas tamb\u00e9m existem semelhan\u00e7as (por exemplo, ambas as ferramentas s\u00e3o baseadas em objetos C++, parte do c\u00f3digo do ns-2 foi portado para o ns-3). Ao longo da exposi\u00e7\u00e3o, tentaremos mostrar as diferen\u00e7as entre ns-2 e ns-3.<\/p>\n<p><\/p>\n<p>Uma pergunta que frequentemente ouvimos \u00e9: \"Devo continuar usando ns-2 ou migrar para ns-3?\" Na opini\u00e3o do autor, se o usu\u00e1rio n\u00e3o est\u00e1 de forma alguma vinculado ao ns-2 (seja por conforto pessoal e conhecimento do ns-2, ou por causa de um modelo de simula\u00e7\u00e3o espec\u00edfico que s\u00f3 est\u00e1 dispon\u00edvel no ns-2), ent\u00e3o com o ns-3 ele ser\u00e1 mais produtivo pelas seguintes raz\u00f5es:<\/p>\n<p><\/p>\n<ul>\n<li>O ns-3 \u00e9 ativamente mantido, com uma lista de discuss\u00e3o de usu\u00e1rios ativa e receptiva, enquanto o ns-2 \u00e9 mantido apenas de forma espor\u00e1dica e n\u00e3o viu mudan\u00e7as significativas em sua \u00e1rvore de c\u00f3digo principal h\u00e1 mais de dez anos.<\/li>\n<li>O ns-3 oferece recursos que n\u00e3o est\u00e3o dispon\u00edveis no ns-2, como um ambiente de execu\u00e7\u00e3o de c\u00f3digo de implementa\u00e7\u00e3o (permitindo que os usu\u00e1rios executem c\u00f3digo de implementa\u00e7\u00e3o real dentro do simulador).<\/li>\n<li>O ns-3 proporciona um n\u00edvel b\u00e1sico de abstra\u00e7\u00e3o mais baixo em compara\u00e7\u00e3o ao ns-2, permitindo uma melhor correspond\u00eancia ao modo como os sistemas reais interagem. Algumas limita\u00e7\u00f5es encontradas no ns-2 (como suporte adequado a m\u00faltiplos tipos de interfaces em um n\u00f3) foram corrigidas no ns-3.<\/li>\n<\/ul>\n<p><\/p>\n<p>Devido \u00e0 sua longa hist\u00f3ria, o ns-2 possui um conjunto de m\u00f3dulos suportados mais diversificado do que o ns-3. No entanto, o ns-3 tem modelos mais detalhados em v\u00e1rias \u00e1reas populares de pesquisa (incluindo modelos complexos de LTE e WiFi), e seu suporte \u00e0 implementa\u00e7\u00e3o de c\u00f3digo permite uma ampla gama de modelos de alta precis\u00e3o. Os usu\u00e1rios podem se surpreender ao descobrir que toda a pilha de rede do Linux pode ser encapsulada em um n\u00f3 ns-3 usando a estrutura de execu\u00e7\u00e3o de c\u00f3digo direto (DCE). Modelos do ns-2 podem \u00e0s vezes ser portados para o ns-3, especialmente se foram implementados em C++.<\/p>\n<p><\/p>\n<p>Se voc\u00ea estiver em d\u00favida, uma boa recomenda\u00e7\u00e3o seria olhar para ambos os simuladores (e tamb\u00e9m para outros simuladores), em particular para os modelos dispon\u00edveis para sua pesquisa, mas tenha em mente que seu resultado pode ser melhor ao usar uma ferramenta que atualmente est\u00e1 em desenvolvimento ativo e suporte (ns-3).<\/p>\n<p><\/p>\n<h3 id=\"13-uchastie-v-proekte\">1.3 Participa\u00e7\u00e3o no projeto<\/h3>\n<p><\/p>\n<p>O ns-3 \u00e9 um simulador educacional e cient\u00edfico para a comunidade de pesquisa. Ele se basear\u00e1 nas contribui\u00e7\u00f5es atuais da comunidade no desenvolvimento de novos modelos, na depura\u00e7\u00e3o ou no suporte aos existentes e na troca de resultados. Existe uma certa pol\u00edtica que, esperamos, incentivar\u00e1 as pessoas a contribuir com o ns-3, assim como fazem para o ns-2:<\/p>\n<p><\/p>\n<ul>\n<li>Licenciamento de c\u00f3digo aberto baseado na compatibilidade com a licen\u00e7a GNU GPLv2.<\/li>\n<li>wiki.<\/li>\n<li>P\u00e1gina <noindex><a rel=\"nofollow\" href=\"http:\/\/www.pocoo.org\/\">C\u00f3digo dos contribuintes<\/a><\/noindex>, semelhante \u00e0 famosa p\u00e1gina do ns-2.<\/li>\n<li>Uso do GitLab.com, incluindo o sistema de rastreamento de erros:<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 se voc\u00ea est\u00e1 lendo este documento, pode n\u00e3o estar planejando contribuir de imediato. Mas queremos que voc\u00ea saiba que fazer contribui\u00e7\u00f5es est\u00e1 em esp\u00edrito do projeto e que seu feedback sobre sua experi\u00eancia inicial com o ns-3 (por exemplo, \"esta se\u00e7\u00e3o do manual n\u00e3o estava clara ...\"), a notifica\u00e7\u00e3o de documenta\u00e7\u00e3o desatualizada ou coment\u00e1rios no c\u00f3digo, etc., ser\u00e3o muito valorizados. O m\u00e9todo preferido para enviar corre\u00e7\u00f5es \u00e9 fazer um fork em <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gitlab.com\/nsnam\">https:\/\/www.gitlab.com\/nsnam<\/a><\/noindex> Este guia pressup\u00f5e que novos usu\u00e1rios podem, inicialmente, seguir um caminho como este:<\/p>\n<p><\/p>\n<h3 id=\"14-organizaciya-rukovodstva\">1.4 Organiza\u00e7\u00e3o do guia<\/h3>\n<p><\/p>\n<p>Tentar baixar e compilar uma c\u00f3pia;<\/p>\n<p><\/p>\n<ul>\n<li>Tentar executar alguns exemplos de programas;<\/li>\n<li>Tente executar v\u00e1rias amostras de programas;<\/li>\n<li>Ver o resultado da simula\u00e7\u00e3o e tentar ajust\u00e1-lo.<br \/>\nNo final, tentamos organizar a apresenta\u00e7\u00e3o de acordo com essas etapas.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"glava-2\">Cap\u00edtulo 2<\/h2>\n<p><\/p>\n<h2 id=\"istochniki-informacii\">Fontes de informa\u00e7\u00e3o<\/h2>\n<p><\/p>\n<h3 id=\"21-set\">2.1 Rede<\/h3>\n<p><\/p>\n<p>Existem v\u00e1rios recursos importantes que todo usu\u00e1rio do ns-3 deve conhecer. O site principal est\u00e1 localizado em: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\">https:\/\/www.nsnam.org<\/a><\/noindex><br \/>\ne fornece acesso a informa\u00e7\u00f5es b\u00e1sicas sobre o sistema ns-3. A documenta\u00e7\u00e3o detalhada est\u00e1 dispon\u00edvel por meio do site principal em: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/documentation\/\">https:\/\/www.nsnam.org\/documentation\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Nesta mesma p\u00e1gina da web, voc\u00ea tamb\u00e9m pode encontrar documentos relacionados \u00e0 arquitetura do sistema.<\/p>\n<p><\/p>\n<p>H\u00e1 uma p\u00e1gina na wiki que complementa o site principal do ns-3, que voc\u00ea encontrar\u00e1 em: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/wiki\/\">https:\/\/www.nsnam.org\/wiki\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>L\u00e1 voc\u00ea encontrar\u00e1 respostas para perguntas frequentes de usu\u00e1rios e desenvolvedores, al\u00e9m de guias de solu\u00e7\u00e3o de problemas, c\u00f3digo de terceiros, documentos, etc.<br \/>\nO c\u00f3digo fonte pode ser encontrado e visualizado no 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>L\u00e1 tamb\u00e9m, no reposit\u00f3rio chamado <em>ns-3-dev<\/em> encontra-se a \u00e1rvore de desenvolvimento atual. Vers\u00f5es anteriores e reposit\u00f3rios experimentais dos desenvolvedores do n\u00facleo tamb\u00e9m podem ser encontrados sob Mercurial no antigo site do projeto em:<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>Sistemas de software complexos precisam de algum m\u00e9todo para gerenciar a organiza\u00e7\u00e3o e a altera\u00e7\u00e3o do c\u00f3digo fonte e da documenta\u00e7\u00e3o. Existem muitas maneiras de alcan\u00e7ar isso, e voc\u00ea pode ter ouvido sobre alguns dos sistemas comumente usados para isso. At\u00e9 recentemente, o projeto ns-3 utilizava Mercurial como seu sistema de controle de vers\u00e3o, mas em dezembro de 2018, mudamos para usar o Git. Embora voc\u00ea n\u00e3o precise saber muito sobre o Git para ler este manual, recomendamos que voc\u00ea se familiarize com ele e o use para acessar o c\u00f3digo fonte. O GitLab.com oferece recursos para dominar as habilidades b\u00e1sicas em: <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>Depois de baixar o c\u00f3digo-fonte para o seu computador, para obter um programa pronto para uso, voc\u00ea precisar\u00e1 compil\u00e1-lo. Assim como na gest\u00e3o de c\u00f3digo-fonte, h\u00e1 muitas ferramentas dispon\u00edveis para executar essa fun\u00e7\u00e3o. Provavelmente, a mais conhecida dessas ferramentas \u00e9 o make. Embora essa ferramenta seja a mais famosa, deve-se notar que ela se torna a mais complicada de usar em um sistema muito grande e flexivelmente configur\u00e1vel. Isso levou ao desenvolvimento de v\u00e1rias alternativas. Recentemente, sistemas foram desenvolvidos utilizando a linguagem Python.<\/p>\n<p><\/p>\n<p>No projeto ns-3, \u00e9 utilizada a sistema de constru\u00e7\u00e3o Waf. \u00c9 uma gera\u00e7\u00e3o nova de sistemas de constru\u00e7\u00e3o baseados em Python. Para compilar o sistema existente ns-3, voc\u00ea n\u00e3o precisar\u00e1 conhecer Python.<\/p>\n<p><\/p>\n<p>Para aqueles que est\u00e3o interessados nos detalhes de uso do Waf, existe um livro dispon\u00edvel em:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/waf.io\/book\/\">https:\/\/waf.io\/book\/<\/a><\/noindex><br \/>\ne o c\u00f3digo atual:<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 Ambiente de desenvolvimento<\/h3>\n<p><\/p>\n<p>Como mencionado acima, os scripts em ns-3 s\u00e3o executados em C++ ou Python. A maior parte da API do ns-3 est\u00e1 dispon\u00edvel em Python, mas os modelos s\u00e3o escritos em C++. Este guia presume que voc\u00ea est\u00e1 familiarizado com programa\u00e7\u00e3o orientada a objetos em C++. \u00c0 medida que avan\u00e7amos, dedicaremos um tempo para revisar os conceitos mais avan\u00e7ados e, possivelmente, aspectos desconhecidos da linguagem, como idiomas e padr\u00f5es de design. N\u00e3o queremos que este guia se torne um manual de C++, portanto, esperamos um conhecimento b\u00e1sico da linguagem. Existem muitas fontes de informa\u00e7\u00e3o sobre C++ dispon\u00edveis online ou em impressos.<\/p>\n<p><\/p>\n<p>Se voc\u00ea \u00e9 iniciante em C++, antes de continuar, aprenda o b\u00e1sico da linguagem usando um manual ou um site dedicado a tutoriais ou receitas prontas. Por exemplo, 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>No Linux, o sistema ns-3 utiliza v\u00e1rios componentes da ferramenta do projeto GNU. A ferramenta \u00e9 um conjunto de ferramentas de programa\u00e7\u00e3o dispon\u00edveis nesse ambiente de software. Para uma vis\u00e3o r\u00e1pida do que est\u00e1 inclu\u00eddo nas ferramentas GNU, veja. <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>O simulador ns-3 utiliza gcc, GNU binutils e gdb. Entretanto, n\u00e3o usamos make nem autotools para compilar o projeto. Para essas fun\u00e7\u00f5es, utilizamos o Waf.<\/p>\n<p><\/p>\n<p>No macOS, \u00e9 utilizado um conjunto de ferramentas Xcode. Os usu\u00e1rios do ns-3 no Mac s\u00e3o fortemente recomendados a instalar o Xcode e os pacotes de ferramentas de linha de comando da Apple App Store, al\u00e9m disso, para obter mais informa\u00e7\u00f5es, consulte a p\u00e1gina da wiki sobre a instala\u00e7\u00e3o do ns-3: (<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>Normalmente, o autor do ns-3 trabalha em um ambiente Linux ou Unix-like. Para aqueles que trabalham no Windows, existem ambientes que imitam o ambiente Linux em diferentes graus. Para esses usu\u00e1rios, o projeto ns-3 no passado (mas n\u00e3o atualmente) suportou o desenvolvimento no ambiente Cygwin. Para mais detalhes sobre download e informa\u00e7\u00f5es adicionais sobre Cygwin e ns-3, consulte a p\u00e1gina da wiki do 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>Atualmente, o MinGW n\u00e3o \u00e9 oficialmente suportado. Outra alternativa ao Cygwin \u00e9 a instala\u00e7\u00e3o de um ambiente virtual, como o VMware server, onde voc\u00ea pode instalar o Linux.<\/p>\n<p><\/p>\n<h3 id=\"25-programmirovanie-soketov\">2.5 Programa\u00e7\u00e3o de sockets<\/h3>\n<p><\/p>\n<p>Nos exemplos usados neste guia, utilizaremos as funcionalidades b\u00e1sicas da interface API de sockets Berkeley (Berkeley Sockets). Se voc\u00ea \u00e9 novato em sockets, recomendamos que voc\u00ea se familiarize com a API e alguns casos comuns de uso deles. Como uma boa introdu\u00e7\u00e3o \u00e0 programa\u00e7\u00e3o de sockets TCP\/IP, sugerimos: \"TCP\/IP Sockets in C\", Donahoo e Calvert.<\/p>\n<p><\/p>\n<p>Existem um site relacionado que cont\u00e9m a fonte de exemplos do livro, que voc\u00ea pode encontrar em:<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>Se voc\u00ea entender os primeiros quatro cap\u00edtulos do livro (ou para aqueles que n\u00e3o t\u00eam acesso a uma c\u00f3pia do livro, os clientes e servidores de eco mostrados no site no link acima), isso ser\u00e1 suficiente para entender o tutorial. Existe um livro semelhante<br \/>\n\"Multicast Sockets, Multicast Sockets\", Makofske e Almeroth.<\/p>\n<p><\/p>\n<p>Ele cobre o material que voc\u00ea pode precisar se quiser estudar os exemplos de multicast no pacote.<\/p>\n<p><\/p>\n<p>Continua\u00e7\u00e3o: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497318\/\">cap\u00edtulo 3<\/a><\/noindex><\/p>\n<p>Fonte: <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.3 - 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\/pt\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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 do simulador de rede ns-3. Cap\u00edtulos 1,2 | ProHoster","description":"Este artigo inicia uma s\u00e9rie de publica\u00e7\u00f5es com a tradu\u00e7\u00e3o do tutorial \"ns-3 Tutorial Release.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/86559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=86559"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/86559\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/86560"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=86559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=86559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=86559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}