ipcef per destination load balancing w/ unequal eigrp variance cmd

Answered Question
Jul 15th, 2009
User Badges:
  • Green, 3000 points or more

Looking to do load balancing on a 2801.


I would like it to do per destination load balancing, not per packet. This is easy enough with cef as per destination is the defuault.


The question arises when I also want to run eigrp with unequal cost routes using the variance command. From what I read about load balancing with variance the load balancing method is not per destination but is more like per packet.


Which method would override the other if I had cef enabled for per destination lb and eigrp set up with a variance?

Correct Answer by Jon Marshall about 8 years 1 week ago

Adam


It's my understanding that CEF takes precedence. From Cisco doc on load balancing -


"When you work with CEF, you could ask: Who does the load balancing, CEF or the routing protocol used? The way in which CEF works is that CEF does the switching of the packet based on the routing table which is being populated by the routing protocols such as EIGRP. In short, CEF performs the load-balancing once the routing protocol table is calculated."


Full doc - http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a008009437d.shtml


So from the above EIGRP will install the routes into the routing table based on your variance and then CEF determines whether to use per-packet or per-destination load balancing.


Jon

  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 5 (1 ratings)
Loading.
Correct Answer
Jon Marshall Wed, 07/15/2009 - 10:45
User Badges:
  • Super Blue, 32500 points or more
  • Hall of Fame,

    Founding Member

  • Cisco Designated VIP,

    2017 LAN, WAN

Adam


It's my understanding that CEF takes precedence. From Cisco doc on load balancing -


"When you work with CEF, you could ask: Who does the load balancing, CEF or the routing protocol used? The way in which CEF works is that CEF does the switching of the packet based on the routing table which is being populated by the routing protocols such as EIGRP. In short, CEF performs the load-balancing once the routing protocol table is calculated."


Full doc - http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a008009437d.shtml


So from the above EIGRP will install the routes into the routing table based on your variance and then CEF determines whether to use per-packet or per-destination load balancing.


Jon

acomiskey Wed, 07/15/2009 - 10:50
User Badges:
  • Green, 3000 points or more

Excellent, I hope you are right...which you usually are.

Giuseppe Larosa Wed, 07/15/2009 - 12:22
User Badges:
  • Super Silver, 17500 points or more
  • Hall of Fame,

    Founding Member

Hello Adam,

there was another thread about this some mounths ago where Harold Ritter provided an explanation of how CEF can deal with EIGRP unequal load balancing.


Usually per destination CEF load balancing uses an exor of IP SA and IP DA with a seed hash that changes at each reload.

so with two links is enough the exor of last significant bits of IP SA and IP DA to decide out what link to send out the packet.

Same IP SA/DA same exit interface.


Then the variance concept comes to play: it associates a relative weight to each path (1 to 128).

Instead of having simply a list of physical paths, it should build a longer list where the two links appear n1 and n2 times so that the ratio of real metrics is respected with best path used more.

For supporting this CEF needs to use more bits instead of only the last one in the exor operation.


The real implementation can be different for efficiency reasons


Hope to help

Giuseppe


Istvan_Rabai Wed, 07/15/2009 - 10:58
User Badges:
  • Gold, 750 points or more

Hi Adam,


Let's say you have 2 eigrp routes in the routing table to a destination with traffic share count of the following:


s1/0, traffic share count 2

s1/1, traffic share count 1


If you configure per destination load sharing on both serial interfaces the following happens:


1. Packets belonging to 2 different source-destination ip address pairs are sent through s1/0

2. Packets belonging to the next 1 (different) source-destination ip address pair is sent through s1/1

3. Packets belonging to the next 2 (different) source-destination ip address pair are sent through s1/0

4. Packets belonging to the next 1 (different) source-destination ip address pair is sent through s1/1

...etc.


The point: packets belonging to the same source-destination address pair are always transmitted over the same interface.


Per destination load sharing really means per source-destination ip address pair load sharing.



If you configure per packet load sharing on both serial interfaces the following happens:



1. 2 packets are sent through s1/0

2. 1 packet sent through s1/1

3. 2 packets are sent through s1/0

4. 1 packet is sent through s1/1


...etc.


In this case packets can belong to any flow or source-destination pair, it doesn't matter.


You can check the ip cef load sharing with the "show ip cef x.x.x.x internal" command, where x.x.x.x is the destination address.


EDIT:

In short, CEF takes precedence, as Jon says.



Cheers:

Istvan


Actions

This Discussion