SimGrid  3.14.159
Versatile Simulation of Distributed Systems
simgrid::kernel::routing Namespace Reference

Namespaces

 vivaldi
 

Classes

class  BypassRoute
 
class  ClusterZone
 NetZone where each component is connected through a private link. More...
 
class  DijkstraZone
 NetZone with an explicit routing computed on need with Dijsktra. More...
 
class  DragonflyRouter
 
class  DragonflyZone
 NetZone using a Dragonfly topology. More...
 
class  EmptyZone
 NetZone with no routing, useful with the constant network model. More...
 
class  FatTreeLink
 Link in a fat tree (FatTreeZone). More...
 
class  FatTreeNode
 A node in a fat tree (FatTreeZone). More...
 
class  FatTreeZone
 NetZone using a Fat-Tree topology. More...
 
class  FloydZone
 NetZone with an explicit routing computed at initialization with Floyd-Warshal. More...
 
class  FullZone
 NetZone with an explicit routing provided by the user. More...
 
class  NetCard
 Network cards are the vertices in the graph representing the network, used to compute paths between nodes. More...
 
class  NetZoneImpl
 Private implementation of the Networking Zones. More...
 
class  RoutedZone
 NetZone with an explicit routing (abstract class) More...
 
class  TorusZone
 NetZone using a Torus topology. More...
 
class  VivaldiZone
 NetZone modeling peers connected to the cloud through a private link. More...
 

Functions

static void find_common_ancestors (NetCard *src, NetCard *dst, NetZoneImpl **common_ancestor, NetZoneImpl **src_ancestor, NetZoneImpl **dst_ancestor)
 Get the common ancestor and its first children in each line leading to src and dst. More...
 
static double euclidean_dist_comp (int index, std::vector< double > *src, std::vector< double > *dst)
 
static std::vector< double > * getCoordsFromNetcard (NetCard *nc)
 

Function Documentation

◆ find_common_ancestors()

static void simgrid::kernel::routing::find_common_ancestors ( NetCard src,
NetCard dst,
NetZoneImpl **  common_ancestor,
NetZoneImpl **  src_ancestor,
NetZoneImpl **  dst_ancestor 
)
static

Get the common ancestor and its first children in each line leading to src and dst.

In the recursive case, this sets common_ancestor, src_ancestor and dst_ancestor are set as follows.

*         platform root
*               |
*              ...                <- possibly long path
*               |
*         common_ancestor
*           /        \
*          /          \
*         /            \          <- direct links
*        /              \
*       /                \
*  src_ancestor     dst_ancestor  <- must be different in the recursive case
*      |                   |
*     ...                 ...     <-- possibly long paths (one hop or more)
*      |                   |
*     src                 dst
*  

In the base case (when src and dst are in the same AS), things are as follows:

*                  platform root
*                        |
*                       ...                      <-- possibly long path
*                        |
* common_ancestor==src_ancestor==dst_ancestor    <-- all the same value
*                   /        \
*                  /          \                  <-- direct links (exactly one hop)
*                 /            \
*              src              dst
*  

A specific recursive case occurs when src is the ancestor of dst. In this case, the base case routing should be used so the common_ancestor is specifically set to src_ancestor==dst_ancestor. Naturally, things are completely symmetrical if dst is the ancestor of src.

*            platform root
*                  |
*                 ...                <-- possibly long path
*                  |
*  src == src_ancestor==dst_ancestor==common_ancestor <-- same value
*                  |
*                 ...                <-- possibly long path (one hop or more)
*                  |
*                 dst
*  

◆ euclidean_dist_comp()

static double simgrid::kernel::routing::euclidean_dist_comp ( int  index,
std::vector< double > *  src,
std::vector< double > *  dst 
)
inlinestatic

◆ getCoordsFromNetcard()

static std::vector<double>* simgrid::kernel::routing::getCoordsFromNetcard ( NetCard nc)
static