Routing Information Protocol

From Wikipedia, the free encyclopedia

The Routing Information Protocol (RIP) was one of the most commonly used interior gateway protocol (IGP) routing protocols on internal networks (and to a lesser extent, networks connected to the Internet), which helps routers dynamically adapt to changes of network connections by communicating information about which networks each router can reach and how far away those networks are.

Although RIP is still actively used, it is generally considered to have been made obsolete by routing protocols such as OSPF and IS-IS. Nonetheless, a somewhat more capable protocol in the same basic family (distance-vector routing protocols), was Cisco's proprietary (IGRP) Interior Gateway Routing Protocol. Cisco does not support IGRP in current releases of its software. It was "replaced" by EIGRP, the Enhanced Interior Gateway Routing Protocol, which is a completely new design. While EIGRP is still technically distance vector, it relates to IGRP only in having a similar name.

RIP is sometimes said to stand for Rest in Pieces in reference to the reputation that RIP has for breaking unexpectedly, rendering a network unable to function. [1]

Contents

[edit] History

The routing algorithm used in RIP, the Bellman-Ford algorithm, was first deployed in a computer network in 1968, as the initial routing algorithm of the ARPANET.

The earliest version of the specific protocol that became RIP was the Gateway Information Protocol, part of Xerox Parc's PARC Universal Packet internetworking protocol suite. A later version, named the Routing Information Protocol, was part of Xerox Network Services.

A version of RIP which supported the Internet Protocol (IP) was later included in the Berkeley Software Distribution (BSD) of the Unix operating system as the routed daemon, and various other vendors would implement their own implementations of the routing protocol. Eventually RFC 1058 was issued to unify the various implementations under a single standard.

[edit] Technical detail

RIP is a distance-vector routing protocol, which employs the hop count as a routing metric. The maximum number of hops allowed with RIP is 15, and the hold down time is 180 seconds. Originally each RIP router transmits full updates every 30 seconds by default. Originally, routing tables were small enough that the traffic was not significant.

As networks grew in size, however, it became evident there could be a massive burst every 30 seconds, even if the routers had been initialized at random times. It was thought, as a result of random initialization, the routing updates would spread out in time, but this was not true in practice. Sally Floyd and Van Jacobson published research in 1994 [1] that showed having all routers use a fixed 30 second timer was a very bad idea. Without slight randomization of the update timer, this research showed that the timers weakly synchronized over time and sent their updates out at the same time. Modern RIP implementations introduce deliberate time variation into the update timer of each router.

RIP runs at the network layer of the Internet protocol suite. RIP prevents routing loops from continuing indefinitely by implementing a limit on the number of hops allowed in a path from the source to a destination. This hop limit, however, limits the size of networks that RIP can support.

RIP implements the split horizon and holddown mechanisms to prevent incorrect routing information from being propagated. These are some of the stability features of RIP.

In many current networking environments RIP would not be the first choice for routing as its time to converge and scalability are poor compared to EIGRP, OSPF, or IS-IS (the latter two being link-state routing protocols), and the hop limit severely limits the size of network it can be used in. On the other hand, it is easier to configure because, using minimal settings for any routing protocols, RIP does not require any parameter on a router whereas all the other protocols require one or more parameters.

Architecturally, RIP is a layer management protocol for what is called the Internetwork Layer in the Internet protocol suite or the Network Layer in the OSI Reference Model. While it is carried in end-to-end (IPS) or transport layer (OSI) packets, using port number 520 in the User Datagram Protocol (UDP), as a routing protocol, it belongs to the network layer, not the layer that moves its packets.

[edit] Versions

There are three IP versions of RIP, RIPv1, RIPv2, and RIPng. An earlier version of RIP supported the Xerox Network Services protocol suite.

[edit] RIPv1

RIPv1, defined in RFC 1058, uses classful routing. The periodic routing updates do not carry subnet information, lacking support for variable length subnet masks (VLSM). This limitation makes it impossible to have different-sized subnets inside of the same network class. In other words, all subnets in a network class must be the same size. There is also no support for router authentication, making RIPv1 slightly vulnerable to various attacks.

[edit] RIPv2

Due to the above deficiencies of RIPv1, RIPv2 was developed in 1994 and included the ability to carry subnet information, thus supporting Classless Inter-Domain Routing (CIDR). However to maintain backwards compatibility the 15 hop count limit remained. Rudimentary plain text authentication was added to secure routing updates; later, MD5 authentication was defined in RFC 2082. Also, in an effort to avoid waking up hosts that do not participate in the routing protocol, RIPv2 multicasts routing updates to 224.0.0.9, as opposed to RIPv1 which uses broadcast.

RIPv2 is specified in RFC 2453 or STD 56.

[edit] RIPng

RIPng, defined in RFC 2080, is an extension of Ripv2 original protocol to support IPv6. The main differences between RIPng and RIPv2 are:

  • RIPv2 supports RIP updates authentication, RIPng does not (IPv6 routers were, at the time, supposed to use IPsec for authentication);
  • RIPv2 allows attaching arbitrary tags to routes, RIPng does not;
  • RIPv2 encodes the nexthop into each route entries, RIPng requires specific encoding of the nexthop for a set of route entries.

[edit] See also

[edit] External references

[edit] Implementations

  • routed, included in most BSD Unix systems
  • 6WINDGate - 6WIND, commercial embedded open-source routing modules
  • Quagga, a fork of GNU Zebra for Unix-like systems

[edit] References

  1. ^ The Synchronization of Periodic Routing Messages, S. Floyd & V. Jacobson,April 1994

[edit] Further reading

  • Edward A. Taft, Gateway Information Protocol (revised) (Xerox Parc, Palo Alto, May, 1979)
  • Xerox System Integration Standard - Internet Transport Protocols (Xerox, Stamford, 1981)