Simulating realistic packet routing without routing protocols

A fundamental requirement for any network simulation environment is the realistic forwarding of packets from a source to a destination in the simulated topology. The routing decisions at each hop along the path should accurately represent decisions made by actual routers with a similar topology. Further, the routing decisions must be affected by topology changes, such as link weight adjustments or node failures. The methods used by the simulation tools to achieve these requirements can be classified into three fundamental classes. First, the simulator can implement a model of any of the well known routing protocols, such as BGP, OSPF, or EIGRP. Assuming the implemented models of these protocols are a reasonable representation of the deployed protocol, the routing decisions and routing updates in the presence of failures are highly accurate and accurately model the real-world network. A second method is to use global topology knowledge within the simulator to pre-compute routing information using any of several graph theoretic algorithms that compute paths through a graph. Should any topology changes occur, the simulator can simply recompute routes based on revised global knowledge. A third method is the use of on-demand routing computations using global topology knowledge, coupled with a source-based routing scheme, such as the well-known NIx-Vector method. Both of the first two methods suffer from excessive memory requirements for routing table storage, which can be O(N/sup 2/) in the extreme case. The last two methods suffer from unrealistic routing decisions in the presence of topology changes, due to the use of instantaneous global topology knowledge. A link failure in some part of the topology is immediately known to all nodes, which results in instantaneous and unrealistic routing updates throughout the network. We present an approach to improve the realism of the on-demand methods, without incurring the O(N/sup 2/) memory overhead of the routing protocol method.