Routing is defined as the techniques used for a message to select a path over the network channels. Formally speaking, routing involves the identification of a set of permissible paths that may be used by a message to reach its destination, and a function, h, that selects one path from the set of permissible paths.
A routing technique is said to be adaptive if, for a given source and destination pair, the path taken by the message depends on network conditions, such as network congestion.
Routing techniques can also be classified based on the method used to make the routing decision as centralized (self) or distributed routing. In centralized routing, the routing decisions regarding the entire path are made before sending the message. In distributed routing, each node decides by itself which channel should be used to forward the incoming message.
There are two types of communication operations in message-passing systems, that is, one-to-one (point-to-point or unicast) and collective communications. In unicast a node is allowed to communicate a message to only a single destination, which may be its immediate neighbours. Several routing operations are defined under collective communication.
Broadcast and multicast are the most widely used. In broadcast, also known as the one-to-all operation, one node sends the same message to all other nodes. In multicast, also known as the one-to-many operation, one node sends its messages to k distinct destinations.
Broadcast is mainly used to distribute data from one node to others during the computation of a distributed memory program. Multicast has several uses in large-scale multiprocessors, including parallel search algorithms and single program multiple data (SPMD) computation.