In adaptive routing, intermediate nodes can take the actual network conditions, including the presence of deterioration or bottlenecks, into account and decide accordingly which neighbor the message should be transmitted. Adaptive routing scheme can be either profitable or misrouting according to the selection of the output channel. In profitable routing, only channels that are known to be guaranteed to move closer to the destination are candidates for selection.
Profitable routing represents a conservative view. Misrouting protocols rely on an optimistic view and can use both profitable and non-profitable channels for establishing a path between the source and destination. Selecting a non-profitable channel optimistically assumes that it will lead the message to a free set of profitable channels, allowing a further advance towards the destination.
The advantage of profitable protocols are as follows −
Misrouting protocols are advantageous when faulty channels are present in the network. Under such conditions misrouting protocols have a higher chance of finding an appropriate path.
Adaptive routing schemes can be further divided into progressive or back-tracking protocols. In progressive routing, messages cannot step backward on the path they have already followed.
Conversely in the backtracking scheme, messages can backtrack and systematically explores all possible paths between the source and destination nodes. The message header must contain some status information to avoid a repetitive search of the same path and hence livelock freedom is assured.
Backtracking schemes are also deadlock-free since they do not block holding resources. It can prevent a repetitive search of the same path, backtracking protocols store history information in the message header (or probe). Since the search space can be very large, especially in misrouting protocols, the header becomes too long, which significantly increases the latency time.
In circuit switching hardware support on each node can significantly reduce the header size. Each channel on each node of the multicomputer is supplied with a history bit vector which contains as many bits as there are channels available on the node. If a probe enters the node on channel K, the bits of history bit vector K contain information on the corresponding output channels. If the output channel has been tried the corresponding bits are high, otherwise it is low. An additional history bit vector is used on each node for administrating the probes that were created by the node itself.
If there is no free profitable channel at an intermediate node there are several alternative strategies to follow −
Progressive profitable routing waits until a profitable channel becomes free.
A progressive misrouting protocol tries a non-profitable free channel.
Backtracking routing steps backward and starts again at an earlier node.