Expand description

A Routing defines the ways to select a next router to eventually reach the destination.

see new_routing for documentation on the configuration syntax of predefined routings.

Structs

Represent a port plus additional information that a routing algorithm can determine on how a packet must advance to the next router or server.

Just remap the virtual channels.

Set the virtual channels to use in each hop. Sometimes the same can be achieved by the router policy Hops.

Set the virtual channels to use in each hop for each link class. See also the simpler transformation by ChannelsPerHop.

Encapsulation of SourceRouting, a variant of SourceAdaptiveRouting. Stores in the packet one path of each length. Set label equal to the path length minus the smallest length.

Use a shortest up/down path from origin to destination. But in contrast with UpDown this uses explicit table instead of querying the topology. Used to define Up*/Down* (UpDownStar), see Autonet, where it is build from some spanning tree.

Mindless routing Employ any path until reaching a router with the server atached. The interested may read a survey of random walks on graphs to try to predict the time to reach the destination. For example “Random Walks on Graphs: A Survey” by L. Lovász. Note that every cycle the request is made again. Hence, the walk is not actually unform random when there is network contention.

Annotations by the routing to keep track of the candidates.

The argument of a builder function for Routings.

Information stored in the packet for the Routing algorithms to operate.

The candidates as provided by the routing together with related information. This is, the return type of Routing::next.

Use the shortest path from origin to destination

Encapsulation of SourceRouting, to allow storing several paths in the packet. And then, have adaptiveness for the first hop.

Stubborn routing Wraps a routing so that only one request is made in every router. The first time the router make a port request, that request is stored and repeated in further calls to next until reaching a new router. Stores port, virtual_channel, label into routing_info.selections. Note that has idempotent=false since the value may change if the request has not actually been made.

To employ two different routings. It will use either first_routing or second_routing according to policy.

Use a shortest up/down path from origin to destination. The up/down paths are understood as provided by Topology::up_down_distance.

Use the shortest path from origin to destination, giving a weight to each link class. Note that it uses information based on BFS and not on Dijkstra, which may cause discrepancies in some topologies. See the Topology::compute_distance_matrix and its notes on weights for more informations.

Enums

A policy for the SumRouting about how to select among the two Routings.

Traits

A routing algorithm to provide candidate routes when the Router requires. It may store/use information in the RoutingInfo. A Routing does not receive information about the state of buffers or similar. Such a mechanism should be given as a VirtualChannelPolicy.

Trait for Routings that build the whole route at source. This includes routings such as K-shortest paths. But I have all my implementations depending on a private algorithm, so they are not yet here. They will all be released when the dependency is formally published.

Functions