SimGrid  3.13
Versatile Simulation of Distributed Systems
simgrid::surf::AsFull Class Reference

Full routing: fast, large memory requirements, fully expressive. More...

#include <AsFull.hpp>

Inheritance diagram for simgrid::surf::AsFull:
simgrid::surf::AsRoutedGraph simgrid::surf::AsImpl

Public Member Functions

 AsFull (const char *name)
 
void seal () override
 
 ~AsFull ()
 
void getRouteAndLatency (NetCard *src, NetCard *dst, sg_platf_route_cbarg_t into, double *latency) override
 Probe the routing path between two points. More...
 
void addRoute (sg_platf_route_cbarg_t route) override
 
- Public Member Functions inherited from simgrid::surf::AsRoutedGraph
 AsRoutedGraph (const char *name)
 
 ~AsRoutedGraph ()
 
xbt_dynar_t getOneLinkRoutes () override
 retrieves the list of all routes of size 1 (of type src x dst x Link) More...
 
virtual void getGraph (xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges) override
 
virtual sg_platf_route_cbarg_t newExtendedRoute (RoutingMode hierarchy, sg_platf_route_cbarg_t routearg, int change_order)
 
- Public Member Functions inherited from simgrid::surf::AsImpl
std::vector< surf::Link * > * getBypassRoute (surf::NetCard *src, surf::NetCard *dst)
 

Public Attributes

sg_platf_route_cbarg_t * routingTable_ = nullptr
 
- Public Attributes inherited from simgrid::surf::AsImpl
RoutingMode hierarchy_ = RoutingMode::unset
 
surf::NetCardnetcard_ = nullptr
 

Additional Inherited Members

- Public Types inherited from simgrid::surf::AsImpl
enum  RoutingMode { RoutingMode::unset = 0, RoutingMode::base, RoutingMode::recursive }
 
- Static Public Member Functions inherited from simgrid::surf::AsImpl
static void getRouteRecursive (surf::NetCard *src, surf::NetCard *dst, std::vector< surf::Link * > *links, double *latency)
 Recursive function for getRouteAndLatency. More...
 
- Protected Member Functions inherited from simgrid::surf::AsRoutedGraph
void getRouteCheckParams (NetCard *src, NetCard *dst)
 
void addRouteCheckParams (sg_platf_route_cbarg_t route)
 
- Protected Member Functions inherited from simgrid::surf::AsImpl
 AsImpl (const char *name)
 
 ~AsImpl ()
 

Detailed Description

Full routing: fast, large memory requirements, fully expressive.

Constructor & Destructor Documentation

simgrid::surf::AsFull::AsFull ( const char *  name)
simgrid::surf::AsFull::~AsFull ( )

Member Function Documentation

void simgrid::surf::AsFull::seal ( )
override
void simgrid::surf::AsFull::getRouteAndLatency ( NetCard src,
NetCard dst,
sg_platf_route_cbarg_t  into,
double *  latency 
)
overridevirtual

Probe the routing path between two points.

The networking model uses this function when creating a communication to retrieve both the list of links that the create communication will use, and the summed latency that these links represent.

The network could recompute the latency by itself from the list, but it would require an additional link set traversal. This operation being on the critical path of SimGrid, the routing computes the latency in behalf of the network.

Things are rather complex here because we have to find the path from ASes to ASes, and within each. In addition, the different ASes may use differing routing models. Some ASes may be routed in full, others may have only some connection information and use a shortest path on top of that, and so on. Some ASes may even not have any predefined links and use only coordinate informations to compute the latency.

So, the path is constructed recursively, with each traversed AS adding its information to the set. The algorithm for that is explained in http://hal.inria.fr/hal-00650233/

Parameters
srcInitial point of the routing path
dstFinal point of the routing path
intoContainer into which the traversed links should be pushed
latencyAccumulator in which the latencies should be added (caller must set it to 0)

Implements simgrid::surf::AsImpl.

void simgrid::surf::AsFull::addRoute ( sg_platf_route_cbarg_t  route)
override

Member Data Documentation

sg_platf_route_cbarg_t* simgrid::surf::AsFull::routingTable_ = nullptr

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