{"id":57,"date":"2020-06-23T19:41:40","date_gmt":"2020-06-23T18:41:40","guid":{"rendered":"http:\/\/blog.uclm.es\/felixvillanueva\/?p=57"},"modified":"2022-10-20T16:03:07","modified_gmt":"2022-10-20T16:03:07","slug":"topologia-ejemplos-ns3","status":"publish","type":"post","link":"https:\/\/blog.uclm.es\/felixvillanueva\/2020\/06\/23\/topologia-ejemplos-ns3\/","title":{"rendered":"Topolog\u00eda de los nodos en NS3"},"content":{"rendered":"<p>Sobre todo en simulaciones que tienen nodos inal\u00e1mbricos, despu\u00e9s de crear los nodos debes posicionarlos para formar tu topolog\u00eda. Topolog\u00edas habituales en simulaciones son en forma de matriz cuadrada, en l\u00ednea, en estrella con el nodo que hace de pasarela en el centro, etc.<\/p>\n<p>El emplazamiento de un nodo (X,Y,Z) generalmente se hace con la ayuda de un objeto de la clase MobilityHelper que permite crear escenarios con posiciones donde luego emplazamos nuestros nodos (almacenados en un contenedor del tipo NodeContainer).<br>\nEs decir, configuramos una topolog\u00eda concreta con el MobilityHelper y luego instalamos en esa topolog\u00eda los nodos creados y configurados de acuerdo a los requisitos de la simulaci\u00f3n.<br>\nUna configuraci\u00f3n sencilla en matriz 2D ser\u00eda:<br>\n<code><br>\nMobilityHelper mobility;<br>\nmobility.SetPositionAllocator (\"ns3::GridPositionAllocator\",<br>\n\"MinX\", DoubleValue (0.0),<br>\n\"MinY\", DoubleValue (0.0),<br>\n\"DeltaX\", DoubleValue (distanceX),<br>\n\"DeltaY\", DoubleValue (distanceY),<br>\n\"GridWidth\", UintegerValue (nodesgridwidth),<br>\n\"LayoutType\", StringValue (\"RowFirst\"));<br>\nmobility.SetMobilityModel (\"ns3::ConstantPositionMobilityModel\");<br>\n<\/code><br>\nEn primer lugar se le indica que vamos a crear puntos de acuerdo a <a href=\"https:\/\/www.nsnam.org\/doxygen\/classns3_1_1_grid_position_allocator.html\"> ns3::GridPositionAllocator <\/a>. Esto es importante por que el resto de argumentos que viene a continuaci\u00f3n va en funci\u00f3n de este primer argumento. El resto indica las coordenadas iniciales (MinX, MinY) en 0,0 , con una separaci\u00f3n determinada, en este caso indicado por distanceX y distanceY, con una anchura indicado por la variable nodesgridwidth empezando por las filas (RowFirst). Por \u00faltimo indicamos que los emplazamientos son fijos \u00abns3::ConstantPositionMobilityModel\u00bb.<\/p>\n<p>En el <a href=\"https:\/\/bitbucket.org\/FelixVillanueva\/ns3.tutorial\/src\/master\/topologia\/\"> repositorio <\/a> de este tutorial podemos ver algunos ejemplos de base para topolog\u00edas habituales. Los par\u00e1metros de entrada son configurables por l\u00ednea de comandos de cara a permitir la simulaci\u00f3n autom\u00e1tica de varias topolog\u00edas.<\/p>\n<p>Tambi\u00e9n en simulaciones inal\u00e1mbricas, una vez emplazados, es posible que quieras mover tus nodos, para lo cual tendr\u00e1s que configurar el escenario de acuerdo a tu modelo de <a href=\"https:\/\/www.nsnam.org\/docs\/models\/html\/mobility.html\">movilidad<\/a><\/p>\n<p>Otra posibilidad que te permite ns3 es la de leer topolog\u00edas de un archivo donde has almacenado la posici\u00f3n de algunos nodos.<a href=\"https:\/\/www.nsnam.org\/docs\/doxygen\/group__topology.html\">Los inputs readers<\/a> te permiten este tipo de lecturas ad-hoc y generar topolog\u00edas personalizadas y\/o concretas.<\/p>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sobre todo en simulaciones que tienen nodos inal\u00e1mbricos, despu\u00e9s de crear los nodos debes posicionarlos para formar tu topolog\u00eda. Topolog\u00edas habituales en simulaciones son en forma de matriz cuadrada, en l\u00ednea, en estrella con el nodo que hace de pasarela &hellip; <a href=\"https:\/\/blog.uclm.es\/felixvillanueva\/2020\/06\/23\/topologia-ejemplos-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":[21,30,40,42],"class_list":["post-57","post","type-post","status-publish","format-standard","hentry","category-ejemplos","category-ns3","category-simulacion","tag-ejemplos","tag-ns3","tag-simulador","tag-topologias"],"_links":{"self":[{"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/posts\/57","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=57"}],"version-history":[{"count":1,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/posts\/57\/revisions"}],"predecessor-version":[{"id":367,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/posts\/57\/revisions\/367"}],"wp:attachment":[{"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/media?parent=57"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/categories?post=57"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/tags?post=57"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}