![]() ![]() |
|
|
![]() |
![]() |
![]() ![]() |
![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
|
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|||
![]() |
Close Window | ![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
![]() |
All contents copyright © 2003 Cisco Systems, Inc. All rights reserved. |
![]() ![]() |
Overview |
|
![]() ![]() |
7.1 |
![]() |
Distance Vector Routing | |
7.1.1 |
![]() |
Distance vector routing updates |
Routing table updates occur periodically or
when the topology in a distance vector protocol network changes. It is
important that a routing protocol be efficient in updating the routing
tables. As with the network discovery process, topology change updates
proceed systematically from router to router.
![]() ![]()
|
![]() ![]() |
7.1 |
![]() |
Distance Vector Routing | |
7.1.2 |
![]() |
Distance vector routing loop issues |
Routing loops can occur when inconsistent
routing tables are not updated due to slow convergence in a changing
network.
![]()
|
![]() ![]() |
7.1 |
![]() |
Distance Vector Routing | |
7.1.3 |
![]() |
Defining a maximum count |
The invalid updates of Network 1 will
continue to loop until some other process stops the looping. This condition,
called count to infinity, loops packets continuously around the network in
spite of the fundamental fact that the destination network, Network 1, is
down. While the routers are counting to infinity, the invalid information
allows a routing loop to exist.
![]() Without countermeasures to stop the count to infinity process, the distance vector metric of hop count increments each time the packet passes through another router. These packets loop through the network because of wrong information in the routing tables. Distance vector routing algorithms are
self-correcting, but a routing loop problem can require a count to infinity.
To avoid this prolonged problem, distance vector protocols define infinity
as a specific maximum number. This number refers to a routing metric which
may simply be the hop count.
With this approach, the routing protocol permits the routing loop to continue until the metric exceeds its maximum allowed value. The graphic shows the metric value as 16 hops. This exceeds the distance vector default maximum of 15 hops so the packet is discarded by the router. In any case, when the metric value exceeds the maximum value, Network 1 is considered unreachable.
|
![]() ![]() |
7.1 |
![]() |
Distance Vector Routing | |
7.1.4 |
![]() |
Elimination routing loops through split horizon |
Another possible source for a routing loop
occurs when incorrect information that has been sent back to a router
contradicts the correct information that the router originally distributed.
Here is how this problem occurs:
|
![]() ![]() |
7.1 |
![]() |
Distance Vector Routing | |
7.1.5 |
![]() |
Route poisoning |
Route poisoning is used by various distance
vector protocols in order to overcome large routing loops and offer explicit
information when a subnet or network is not accessible. This is usually
accomplished by setting the hop count to one more than the maximum.
One way to avoid inconsistent updates is route
poisoning. When Network 5 goes down, Router E initiates route poisoning by
making a table entry for Network 5 as 16, or unreachable.
When route poisoning is used with triggered updates it will speed up convergence time because neighboring routers do not have to wait 30 seconds before advertising the poisoned route. Route poisoning causes a routing protocol to advertise infinite-metric routes for a failed route. Route poisoning does not break split horizon rules. Split horizon with poison reverse is essentially route poisoning, but specifically placed on links that split horizon would not normally allow routing information to flow across. In either case, the result is that failed routes are advertised with infinite metrics.
|
![]() ![]() |
7.1 |
![]() |
Distance Vector Routing | |
7.1.6 |
![]() |
Avoiding routing loops with triggered updates |
New routing tables are sent to neighboring
routers on a regular basis. For example, RIP updates occur every 30 seconds.
However a triggered update is sent immediately in response to some change in
the routing table. The router that detects a topology change immediately
sends an update message to adjacent routers that, in turn, generate
triggered updates notifying their adjacent neighbors of the change. When a
route fails, an update is sent immediately rather than waiting on the update
timer to expire. Triggered updates, used in conjunction with route
poisoning, ensure that all routers know of failed routes before any holddown
timers can expire. Triggered updates go ahead and send updates because routing information has changed not waiting for the timer to expire. The router sends another routing update on its other interfaces rather than waiting on the routing update timer to expire. This causes the information about the status of the route that has changed, to be forwarded and starts the holddown timers more rapidly on the neighboring routers. The wave of updates propagates throughout the network. Issuing a triggered update Router C announces
that network 10.4.0.0 is unreachable.
|
![]() ![]() |
7.1 |
![]() |
Distance Vector Routing | |
7.1.7 |
![]() |
Preventing routing loops with holddown timers |
A count to infinity problem can be avoided
by using holddown timers:
![]()
|
![]() ![]() |
7.2 |
![]() |
RIP | |
7.2.1 |
![]() |
RIP routing process |
The modern open standard version of RIP,
sometimes referred to as IP RIP, is formally detailed in two separate
documents. The first is known as Request for Comments (RFC) 1058 and the
other as Internet Standard (STD) 56.
![]() RIP has evolved over the years from a Classful Routing Protocol, RIP Version 1 (RIP v1), to a Classless Routing Protocol, RIP Version 2 (RIP v2). RIP v2 enhancements include:
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. The maximum number of hops in a path is 15. When a router receives a routing update that contains a new or changed entry, the metric value is increased by 1 to account for itself as a hop in the path. If this causes the metric to be incremented beyond 15, it is considered to be infinity and the network destination is considered unreachable. RIP includes a number of features that are common in other routing protocols. For example, RIP implements split horizon and holddown mechanisms to prevent incorrect routing information from being propagated.
|
![]() ![]() |
7.2 |
![]() |
RIP | |
7.2.2 |
![]() |
Configuring RIP |
The
router rip
command enables RIP as the routing protocol. The
network
command is then used to tell the router on which interfaces to run RIP. The
routing process then associates specific interfaces with the network
addresses and begins sending and receiving RIP updates on these interfaces.
RIP sends routing-update messages at regular
intervals. When a router receives a routing update that includes changes to
an entry, it updates its routing table to reflect the new route. The
received metric value for the path is increased by 1, and the source
interface of the update is indicated as the next hop in the routing table.
RIP routers maintain only the best route to a destination but can maintain
multiple equal-cost paths to the destination.
The Cisco router interfaces that are connected to networks 10.0.0.0 and 192.168.13.0 send and receive RIP updates. These routing updates allow the router to learn the network topology from neighboring router also running RIP. RIP must be enabled and the networks specified. The remaining tasks are optional. Among these optional tasks are:
To enable RIP, use the following commands
beginning in global configuration mode:
|
![]() ![]() |
7.2 |
![]() |
RIP | |
7.2.3 |
![]() |
Using the ip classless command |
Sometimes a router receives packets destined
for an unknown subnet of a network that has directly connected subnets. In
order for the Cisco IOS software to forward these packets to the best
supernet route possible, use the
ip classless
global configuration command. A supernet route is a route that covers a
greater range of subnets with a single entry. For example, an enterprise
uses the entire subnet 10.10.0.0 /16, then a supernet route for 10.10.10.0
/24 would be 10.10.0.0 /16. The
ip classless command is enabled by
default in Cisco IOS Software Release 11.3 and later. To disable this
feature, use the no
form of this command. When this feature is disabled any packets received that are destined for a subnet that numerically falls within the router’s subnetwork addressing scheme will be discarded. IP classless only affects the operation of the forwarding processes in IOS. IP classless does not affect the way the routing table is built. This is the essence of classful routing. If one part of a major network is known, but the subnet toward which the packet is destined within that major network is unknown, the packet is dropped. The most confusing aspect of this rule is
that the router only uses the default route if the major network destination
does not exist in the routing table. A router by default assumes that all
subnets of a directly connected network should be present in the routing
table. If a packet is received with an unknown destination address within an
unknown subnet of a directly attached network, the router assumes that the
subnet does not exist. So the router will drop the packet even if there is a
default route. Configuring ip
classless on the router resolves this
problem by allowing the router to ignore the classful boundaries of the
networks in its routing table and simply route to the default route.
|
![]() ![]() |
7.2 |
![]() |
RIP | |
7.2.4 |
![]() |
Common RIP configuration issues |
RIP routers must rely on neighboring routers
for network information that is not known first hand. A common term used to
describe this functionality is Routing By Rumor. RIP uses a distance vector
routing algorithm. All distance vector routing protocols have issues that
are primarily created by slow convergence. Convergence is when all routers
in the same internetwork have the same routing information. Among these issues are routing loops and counting to infinity. These result in inconsistencies due to routing update messages with out of date routes being propagated around the internetwork. To reduce routing loops and counting to infinity, RIP uses the following techniques:
Some of these methods may require some configuration, while others do not require or rarely require configuration. RIP permits a maximum hop count of 15. Any destination greater that 15 hops away is tagged as unreachable. RIP’s maximum hop count greatly restricts its use in large internetworks but prevents a problem called “counting to infinity” from causing endless network routing loops. The split horizon rule is based on the theory that it is not useful to send information about a route back in the direction from which it came. In some network configurations, it may be necessary to disable split horizon. The following command is used to disable split horizon:
The holddown timer is another mechanism that
may need some changes. Holddown timers help prevent counting to infinity but
also increase convergence time. The default holddown for RIP is 180 seconds.
This will prevent any inferior route from being updated but may also prevent
a valid alternative route from being installed. The holddown timer can be
decreased to speed up convergence but should be done with caution. The ideal
setting would be to set the timer just longer that the longest possible
update time for the internetwork. In the example in Figure
To change the holddown timer:
One additional item that affects convergence time, and is configurable, is the update interval. The default RIP update interval in Cisco IOS is 30 seconds. This can be configured for longer intervals to conserve bandwidth, or for shorter intervals to decrease convergence time. To change the update internal:
Another issue with routing protocols is the
unwanted advertisement of routing updates out a particular interface. When a
network
command is issued for a given network, RIP will immediately begin sending
advertisements out all interfaces within the specified network address
range. To control the set of interfaces that will exchange routing updates,
the network administrator can disable the sending of routing updates on
specified interfaces by configuring the
passive-interface
command.
Because RIP is a broadcast protocol, the
network administrator may have to configure RIP to exchange routing
information in a non-broadcast network such as Frame Relay. In this type of
network, RIP needs to be told of other neighboring RIP routers. To do this
use the command displayed in Figure
By default, the Cisco IOS software receives
RIP Version 1 and Version 2 packets, but sends only Version 1 packets. The
network administrator can configure the router to only receive and send
Version 1 packets or the administrator can configure the router to send only
Version 2 packets. To configure the router to send and receive packets from
only one version, use the commands in Figure
To control how packets received from an
interface are processed, use the commands in Figure
|
![]() ![]() |
7.2 |
![]() |
RIP | |
7.2.5 |
![]() |
Verifying RIP configuration |
There are several commands that can be used
to verify that RIP is properly configured. Two of the most common are the
show ip route
command and the show ip
protocols command.
The
show ip protocols command shows which
routing protocols are carrying IP traffic on the router.
The
show ip route
command can be used to verify that routes received by RIP neighbors are
installed in the routing table.
Additional commands to check RIP configuration are as follows:
|
![]() ![]() |
7.2 |
![]() |
RIP | |
7.2.6 |
![]() |
Troubleshooting RIP update issues |
Most of the RIP configuration errors involve
an incorrect network statement, discontiguous subnets, or split horizons.
One highly effective command for finding RIP update issues is the
debug ip rip
command. The
debug ip rip
command displays RIP routing updates as they are sent and received. The
example in Figure
There are several key indicators to look for
in the output of the debug ip
rip command. Problems such as
discontiguous subnetworks or duplicate networks can be diagnosed with this
command. A symptom of these issues would be a router advertising a route
with a metric that is less than the metric it received for that network.
Other commands to troubleshoot RIP:
|
![]() ![]() |
7.2 |
![]() |
RIP | |
7.2.7 |
![]() |
Preventing routing updates through an interface |
Route filtering works by regulating the
routes that are entered into or advertised out of a route table. These have
different effects on link-state routing protocols than they do on distance
vector protocols. A router running a distance vector protocol advertises
routes based on what is in its route table. As a result, a route filter
influences which routes the router advertises to its neighbors. On the other hand, routers running link state protocols determine routes based on information in the link-state database, rather than the neighboring router advertised route entries. Route filters have no effect on link-state advertisements or the link-state database. For this reason, the information in this document only applies to distance vector IP Routing Protocols such as Routing Information Protocol (RIP), and Interior Gateway Routing Protocol (IGRP). Using the
passive interface
command can prevent routers from sending routing updates through a router
interface. Keeping routing update messages from being sent through a router
interface prevents other systems on that network from learning about routes
dynamically. Router E uses the command to keep routing updates from being
sent.
For RIP and IGRP, the passive interface command stops the router from sending updates to a particular neighbor, but the router continues to listen and use routing updates from that neighbor. Keeping routing update messages from being sent through a router interface prevents other systems on the interface from learning about routes dynamically.
|
![]() ![]() |
7.2 |
![]() |
RIP | |
7.2.8 |
![]() |
Load balancing with RIP |
Load balancing is a concept that allows a
router to take advantage of multiple best paths to a given destination.
These paths are either statically defined by a network administrator or
calculated by a dynamic routing protocol such as RIP. RIP is capable of load balancing over as many as six equal-cost paths, with four paths being default. RIP performs what is referred to as “round robin” load balancing. This means that RIP takes turns forwarding packets over the parallel paths. Figure
Equal cost routes can be found by using the
show ip route
command. For example, Figure
Notice there are two routing descriptor blocks. Each block is one route. There is also an asterisk (*) next to one of the block entries. This corresponds to the active route that is used for new traffic.
|
![]() ![]() |
7.2 |
![]() |
RIP | |
7.2.9 |
![]() |
Load balancing across multiple paths |
Load-balancing describes the ability of a
router to transmit packets to a destination IP address over more than one
path. Load balancing is a concept that allows a router to take advantage of
multiple best paths to a given destination. The paths are derived either
statically or with dynamic protocols, such as RIP, EIGRP, OSPF, and IGRP.
When a router learns multiple routes to a
specific network, the route with the lowest administrative distance is
installed in the routing table.
If the router receives and installs multiple paths with the same administrative distance and cost to a destination, load-balancing can occur. There can be up to six equal cost routes (a limit imposed by Cisco IOS on the routing table), but some Interior Gateway Protocols (IGPs) have their own limitation. EIGRP allows up to four equal cost routes. By default, most IP routing protocols install a maximum of four parallel routes in a routing table. Static routes always install six routes. The exception is BGP, which by default allows only one path to a destination. The range of maximum paths is one to six paths. To change the maximum number of parallel paths allowed, use the following command in router configuration mode:
IGRP can load balance up to six unequal links. RIP networks must have the same hop count to load balance, whereas IGRP uses bandwidth to determine how to load balance. Three ways to get to Network X:
Router E chooses the second path above, E-C-A with a metric of 20 as it is a lower cost than 30 and 45. When routing IP, the Cisco IOS offers two methods of load balancing, per-packet and per-destination load balancing. If process switching is enabled, the router will alternate paths on a per-packet basis. If fast switching is enabled, only one of the alternate routes will be cached for the destination address, so all packets in the packet stream bound for a specific host will take the same path. Packets bound for a different host on the same network may use an alternate route, traffic is load balanced on a per-destination basis.
|
![]() ![]() |
7.2 |
![]() |
RIP | |
7.2.10 |
![]() |
Integrating static routes with RIP |
Static routes are user-defined routes that
force packets moving between a source and a destination to take a specific
path. Static routes become very important if the Cisco IOS software does not
learn a route to a particular destination. They are also useful for
specifying a “gateway of last resort”, commonly referred to as a default
route. If a packet is destined for a subnet that is not explicitly listed in
the routing table, the packet is forwarded to the default route.
A router running RIP can receive a default route via an update from another router running RIP. Another option is for the router to generate the default route itself. The static routes can be removed using the
no ip route
global configuration command. The administrator can override a static route
with dynamic routing information by adjusting the administrative distance
values. Each dynamic routing protocol has a default administrative distance
(AD). A static route can be defined as less desirable than a dynamically
learned route, as long as the AD of the static route is higher than that of
the dynamic route.
Static routes that point out an interface will be advertised via the RIP router that owns the static route, and propagated throughout the internetwork. This is because static routes that point to an interface are considered in the routing table to be connected and thus lose their static nature in the update. If a static route is assigned to an interface that is not defined in the RIP process, via a network command, RIP will not advertise the route unless a redistribute static command is specified in the RIP process. When an interface goes down, all static routes pointing out that interface are removed from the IP routing table. Likewise, when the software can no longer find a valid next hop for the address specified in the static route, then the static route is removed from the IP routing table. In Figure
To configure a static route, use the Figure
|
![]() ![]() |
7.3 |
![]() |
IGRP | |
7.3.1 |
![]() |
IGRP features |
IGRP is a distance vector Interior Gateway
Protocol (IGP). Distance vector routing protocols mathematically compare
routes by measuring distances. This measurement is known as the distance
vector. Routers using distance vector protocols must send all or a portion
of their routing table in a routing update message at regular intervals to
each of their neighboring routers. As routing information spreads throughout
the network, routers perform the following functions:
IGRP is a distance vector routing protocol developed by Cisco. IGRP sends routing updates at 90 second intervals, advertising networks for a particular autonomous system. Key design characteristics of IGRP are a follows:
By default, the IGRP routing protocol uses
bandwidth and delay as metrics.
|
![]() ![]() |
7.3 |
![]() |
IGRP | |
7.3.2 |
![]() |
IGRP metrics |
The
show ip protocols
command displays parameters, filters, and network information concerning the
routing protocols in use on the router.
![]() This composite metric is more accurate than the hop count metric that RIP uses when choosing a path to a destination. The path that has the smallest metric value is the best route. The metrics that IGRP uses are:
IGRP uses a composite metric. This metric is
calculated as a function of bandwidth, delay, load, and reliability. By
default, only bandwidth and delay are considered. The other parameters are
considered only if enabled via configuration. Delay and bandwidth are not
measured values, but are set via the delay and bandwidth interface commands.
The show ip route
command in the example shows the IGRP metric values in brackets. A link with
a higher bandwidth will have a lower metric, and a route with a lower
cumulative delay will have a lower metric.
|
![]() ![]() |
7.3 |
![]() |
IGRP | |
7.3.3 |
![]() |
IGRP routes |
IGRP advertises three types of routes:
Interior System Exterior
|
![]() ![]() |
7.3 |
![]() |
IGRP | |
7.3.4 |
![]() |
IGRP stability features |
IGRP has a number of features that are
designed to enhance its stability, such as:
Holddowns Split horizons Poison reverse updates IGRP also maintains a number of timers and variables containing time intervals. These include an update timer, an invalid timer, a holddown timer, and a flush timer. The update timer specifies how frequently routing update messages should be sent. The IGRP default for this variable is 90 seconds. The invalid timer specifies how long a router should wait in the absence of routing-update messages about a specific route before declaring that route invalid. The IGRP default for this variable is three times the update period. The holddown timer specifies the amount of time for which information about poorer routes is ignored. The IGRP default for this variable is three times the update timer period plus 10 seconds. Finally, the flush timer indicates how much time should pass before a route is flushed from the routing table. The IGRP default is seven times the routing update timer. Today, IGRP is showing its age, it lacks support for variable length subnet masks (VLSM). Rather than develop an IGRP version 2 to correct this problem, Cisco has built upon IGRP's legacy of success with Enhanced IGRP.
|
![]() ![]() |
7.3 |
![]() |
IGRP | |
7.3.5 |
![]() |
Configuring IGRP |
To configure the IGRP routing process, use
the router igrp
configuration command. To shut down an IGRP routing process, use the
no
form of this command.
![]()
The Autonomous System number is one that identifies the IGRP process. It is also used to tag the routing information. To specify a list of networks for IGRP routing processes, use the network router configuration command. To remove an entry, use the no form of the command. Figure
|
![]() ![]() |
7.3 |
![]() |
IGRP | |
7.3.6 |
![]() |
Migrating RIP to IGRP |
With the creation of IGRP in the early
1980s, Cisco Systems was the first company to solve the problems associated
with using RIP to route datagrams between interior routers. IGRP determines
the best path through the internetwork by examining the bandwidth and delay
of the networks between routers. IGRP converges faster than RIP, thereby
avoiding the routing loops caused by disagreement over the next routing hop
to be taken. Further, IGRP does not share the hop count limitation of RIP.
As a result of this and other improvements over RIP, IGRP enabled many
large, complex, topologically diverse internetworks to be deployed. These are the steps to follow to convert from RIP to IGRP.
|
![]() ![]() |
7.3 |
![]() |
IGRP | |
7.3.7 |
![]() |
Verifying IGRP configuration |
To verify that IGRP has been configured
properly, enter the show ip
route command and look for IGRP
routes signified by an "I". Additional commands for checking IGRP configuration are as follows:
To verify that the Ethernet interface is
properly configured, enter the
show interface fa0/0 command. Figure
To see if IGRP is enabled on the router,
enter the show ip protocols
command. Figure
The commands illustrated in Figures
|
![]() ![]() |
7.3 |
![]() |
IGRP | |
7.3.8 |
![]() |
Troubleshooting IGRP |
Most IGRP configuration errors involve a
mistyped network statement, discontiguous subnets, or an incorrect
Autonomous System Number. The following commands are useful when troubleshooting IGRP:
Figure
Figure
It is discovered that the wrong AS number was
being used, correcting it results in the output in Figure
|
![]() ![]() |
Summary |
An understanding of the following key points
should have been achieved:
|