Implementing EIGRP for IPv6
Although EIGRP is a Cisco proprietary protocol, it and its predecessor, IGRP (IGRP is an obsolete protocol and removed from production in Cisco IOS 12.3 and later), have been widely deployed in enterprise networks. EIGRP has also supported multiple protocols besides IP (AppleTalk and Novell IPX). For these reasons, it is logical that EIGRP would continue to be used in the IPv6 world. This section describes Cisco EIGRP support for IPv6. The theory and operation of EIGRP only differs slightly between IPv6 and IPv4. The main differences are where IPv6 and IPv4 deviate as a protocol, so parts of this section will serve as a review.
EIGRP IPv6 Theory of Operation
Although the configuration and management of EIGRP for IPv4 and EIGRP for IPv6 are similar, they are configured and managed separately.
As previously mentioned, EIGRP is inherently a multiprotocol routing protocol because it has supported non-IP protocols. Novell IPX and AppleTalk were protocols with early support from EIGRP. As with the non-IP protocols, IPv6 support is added as a separate module within the router. IPv6 EIGRP is configured and managed separately from IPv4 EIGRP, but the mechanisms and configuration techniques for IPv6 EIGRP will be very familiar to engineers who have worked with EIGRP for IPv4.
EIGRP maintains feature parity across protocols, where appropriate. Due to the differences in protocols, configuration and operation can slightly differ. Much of the theory in key areas such as DUAL and metrics are the same.
The following are a few (not all) examples of similarities shared by IPv4 EIGRP and IPv6 EIGRP:
- DUAL is used for route calculation and selection with the same metrics.
- It is scalable to large network implementations.
- Neighbor, routing, and topology tables are maintained.
- Both equal-cost load balancing and unequal-cost load balancing are offered.
A few (not all) examples of differences include these:
- The network command is not used in IPv6; EIGRP is configured via links.
- The ipv6 keyword is used in many of the EIGRP commands.
- Needs to be explicitly enabled on each interface when configuring EIGRP.
The basic components of EIGRP for IPv6 remain the same as in the IPv4 version. So, this section contains a review of the operation of EIGRP and DUAL.
As in IPv4, EIGRP in IPv6 uses a hello packet to discover other EIGRP-capable routers on directly attached links and to form neighbor relationships. Updates may be acknowledged by using a reliable transport protocol, or they may be unacknowledged—depending on the specific function that is being communicated. The protocol provides the flexibility necessary to unicast or multicast updates, acknowledged or unacknowledged.
Hello packets and updates are set to the well-known, link-local multicast address FF02::A, which Cisco has obtained from the Internet Assigned Numbers Authority (IANA). This multicast distribution technique is more efficient than the broadcast mechanism that is used by earlier, more primitive routing protocols such as RIPv1. EIGRP for IPv4 also uses multicast for update distribution.
EIGRP sends incremental updates when the state of a destination changes, instead of sending the entire contents of the routing table. This feature minimizes the bandwidth that is required for EIGRP packets.
DUAL, which is an EIGRP algorithm for determining the best path through the network, uses several metrics to select efficient, loop-free paths. Figure 3-18 shows a topology with sample metrics. When multiple routes to a neighbor exist, DUAL determines which route has the lowest metric (the FD) and enters this route into the routing table. Other possible routes to this neighbor with larger metrics are received, and DUAL determines the AD to this network. The AD is defined as the total metric that is advertised by an upstream neighbor for a path to a destination. DUAL compares the AD with the FD, and if the AD is less than the FD, DUAL considers the route to be a feasible successor and enters the route into the topology table. The feasible successor route that is reported with the lowest metric becomes the successor route to the current route if the current route fails. To avoid routing loops, DUAL ensures that the AD is always less than the FD for a neighbor router to reach the destination network; otherwise, the route to the neighbor may loop back through the local router.
Figure 3-18 EIGRP Path Selection
When there are no feasible successors to a route that has failed, but there are neighbors advertising the route, a recomputation must occur. This is the process where DUAL determines a new successor. The amount of time that is required to recompute the route affects the convergence time. Recomputation is processor-intensive, so avoiding unneeded recomputation is advantageous. When a topology change occurs, DUAL tests for feasible successors. If there are feasible successors, DUAL uses them to avoid unnecessary recomputation of the topology.
Of these metrics, by default, only minimum bandwidth and delay are used to compute the best path. Unlike most metrics, minimum bandwidth is set to the minimum bandwidth of the entire path, and it does not reflect how many hops or low-bandwidth links are in the path. Delay is a cumulative value that increases by the delay value of each segment in the path. In Figure 3-18, Router One is computing the best path to Network A.
It starts with the two advertisements for this network: one through Router Four, with a minimum bandwidth of 56 and a total delay of 2200; and the other through Router Three, with a minimum bandwidth of 128 and a delay of 1200. Router One chooses the path with the lowest metric.
Let’s compute the metrics. EIGRP calculates the total metric by scaling the bandwidth and delay metrics.
EIGRP uses the following formula to scale the bandwidth:
bandwidth = (10000000 / bandwidth(i)) * 256
where bandwidth(i) is the least bandwidth (represented in kilobits) of all outgoing interfaces on the route to the destination network.
EIGRP uses the following formula to scale the delay:
delay = delay(i) * 256
where delay(i) is the sum of the delays configured on the interfaces, on the route to the destination network, in tens of microseconds. The delay as shown in the show ipv6 eigrp topology command or the show interface command is in microseconds, so you must divide by 10 before you use it in this formula. Throughout the section, a delay is used as it is configured and shown on the interface.
EIGRP uses these scaled values to determine the total metric to the network:
metric = [K1 * bandwidth + (K2 * bandwidth) / (256 – load) + K3 * delay] * [K5 / (reliability + K4)]
Cisco routers round down to the nearest integer to properly calculate the metrics. In this example, the total cost through Router Four is
- minimum bandwidth = 56 kb total delay = 100 + 100 + 2000 = 2200 [(10000000 / 56) + 2200] x 256 = (178571 + 2200) x 256 = 180771 x 256 = 46277376
And the total cost through Router Three is
- minimum bandwidth = 128kb total delay = 100 + 100 + 1000 = 1200 [(10000000 / 128) + 1200] x 256 = (78125 + 1200) x 256 = 79325 x 256 = 20307200
So to reach Network A, Router One chooses the route through Router Three.
Note that the bandwidth and delay values used are those configured on the interface through which the router reaches its next hop to the destination network. For example, Router Two advertised Network A with the delay configured on its Ethernet interface; Router Four added the delay configured on its Ethernet interface; and Router One added the delay configured on its serial interface.
When a router discovers a new neighbor, it records the neighbor address and interface as an entry in the neighbor table. One neighbor table exists for each protocol-dependent module (as stated earlier, EIGRP runs a protocol-independent module for each protocol running, so IPv4 and IPv6 are calculated independently). When a neighbor sends a hello packet, it advertises a hold time, which is the amount of time that a router treats a neighbor as reachable and operational. If a hello packet is not received within the hold time, the hold time expires and DUAL is informed of the topology change.
The topology table contains all destinations that are advertised by neighboring routers. Each entry in the topology table includes the destination address and a list of neighbors that have advertised the destination. For each neighbor, the entry records the advertised metric, which the neighbor stores in its routing table. An important rule that distance vector protocols must follow is that if the neighbor advertises this destination, the neighbor must use the route to forward packets. Although having a route and using it to forward packets may seem implicit, link-state protocols may advertise a route that is not necessarily a direct path. Explicitly, this can be done with the Border Gateway Protocol (BGP), but that topic is beyond the scope of this text.
EIGRP IPv6 Feasible Successor
As previously defined, the feasible distance is the best metric along a path to a destination network, including the metric to the neighbor advertising that path. Reported distance is the total metric along a path to a destination network as advertised by an upstream neighbor. A feasible successor is a path whose AD is less than the FD (current best path). Figure 3-19 illustrates this process.
Figure 3-19 Example Topology for Calculating Metric
Router One recognizes two routes to Network A, one through Router Three and another through Router Four:
- The route through Router Four has a cost of 46277376 and an AD of 307200.
- The route through Router Three has a cost of 20307200 and an AD of 307200.
Note that in each case, EIGRP calculates the AD from the router advertising the route to the network. In other words, the AD from Router Four is the metric to get to Network A from Router Four, and the AD from Router Three is the metric to get to Network A from Router Three. EIGRP chooses the route through Router Three as the best path, and uses the metric through Router Three as the FD. Because the AD to this network through Router Four is less than the FD, Router One considers the path through Router Four a feasible successor.
When the link between Routers One and Three goes down, Router One examines each path it knows to Network A and finds that it has a feasible successor through Router Four. Router One uses this route, using the metric through Router Four as the new FD. The network converges instantly, and updates to downstream neighbors are the only traffic from the routing protocol.
EIGRP IPv6 Load Balancing
Similarly to IPv4, IPv6 supports equal-cost load balancing and unequal-cost load balancing.
Cisco IOS Software has the ability to load balance across up to four equal-cost paths by default. With the maximum-paths router configuration command, up to 32 equal-cost routes can be kept in the routing table, depending on the router type and Cisco IOS version. If you set the value to 1, you disable equal-cost load balancing.
EIGRP supports unequal-cost path load balancing. Use the variance n command to instruct the router to include routes with a metric of less than n times the minimum metric route for that destination. The variable n can take a value between 1 and 128. The default is 1, which means equal-cost load balancing. Traffic is also distributed among the links with unequal costs, proportionately, with respect to the metric. If a path is not a feasible successor, it is not used in load balancing.
EIGRP for IPv6 Command Syntax
This section covers some of the basics for EIGRP configuration under IPv6. Example 3-20 illustrates the process of basic IPv6 routing. It shows how to configure an IPv6 address and the EIGRP routing protocol on an interface, and verify that the EIGRP process has begun.
Example 3-20 Configuring and Verifying EIGRP for IPv6
IPv6-router# config terminal Enter configuration commands, one per line. End with CNTL/Z. IPv6-router(config)# interface FastEthernet0/0 IPv6-router(config-if)# ipv6 address 2001:DB8:A00:1::1/32 IPv6-router(config-if)# no shutdown IPv6-router(config-if)# exit IPv6-router(config)# ipv6 unicast-routing IPv6-router(config)# ipv6 router eigrp 1 IPv6-router(config-rtr)# no shutdown IPv6-router(config-rtr)# interface FastEthernet0/0 IPv6-router(config-if)# ipv6 eigrp 1 IPv6-router(config-if)# exit IPv6-router(config)# exit *Apr 8 06:56:18.011: %SYS-5-CONFIG_I: Configured from console by console IPv6-router# show ipv6 protocol IPv6 Routing Protocol is "connected" IPv6 Routing Protocol is "eigrp 1" EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0 EIGRP maximum hopcount 100 EIGRP maximum metric variance 1 Interfaces: FastEthernet0/0 Redistribution: None Maximum path: 16 Distance: internal 90 external 170 IPv6-router#
Table 3-6 describes the basic commands used in Example 3-20.
Table 3-6 Commands Used in Example 3-20
Command(s) |
Description |
interface FastEthernet0/0 |
Enter interface mode |
ipv6 address 2001:DB8:A00:1::1/32 |
Assign an IPv6 address on the interface |
ipv6 unicast-routing |
Enable IPv6 routing |
ipv6 router eigrp 1 |
Configure EIGRP with AS number 1 |
no shutdown |
Enable the EIGRP process |
show ipv6 protocol |
Verify the EIGRP process has started (more on EIGRP verification/show commands in the next section) |
Verification of EIGRP IPv6 Operation
Example 3-21 shows the EIGRP topology for IPv6. A good point to note is that the command execution and information displayed are similar to the IPv4 version of the command (see Figure 3-7), and are just differentiated by the IPv4 and IPv6 protocol differences.
Example 3-21 EIGRP Topology for IPv6
IPv6-router# show ipv6 eigrp topology IPv6-EIGRP Topology Table for AS(1)/ID(2001:0DB8:10::/64) Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply, r - reply Status, s - sia Status P 2001:0DB8:3::/64, 1 successors, FD is 281600 via Connected, Ethernet1/0
The EIGRP neighbors are shown in Example 3-22.
Example 3-22 Verifying EIGRP Neighbors
IPv6-router# show ipv6 eigrp neighbors IPv6-EIGRP neighbors for process 1 H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 Link-local address: Se0/0 13 15:17:58 44 264 0 12 FE80::2
Example 3-23 displays the associated routing table.
Example 3-23 Verifying the Routing Table
IPv6-router# show ipv6 route eigrp IPv6 Routing Table - 12 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B – BGP U - Per-user Static route, M - MIPv6 I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2 ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2 D - EIGRP, EX - EIGRP external D 1000:AB8::/64 [90/2297856] via FE80::2, Serial0/0 D 2000:AB8::/64 [90/2297856] via FE80::2, Serial0/0 D 3000:AB8::/64 [90/2297856] via FE80::2, Serial0/0
The show commands in Example 3-20 through Example 3-23 have the same role as in EIGRP for IPv4. The differences are related to the protocol output:
- To display entries in the EIGRP for IPv6 topology table, use the show ipv6 eigrp topology command in privileged EXEC mode.
- To display the neighbors discovered by EIGRP for IPv6, use the show ipv6 eigrp neighbors command.
- The show ipv6 route eigrp command reveals the content of the IPv6 routing table that includes the routes specific to EIGRP.
EIGRP for IPv6 Configuration Example
Figure 3-20 along with the configurations in Examples 3-24 and 3-25 provide a simple two-node network with a Branch router and an HQ router.
Figure 3-20 Two-Router IPv6 Network
On the Branch router, EIGRP for IPv6 is enabled with AS 100. EIGRP is then enabled on the interface GigabitEthernet0/1.
Example 3-24 Branch Router Configuration
Branch(config)# ipv6 router eigrp 100 Branch(config-router)# no shutdown Branch(config-router)# exit Branch(config)# interface GigabitEthernet0/1 Branch(config-if)# ipv6 eigrp 100
As displayed in Example 3-25, on the HQ router, first EIGRP for IPv6 is enabled with AS 100. Then interfaces GigabitEthernet0/0 and GigabitEthernet0/1 are enabled for IPv6 EIGRP.
Example 3-25 HQ Router Configuration
HQ(config)# ipv6 router eigrp 100 HQ(config-router)# no shutdown HQ(config)# exit HQ(config)# interface GigabitEthernet0/0 HQ(config-if)# ipv6 eigrp 100 HQ(config-if)# exit HQ(config)# interface GigabitEthernet0/1 HQ(config-if)# ipv6 eigrp 100
In the show ipv6 eigrp interfaces command output that follows in Example 3-26 for the Branch router, one neighbor is on the GigabitEthernet0/1 interface, which is the only interface that is included in the EIGRP process.
Example 3-26 Verifying EIGRP Interface
Branch# show ipv6 eigrp interfaces IPv6-EIGRP interfaces for AS(100) Xmit Queue Mean Pacing Time Multicast Pending Interface Peers Un/Reliable SRTT Un/Reliable Flow Timer Routes Gi0/1 1 0/0 0 0/10 0 0 Un/reliable mcasts: 0/0 Un/reliable ucasts: 0/0 Mcast exceptions: 0 CR packets: 0 ACKs suppressed: 0 Retransmissions sent: 0 Out-of-sequence rcvd: 0 Authentication mode is not set
Example 3-27 shows the output of the show ipv6 eigrp neighbors command from the Branch router. The fields in the command output are described in Table 3-7.
Example 3-27 Reviewing EIGRP Neighbors
IPv6-router# show ipv6 eigrp neighbors IPv6-EIGRP neighbors for process 1 H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 Link-local address: Gi0/1 12 00:20:48 9 100 0 2 FE80::FE99:47FF:FEE5:2671
Table 3-7 Significant Fields in the show ipv6 eigrp neighbors Command from the Branch Router
Field |
Description |
Link-local address |
The IPv6 interface address used for communication local to a single subnet only. Link-local packets are not routed. EIGRP IPv6 uses this to establish neighbor relationships. |
Interface |
The EIGRP interface. |
Hold |
The amount of time an EIGRP neighbor awaits a hello packet from a neighbor before determining that the neighbor relationship should be timed out and broken. The default is three times the hold timer. |
Uptime |
How long the neighbor relationship has been established. |
The show ipv6 eigrp topology command displays the topology table of EIGRP for IPv6 routes, as demonstrated in Example 3-28. All the routes are present in the topology table, but only the best ones are in the routing table.
Example 3-28 IPv6 Topology
Branch# show ipv6 eigrp topology EIGRP-IPv6 Topology Table for AS(100)/ID(209.165.201.1) Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply, r - reply Status, s - sia Status P 2001:DB8:D1A5:C900::/64, 1 successors, FD is 28160 via Connected, GigabitEthernet0/1 P 2001:DB8:AC10:100::/64, 1 successors, FD is 156160 via FE80::FE99:47FF:FEE5:2671 (156160/128256), GigabitEthernet0/1
Example 3-29 displays output from the show ipv6 route eigrp command. Here, you are presented with a route that is learned by the EIGRP routing protocol.
Example 3-29 Verifying the EIGRP Routes in the Routing Table
Branch# show ipv6 route eigrp IPv6 Routing Table - default - 4 entries Codes: C - Connected, L - Local, S - Static, U - Per-user Static route B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2 IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr – Redirect O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2 ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2 D 2001:DB8:AC10:100::/64 [90/156160] via FE80::FE99:47FF:FEE5:2671, GigabitEthernet0/1
Troubleshooting EIGRP for IPv6
When considering EIGRP for IPv6, there are many similarities to EIGRP for IPv4. The commands are comparable, the algorithm is the same, and the metrics work alike. However, being aware of some of the major differences and key points makes troubleshooting easier. The following points provide a brief summary:
- EIGRP for IPv6 is directly designed on the interfaces over which it runs. This feature allows EIGRP for IPv6 to be configured without the use of a global IPv6 address. There is no network statement in EIGRP for IPv6.
- In per-interface design at system startup, if EIGRP has been configured on an interface, then the EIGRP protocol may start running before any EIGRP router mode commands have been executed.
- An EIGRP for IPv6 protocol instance requires a router ID before it can start running.
- EIGRP for IPv6 has a shutdown feature. The routing process should be in no shutdown mode in order to start running.
- When using a passive-interface configuration, EIGRP for IPv6 does not need to be configured on the interface that is made passive.
- EIGRP for IPv6 provides route filtering using the distribute-list command.