Floyd routing data: slow initialization, fast lookup, lesser memory requirements, shortest path routing only.
More...
Floyd routing data: slow initialization, fast lookup, lesser memory requirements, shortest path routing only.
void simgrid::surf::AsFloyd::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
-
src | Initial point of the routing path |
dst | Final point of the routing path |
into | Container into which the traversed links should be pushed |
latency | Accumulator in which the latencies should be added (caller must set it to 0) |
Implements simgrid::surf::AsImpl.