I understand that destination-based routing builds the "route" from the destination backwards to the source (e.g. if using a spanning tree, then the tree is routed at the destination). With source-based routing the opposite is true: the route is build from the source onwards towards the destination.

However I don't understand the practical difference. How does it make a difference if I base my decision on the source or on the destination. Say, a shortest path algorithm such as Dijkstra's should give the same result regardless?

Could someone explain?

  • $\begingroup$ Are you thinking of IP routing, or routing protocols in general? If it's IP routing specificaly, I'm not sure if there's a Stack Exchange site where it is off-topic. The network engineering proposal would probably be its best home if it goes live. I think we can give it a shot on Computer Science, as an applied CS question. If your question is about routing algorithms in general, Computer Science is definitely the right place. $\endgroup$ – Gilles 'SO- stop being evil' Mar 23 '13 at 19:40
  • $\begingroup$ Thanks. I figured it out. Was talking about routing in general :) $\endgroup$ – JB2 Mar 25 '13 at 16:47

Destination-based routing is the typical, most common type of routing. For this, each message that we send contains the address of the destination and the forwarding decision process makes its forwarding decision solemnly based on this address (and independent of the original sender). i.e. We don't care about who sent the message, only about where it is supposed to go.

So, when constructing a routes, one thing we can do is root a spanning tree at the destination. This creates a path from all possible sources to that destination. This is called a "sink tree".

Source-based routing is the reverse of destination-based routing. The decision process is based on the source address. So, when sending a message, we only include the address of the sender (and not of the destination). The decision on where to forward the message is based on this source address. This means that the source could be sending the message to any host (we don't know exactly who). Therefore we create a spanning tree routed at the source (this is known as a "delivery tree") and the message is thus sent to every child in this tree.

Source-based routing is only really useful for doing some kind of broadcast / multicast (e.g. consider a delivery tree when building a multicast group).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.