{"id":66,"date":"2020-06-24T00:26:49","date_gmt":"2020-06-23T23:26:49","guid":{"rendered":"http:\/\/blog.uclm.es\/felixvillanueva\/?p=66"},"modified":"2020-06-24T00:26:49","modified_gmt":"2020-06-23T23:26:49","slug":"programando-ejemplos-en-ns3","status":"publish","type":"post","link":"https:\/\/blog.uclm.es\/felixvillanueva\/2020\/06\/24\/programando-ejemplos-en-ns3\/","title":{"rendered":"Programando en NS3"},"content":{"rendered":"<p>NS3 puede tener una curva de aprendizaje considerable dado que es un simulador de eventos discretos centrado en redes y, por lo tanto, tiene mucha variedad de combinaciones<\/p>\n<p>Para programar cualquier ejemplo, ten en cuenta los siguientes consejos para acortar el tiempo de aprendizaje:<\/p>\n<li> Por supuesto, el <a href=\"https:\/\/www.nsnam.org\/docs\/tutorial\/html\/index.html\">tutorial oficial<\/a> es el mejor punto de partida<\/li>\n<li>Los ejemplos (en el directorio examples) y los test (en el directorio test de cada m\u00f3dulo en el directorio src) del propio ns3 son la mejor fuente de informaci\u00f3n y puedes utilizarlos como plantillas para comenzar a programar<\/li>\n<li>Para muchas de las tareas de configuraci\u00f3n existen clases asistentes (terminada en *helper). MobilityHelper, BasicEnergySourceHelper, OlsrHelper, etc.<\/li>\n<li> Genera los resultados en alg\u00fan est\u00e1ndar como pcap y podr\u00e1s usar herramientas externas para analizar tus resultados.<\/li>\n<li> Utiliza un objeto de la clase NodeContainer para guardar todos tus nodos y luego utilizarlo para aplicar las mismas operaciones a todos tus nodos. Por ejemplo, poner un mismo tipo de netdevice a 100 nodos<\/li>\n<li> A la hora de depurar, puede ser interesante habilitar el sistema de <a href=\"https:\/\/www.nsnam.org\/doxygen\/_log_component_list.html\">log de los diversos componentes<\/a> para obtener mas informaci\u00f3n: por ejemplo LogComponentEnable (\u00abUdpClient\u00bb, LOG_LEVEL_INFO); habilita los mensajes del componente UdpClient al nivel de info. Hay varios <a href=\"https:\/\/www.nsnam.org\/docs\/tutorial\/html\/tweaking.html#using-the-logging-module\">niveles de log<\/a>. Pero ten cuidado, a mas log mas lenta va la simulaci\u00f3n<\/li>\n<li>Estructura tu simulaci\u00f3n de forma que los par\u00e1metros que quieras cambiar entre simulaci\u00f3n y simulaci\u00f3n puedan ser pasados como argumento. <a href=\"https:\/\/bitbucket.org\/FelixVillanueva\/ns3.tutorial\/src\/master\/topologia\/topology1-line.cc\">Aqu\u00ed tienes un ejemplo de c\u00f3mo hacerlo<\/a>.<\/li>\n<li> Separa la generaci\u00f3n de resultados, del procesamiento y an\u00e1lisis de los resultados. De esta forma, no tendr\u00e1s que ejecutar toda la simulaci\u00f3n de nuevo para cambiar algo del an\u00e1lisis<\/li>\n<li> Para crear un nuevo modelo, lee cuidadosamente <a href=\"https:\/\/www.nsnam.org\/docs\/manual\/html\/support.html\"> la parte del manual de soporte<\/a><\/li>\n<p>Aunque hay muchos m\u00f3dulos, generalmente solo hay que configurar los m\u00f3dulos comunes y estructurar tu escenario de simulaci\u00f3n. \u00a1Puedes ser productivo en un tiempo relativamente corto!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>NS3 puede tener una curva de aprendizaje considerable dado que es un simulador de eventos discretos centrado en redes y, por lo tanto, tiene mucha variedad de combinaciones Para programar cualquier ejemplo, ten en cuenta los siguientes consejos para acortar &hellip; <a href=\"https:\/\/blog.uclm.es\/felixvillanueva\/2020\/06\/24\/programando-ejemplos-en-ns3\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":182,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,4,5],"tags":[30,38,39],"class_list":["post-66","post","type-post","status-publish","format-standard","hentry","category-ejemplos","category-ns3","category-simulacion","tag-ns3","tag-simulacion","tag-simulacion-redes"],"_links":{"self":[{"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/posts\/66","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/users\/182"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/comments?post=66"}],"version-history":[{"count":0,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/posts\/66\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/media?parent=66"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/categories?post=66"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/tags?post=66"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}