The simplicity of the Routing Information Protocol is often given as the main reason for its popularity; I certainly have mentioned this enough times in this section. Simplicity is great most of the time, but an unfortunate “price” of simplicity in too many cases is that problems crop up, usually in unusual cases or special situations. And so it is with RIP: the straight-forward distance-vector algorithm and operation mechanism work well most of the time, but they have some important weaknesses. We need to examine these problems to understand both the limitations of RIP and some of the complexities that have been added to the protocol to resolve them.
Problems With RIP’s Basic Algorithm and Implementation
The most important area where we find serious issues with RIP is with the basic function of the distance-vector algorithm described earlier in this section, and the way that messages are used to implement it. The are four main problems here: slow convergence, routing loops, “counting to infinity” and “small infinity”.
The distance-vector algorithm is designed so that all routers share all their routing information regularly. Over time then, all routers eventually end up with the same information about the location of networks and which are the best routes to use to reach them. This is called convergence. Unfortunately, the basic RIP algorithm is rather slow to achieve convergence. It takes a long time for all routers to get the same information, and in particular, it takes a long time for information about topology changes to propagate.
Consider the worst-case situation of two networks separated by 15 routers. Since routers normally send RIP Response messages only every 30 seconds, a change to one of this pair of networks might not be seen by the router nearest the other one until many minutes have elapsed—an eternity in networking terms.
The slow convergence problem is even more pronounced when it comes to the propagation of route failures. Failure of a route is only detected through the expiration of the 180-second Timeout timer, so that adds up to three minutes more delay before convergence can even begin.
A routing loop occurs when Router A has an entry telling it to send datagrams for Network 1 to Router B, and Router B has an entry saying that datagrams for Network 1should be sent to Router A. Larger loops can also exist: Router A says to send to B, which says to send to C, which says to send to A.
While under normal circumstances these loops should not occur, they can happen in special situations. RIP does not include any specific mechanism to detect or prevent routing loops; the best it can do is try to avoid them.