SimGrid  3.18
Versatile Simulation of Distributed Systems
simgrid::kernel::routing::RoutedZone Class Reference

Detailed Description

NetZone with an explicit routing (abstract class)

This abstract class factorizes code between its subclasses: Full, Dijkstra and Floyd.

Comparison of the RoutedZone subclasses
DijkstraZoneFloydZoneFullZone
Platform-file content Only 1-hop routes (rather small) Only 1-hop routes (rather small) Every path, explicitly (very large)
Initialization time Almost nothing Floyd-Warshall algorithm: O(n^3) Almost nothing
Memory usage 1-hop routes (+ cache of routes) O(n^2) data (intermediate) O(n^2) + sum of path lengths (very large)
Lookup time Dijkstra Algo: O(n^3) not much (reconstruction phase) Almost nothing
Expressiveness Only shortest path Only shortest path Everything

#include <RoutedZone.hpp>

Inheritance diagram for simgrid::kernel::routing::RoutedZone:
simgrid::kernel::routing::NetZoneImpl simgrid::s4u::NetZone simgrid::kernel::routing::DijkstraZone simgrid::kernel::routing::FloydZone simgrid::kernel::routing::FullZone

Public Member Functions

 RoutedZone (NetZone *father, std::string name)
 
void getGraph (xbt_graph_t graph, std::map< std::string, xbt_node_t > *nodes, std::map< std::string, xbt_edge_t > *edges) override
 
virtual sg_platf_route_cbarg_t newExtendedRoute (RoutingMode hierarchy, NetPoint *src, NetPoint *dst, NetPoint *gw_src, NetPoint *gw_dst, std::vector< simgrid::surf::LinkImpl *> &link_list, bool symmetrical, bool change_order)
 
- Public Member Functions inherited from simgrid::kernel::routing::NetZoneImpl
simgrid::s4u::HostcreateHost (const char *name, std::vector< double > *speedPerPstate, int coreAmount, std::map< std::string, std::string > *props)
 Make an host within that NetZone. More...
 
void addBypassRoute (NetPoint *src, NetPoint *dst, NetPoint *gw_src, NetPoint *gw_dst, std::vector< simgrid::surf::LinkImpl *> &link_list, bool symmetrical) override
 Creates a new route in this NetZone. More...
 
- Public Member Functions inherited from simgrid::s4u::NetZone
virtual void seal ()
 Seal your netzone once you're done adding content, and before routing stuff through it. More...
 
const std::stringgetName () const
 Retrieves the name of that netzone as a C++ string. More...
 
const char * getCname () const
 Retrieves the name of that netzone as a C string. More...
 
NetZonegetFather ()
 
std::vector< NetZone * > * getChildren ()
 
void getHosts (std::vector< s4u::Host *> *whereto)
 
std::unordered_map< std::string, std::string > * getProperties ()
 Get the properties assigned to a host. More...
 
const char * getProperty (const char *key)
 Retrieve the property value (or nullptr if not set) More...
 
void setProperty (const char *key, const char *value)
 
virtual int addComponent (kernel::routing::NetPoint *elm)
 
virtual void addRoute (kernel::routing::NetPoint *src, kernel::routing::NetPoint *dst, kernel::routing::NetPoint *gw_src, kernel::routing::NetPoint *gw_dst, std::vector< simgrid::surf::LinkImpl *> &link_list, bool symmetrical)
 

Protected Member Functions

void getRouteCheckParams (NetPoint *src, NetPoint *dst)
 
void addRouteCheckParams (kernel::routing::NetPoint *src, kernel::routing::NetPoint *dst, kernel::routing::NetPoint *gw_src, kernel::routing::NetPoint *gw_dst, std::vector< simgrid::surf::LinkImpl *> &link_list, bool symmetrical)
 
- Protected Member Functions inherited from simgrid::kernel::routing::NetZoneImpl
 NetZoneImpl (NetZone *father, std::string name)
 
virtual ~NetZoneImpl ()
 
virtual void getLocalRoute (NetPoint *src, NetPoint *dst, sg_platf_route_cbarg_t into, double *latency)=0
 Probe the routing path between two points that are local to the called NetZone. More...
 
bool getBypassRoute (routing::NetPoint *src, routing::NetPoint *dst, std::vector< surf::LinkImpl *> &links, double *latency)
 retrieves the list of all routes of size 1 (of type src x dst x Link) More...
 
- Protected Member Functions inherited from simgrid::s4u::NetZone
 NetZone (NetZone *father, std::string name)
 
virtual ~NetZone ()
 
unsigned int getTableSize ()
 
std::vector< kernel::routing::NetPoint * > getVertices ()
 

Additional Inherited Members

- Public Types inherited from simgrid::kernel::routing::NetZoneImpl
enum  RoutingMode { RoutingMode::unset = 0, RoutingMode::base, RoutingMode::recursive }
 
- Static Public Member Functions inherited from simgrid::kernel::routing::NetZoneImpl
static void getGlobalRoute (routing::NetPoint *src, routing::NetPoint *dst, std::vector< surf::LinkImpl *> &links, double *latency)
 
- Public Attributes inherited from simgrid::kernel::routing::NetZoneImpl
RoutingMode hierarchy_ = RoutingMode::unset
 
- Static Public Attributes inherited from simgrid::s4u::NetZone
static simgrid::xbt::signal< void(bool symmetrical, kernel::routing::NetPoint *src, kernel::routing::NetPoint *dst, kernel::routing::NetPoint *gw_src, kernel::routing::NetPoint *gw_dst, std::vector< surf::LinkImpl * > &link_list)> onRouteCreation
 
static simgrid::xbt::signal< void(NetZone &)> onCreation
 
static simgrid::xbt::signal< void(NetZone &)> onSeal
 

Constructor & Destructor Documentation

◆ RoutedZone()

simgrid::kernel::routing::RoutedZone::RoutedZone ( NetZone father,
std::string  name 
)
explicit

Member Function Documentation

◆ getGraph()

void simgrid::kernel::routing::RoutedZone::getGraph ( xbt_graph_t  graph,
std::map< std::string, xbt_node_t > *  nodes,
std::map< std::string, xbt_edge_t > *  edges 
)
overridevirtual

◆ newExtendedRoute()

sg_platf_route_cbarg_t simgrid::kernel::routing::RoutedZone::newExtendedRoute ( RoutingMode  hierarchy,
NetPoint src,
NetPoint dst,
NetPoint gw_src,
NetPoint gw_dst,
std::vector< simgrid::surf::LinkImpl *> &  link_list,
bool  symmetrical,
bool  change_order 
)
virtual

◆ getRouteCheckParams()

void simgrid::kernel::routing::RoutedZone::getRouteCheckParams ( NetPoint src,
NetPoint dst 
)
protected

◆ addRouteCheckParams()

void simgrid::kernel::routing::RoutedZone::addRouteCheckParams ( kernel::routing::NetPoint src,
kernel::routing::NetPoint dst,
kernel::routing::NetPoint gw_src,
kernel::routing::NetPoint gw_dst,
std::vector< simgrid::surf::LinkImpl *> &  link_list,
bool  symmetrical 
)
protected

The documentation for this class was generated from the following files: