Cisco IOS software supports equal cost load sharing for a default of up to four paths for all routing protocols. This is illustrated below in the output of the show ip protocols command:
| R2#show ip protocolsRouting Protocol is “eigrp 150″Outgoing update filter list for all interfaces is not setIncoming update filter list for all interfaces is not set
Default networks flagged in outgoing updates Default networks accepted from incoming updates EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0 EIGRP maximum hopcount 100 EIGRP maximum metric variance 1 Redistributing: eigrp 150 EIGRP NSF-aware route hold timer is 240s Automatic network summarization is not in effect Maximum path: 4 Routing for Networks: 150.1.1.2/32 150.2.2.2/32 Routing Information Sources: Gateway Distance Last Update Gateway Distance Last Update 150.2.2.1 90 00:00:52 150.1.1.1 90 00:00:52 Distance: internal 90 external 170 |
The maximum-paths <1-6> router configuration command can be used to change the default value of four maximum paths up to a maximum of six equal cost paths. When performing equal cost load balancing, the router distributes the load evenly among all paths. The traffic share count identifies the number of outgoing packets on each path. When performing equal cost load balancing, one packet is sent on each individual path, as illustrated in the following output:
| R2#show ip route 172.16.100.0 255.255.255.0Routing entry for 172.16.100.0/24Known via “eigrp 150”, distance 90, metric 2172416, type internalRedistributing via eigrp 150
Last update from 150.2.2.1 on Serial0/1, 00:04:00 ago Routing Descriptor Blocks: 150.2.2.1, from 150.2.2.1, 00:04:00 ago, via Serial0/1 Route metric is 2172416, traffic share count is 1 Total delay is 20100 microseconds, minimum bandwidth is 1544 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 1 * 150.1.1.1, from 150.1.1.1, 00:04:00 ago, via Serial0/0 Route metric is 2172416, traffic share count is 1 Total delay is 20100 microseconds, minimum bandwidth is 1544 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 1 |
In addition to equal cost load balancing capabilities, EIGRP is also able to perform unequal cost load sharing. This unique ability allows EIGRP to use unequal cost paths to send outgoing packets to the destination network based on weighted traffic share values. Unequal cost load sharing is enabled using the variance <multiplier> router configuration command.
The <multiplier> keyword is an integer between 1 and 128. A multiplier of 1, which is the default, implies that no unequal cost load sharing is being performed. This default setting is illustrated below in the output of the show ip protocols command:
| R2#show ip protocolsRouting Protocol is “eigrp 150″Outgoing update filter list for all interfaces is not setIncoming update filter list for all interfaces is not set
Default networks flagged in outgoing updates Default networks accepted from incoming updates EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0 EIGRP maximum hopcount 100 EIGRP maximum metric variance 1 Redistributing: eigrp 150 EIGRP NSF-aware route hold timer is 240s Automatic network summarization is not in effect Maximum path: 4 Routing for Networks: 150.1.1.2/32 150.2.2.2/32 Routing Information Sources: Gateway Distance Last Update 150.2.2.1 90 00:00:52 150.1.1.1 90 00:00:52 Distance: internal 90 external 170 |
The multiplier is a variable integer that tells the router to load share across routes that have a metric that is less than the minimum metric multiplied by the multiplier. For example, specifying a variance of 5 instructs the router to load share across routes whose metric is less than 5 times the minimum metric. The default variance of 1 tells the router to perform equal cost load balancing. When the variance command is used and a value other than 1 is specified as the multiplier, the router will distribute traffic among the routes proportionately, with respect to the metric of each individual route. In other words, the router will send more traffic using those paths with lower metric values than those with higher metric values.
Figure 36.11 below illustrates a basic network running EIGRP. R1 and R2 are connected via back-to-back Serial links. The 150.1.1.0/24 link between the two routers has a bandwidth of 1024Kbps. The 150.2.2.0/24 link between the routers has a bandwidth of 768Kbps. R1 is advertising the 172.16.100.0/24 prefix via EIGRP to R2:
Figure 36.11 – Understanding EIGRP Variance
Based on the topology illustrated in Figure 36.11, the routing table on R2 for the 172.16.100.0/24 prefix is shown in the following output:
| R2#show ip route 172.16.100.0 255.255.255.0Routing entry for 172.16.100.0/24Known via “eigrp 150”, distance 90, metric 3014400, type internalRedistributing via eigrp 150
Last update from 150.1.1.1 on Serial0/0, 00:00:11 ago Routing Descriptor Blocks: * 150.1.1.1, from 150.1.1.1, 00:00:11 ago, via Serial0/0 Route metric is 3014400, traffic share count is 1 Total delay is 20100 microseconds, minimum bandwidth is 1024 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 1 |
The following EIGRP topology table shows both the Successor and the Feasible Successor routes:
| R2#show ip eigrp topology 172.16.100.0 255.255.255.0IP-EIGRP (AS 150): Topology entry for 172.16.100.0/24State is Passive, Query origin flag is 1, 1 Successor(s), FD is 3014400Routing Descriptor Blocks:
150.1.1.1 (Serial0/0), from 150.1.1.1, Send flag is 0x0 Composite metric is (3014400/28160), Route is Internal Vector metric: Minimum bandwidth is 1024 Kbit Total delay is 20100 microseconds Reliability is 255/255 Load is 1/255 Minimum MTU is 1500 Hop count is 1 150.2.2.1 (Serial0/1), from 150.2.2.1, Send flag is 0x0 Composite metric is (3847680/28160), Route is Internal Vector metric: Minimum bandwidth is 768 Kbit Total delay is 20100 microseconds Reliability is 255/255 Load is 1/255 Minimum MTU is 1500 Hop count is 1 |
To determine the variance value to configure on the router, you can use the following formula:
Variance = Highest metric for the paths being considered / Metric for the best route
Using this formula, you can calculate the variance value to configure on R2 as follows:
Variance = Highest metric for the paths being considered / Metric for the best route
Variance = 3847680 / 3014400
Variance = 1.28
This value must then be rounded up to the nearest whole integer, which in this case is 2. Given this, R2 can be configured to perform unequal cost load sharing by implementing the following configuration in Router Configuration mode:
| R2(config)#router eigrp 150R2(config-router)#variance 2R2(config-router)#exit |
Following this configuration, the routing table entry for 172.16.100.0/24 is illustrated below:
| R2#show ip route 172.16.100.0 255.255.255.0Routing entry for 172.16.100.0/24Known via “eigrp 150”, distance 90, metric 3014400, type internalRedistributing via eigrp 150
Last update from 150.2.2.1 on Serial0/1, 00:00:36 ago Routing Descriptor Blocks: 150.2.2.1, from 150.2.2.1, 00:00:36 ago, via Serial0/1 Route metric is 3847680, traffic share count is 47 Total delay is 20100 microseconds, minimum bandwidth is 768 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 1 * 150.1.1.1, from 150.1.1.1, 00:00:36 ago, via Serial0/0 Route metric is 3014400, traffic share count is 60 Total delay is 20100 microseconds, minimum bandwidth is 1024 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 1 |
The traffic share count indicates that for every 60 packets forwarded via Serial0/0, the router will forward 47 packets via Serial0/1. This is performed proportionally in respect to the route metric of either path. This is the default behaviour when the variance command is implemented. This intelligent traffic sharing functionality is enabled via the traffic-share balanced router configuration command, which requires no explicit configuration.
NOTE: The traffic-share balanced command is enabled by default and does not appear in the running configuration, even if manually configured. This is illustrated below:
| R2(config)#router eigrp 150R2(config-router)#vari 2R2(config-router)#traffic-share balancedR2(config-router)#exit
R2(config)#do show run | begin router router eigrp 150 variance 2 network 150.1.1.2 0.0.0.0 network 150.2.2.2 0.0.0.0 no auto-summary |
As stated previously in this section, when the variance command is used, all paths that both meet the Feasibility Condition and have a metric that is less than the minimum metric multiplied by the multiplier will be installed into the routing table. The router will then use all paths and load share traffic proportionally based on the route metric.
In some cases, you may want to allow alternate routes, such as the Feasible Successor route, to be placed into the routing table but not be used unless the Successor route is removed. Such actions are typically performed to reduce convergence times in EIGRP-enabled networks. To understand this concept, recall that, by default, the router only places the Successor route into the IP routing table. In the event that the Successor route is no longer available, the Feasible Successor route is promoted to the Successor route. This route is then installed into the routing table as the primary path to the destination network.
The traffic-share min across-interfaces router configuration command can be used in conjunction with the variance command to install all routes that have a metric less than the minimum metric multiplied by the multiplier into the routing table, but use only the route with the minimum (best) metric to forward packets until that route becomes unavailable. The primary objective of this configuration is that in the event that the primary route is lost, the alternative route is already in the routing table and can be used immediately.
The following configuration example uses the topology shown in Figure 36.11 above to illustrate how to configure the router to place routes with a metric less than two times the minimum metric into the routing table, but use only the route with the lowest metric to actually forward packets:
| R2(config)#router eigrp 150R2(config-router)#vari 2R2(config-router)#traffic-share min across-interfacesR2(config-router)#exit |
This configuration results in the following output for 172.16.100.0/24 in the routing table:
| R2#show ip route 172.16.100.0 255.255.255.0Routing entry for 172.16.100.0/24Known via “eigrp 150”, distance 90, metric 3014400, type internalRedistributing via eigrp 150
Last update from 150.2.2.1 on Serial0/1, 00:09:01 ago Routing Descriptor Blocks: 150.2.2.1, from 150.2.2.1, 00:09:01 ago, via Serial0/1 Route metric is 3847680, traffic share count is 0 Total delay is 20100 microseconds, minimum bandwidth is 768 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 1 * 150.1.1.1, from 150.1.1.1, 00:09:01 ago, via Serial0/0 Route metric is 3014400, traffic share count is 1 Total delay is 20100 microseconds, minimum bandwidth is 1024 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 1 |
As is illustrated in the output above, the two different metric routes have been installed into the routing table based on the variance configuration. However, notice the traffic share count for the route via Serial0/1 is 0 while the traffic share count for the route via Serial0/0 is 1. This means that the router will not send any packets to 172.16.100.0/24 via Serial0/1, even though the route entry is installed into the routing table, until the path via Serial0/0 is no longer available.
