Virtual Rerouting

Virtual rerouting is necessary to prevent loop detection due to circular routes. The MTA performs a virtual reroute from the lowest-cost connector to the currently selected connector when the following occurs:

When non-optimal routes are chosen, it is possible, and sometimes desirable, for the message to travel circular routes before reaching the final destination.

A message destined for D will be routed in the following order: A->B->C. However, if the C->D connector is waiting on an Open Retry counter or is unavailable when the message arrives at C, the MTA on C routes the message to the higher-cost alternate route: C->B->A->D, as shown in the following illustration.

A<-----Cost 1------->B<-----Cost 1----->C<-----Cost 1----->D	
A<-----Cost 10----->D

Without the virtual reroute at MTA C, the message would be loop-detected when it re-entered MTA B. In this situation, it is assumed that the incoming connector is filtered out of the initial routing attempt for a message. Otherwise MTA B would route the message directly back to C due to cost considerations.