cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
10987
Views
60
Helpful
23
Replies

Eigrp routing table not updated - topology table do not show additional route - why~

SJ K
Level 5
Level 5

Hi all,

Please kindly find the exhibit setup using eigrp routing protocol as below ->

 

R1 config

router eigrp 10
 passive-interface FastEthernet0/0
 network 192.168.1.0
 network 192.168.2.0
 network 192.168.3.0
 auto-summary

R2 config

router eigrp 10
 network 10.0.0.0
 network 192.168.2.0
 auto-summary


R3 config

router eigrp 10
 passive-interface FastEthernet0/1
 network 10.0.0.0
 network 172.16.0.0
 network 192.168.3.0
 auto-summary

==============================================================================

Problem There are 2 routes that can be taken for R1 to reach 172.16.0.0/16 network but it isnt showing in the topology table
via R1 --> R3 or R1 --> R2 -->R3
(see bolded red below)

R1#show ip eigrp topology
IP-EIGRP Topology Table for AS(10)/ID(192.168.2.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 10.0.0.0/8, 1 successors, FD is 284160
        via 192.168.3.2 (284160/281600), FastEthernet1/0
        via 192.168.2.2 (307200/281600), FastEthernet0/1  -- going to the 10.0.0.0 network, 2 possible routes are discovered.
P 192.168.1.0/24, 1 successors, FD is 281600
        via Connected, FastEthernet0/0
P 192.168.2.0/24, 1 successors, FD is 281600
        via Connected, FastEthernet0/1
P 192.168.3.0/24, 1 successors, FD is 28160
        via Connected, FastEthernet1/0
P 172.16.0.0/16, 1 successors, FD is 2588160
        via 192.168.3.2 (2588160/2585600), FastEthernet1/0
--- where is via 192.168.2.2 FastEther0/1 ?  -- why isn't 2 routes discovered here also ? 
R1#show ip eigrp neighbors
IP-EIGRP neighbors for process 10
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
                                            (sec)         (ms)       Cnt Num
0   192.168.2.2             Fa0/1             13 00:13:06  236  1416  0  107
1   192.168.3.2             Fa1/0             10 00:15:28  106   636  0  44

 

On shut down and no shut on R2 fa0/0 and having debug ip eigrp on R1, following was observed.

1) R2 fa0/0 did advertise 172.16.0.0/16 out through fa0/0 interface

R2
*Mar  1 08:38:53.917: IP-EIGRP(Default-IP-Routing-Table:10): 172.16.0.0/16 - do advertise out FastEthernet0/0
*Mar  1 08:38:53.921: IP-EIGRP(Default-IP-Routing-Table:10): Int 172.16.0.0/16 metric 2611200 - 2560000 51200

2) R1 did receive but doesn't want to install into the routing table (which routing table, eigrp topology or show ip route routing table)

*Mar  1 00:55:36.391: IP-EIGRP(Default-IP-Routing-Table:10): Processing incoming UPDATE packet
*Mar  1 00:55:36.391: IP-EIGRP(Default-IP-Routing-Table:10): Int 172.16.0.0/16 M 2636800 - 2560000 76800 SM 2611200 - 2560000 51200
*Mar  1 00:55:36.395: IP-EIGRP(Default-IP-Routing-Table:10): route installed for 172.16.0.0  ()
*Mar  1 00:55:36.395: IP-EIGRP(Default-IP-Routing-Table:10): 172.16.0.0/16 routing table not updated thru 192.168.2.2

 

q1) Why is it so ? :(

 

Regards,
Confused Noob

 

3 Accepted Solutions

Accepted Solutions

Hi Koh,

Hey, don't spoil your lunch just because of me :)

1) I have got the respective documentation from
http://www.ciscopress.com/articles/article.asp?p=1171169&seqNum=2 ; under Figure 5.6

Understood. Unfortunately, that document is not correct with respect to the Feasible Distance definition and use.

Q1) How does the sentence implies that the link between the current router to the next router, is more costly than the cost of the entire route of the next router to the destination ?

Simply read the statement carefully. The relevant part of it says: "if the next router in the path is closer to the destination than to the current router [... cut ...]". Now, the next router and the current router are connected via a direct link (otherwise the "next" router would not be the "next" one, right?). So the distance of the next router to the current router is simply the cost of the link that connects them together. As a result, saying that the next router is closer to the destination than to the current router means that the cost of the path from the next router to the destination is lower than the cost of the link that connects the current and the next router together. Voilà.

Isn't it correct if the next router's RD is lesser then the current router's FD, it means that it is actually closer to the destination then compared to the current router's distance to the destination- was it wrong ?

In the previous paragraph, I have intentionally underlined and emphasized the word "to" because it dramatically changes the meaning of the statement we are analyzing.

Notice that the statement says: "if the next router is closer to the destination than to the current router", and that is what I object against in the first place. It would be slightly more correct, but still not entirely correct, if it was rephrased as follows: "if the next router is closer to the destination than the current router", having the second "to" removed.

You could ask - what's wrong with the rephrased statement? Surely, any neighboring router that is closer to the destination than the current router is not on a routing loop, otherwise its distance would need to include the current router's distance as well and would be larger which is a contradiction with the starting assumption, right?

Well, this would be true if the network was stable and no topology changes took place. However, in the moment of a topology change, the router that detects it obviously knows about it, but its neighbors may not yet have been informed. For example, assume that a directly connected network to a router goes down. In routing protocols, this is represented as a topology change in which the distance to the network increases to infinity. At this very moment when the router just detects the directly connected interface going down, it already knows the route is dead. However, its own neighbors do not know about it yet. Using any of them just because each one of them has reported a lower-than-infinity distance in their last update would be grossly premature.

So relying on the current distances as known in the moment of a topology change is not going to prevent you from routing loops. Remember: You know about the topology change but do your neighbors know about it as well? Does their last reported distance already take the topology change into account? See, there's no guarantee of that.

That is why EIGRP uses another distance to do these loop-freedom checks, the Feasible Distance, defined as the historical minimum of the distance toward the destination since the last time the route became Passive. You may be interested in reading this entire thread very carefully:

https://supportforums.cisco.com/discussion/11877371/eigrp-successor-and-feasible-successor

It is lengthy but if we want to talk about what's really up with EIGRP and its operations, it is a mandatory stuff to master.

Q2) For the sentence  "Every neighbor whose Reported Distance is smaller than this router's Feasible Distance provides a loop-free (that is, feasible) path to the destination"  - does it means that for any  neighbor whose Reported distance is larger then the current router's feasible distance will cause a loop if the current router go through that neighbor to reach the destination ?

No, that is not a correct extrapolation. The Feasible Condition you are quoting in your question is what we call a sufficient condition in mathematical logic. Every route that meets the Feasibility Condition is loop-free. However, the Feasibility Condition does not say anything about routes that fail the Feasibility Condition check. They might be loop-free or not. You cannot be certain, and that's the point. Routes that meet the Feasibility Condition are guaranteed to be loop-free. Routes that fail the Feasibility Condition can be either loop-free or looped - EIGRP can't tell just by looking at the distances.

This is why EIGRP also has the mechanism of diffusing computations. If a path meets the Feasibility Condition, you're perfectly safe to use it. If, however, a path does not meet the Feasibility Condition and you want to use it, you must start a diffusing computation to make an explicit verification whether that path can be used, or some other needs to be used instead.

Does that means that best local metric = FD = best historical path ever used ?

Yes, you're getting the point of FD quite right. More properly worded, FD is the best metric seen to a particular destination since the last Active->Passive transition. That is when one history ends and another history starts.

Does that even means that for a route to be a feasible successor, not only it must comply to the feasible condition; the feasible condition must be match against the best metric ever toward that particular destination before (highlighted in red above) and not just the current route metric in used (in green above) - am i right ?

Be careful about the wording. A route is never a feasible successor. The terms successor and feasible successor refer to neighboring routers, that is, potential next hops. You can have a "successor route" or a "feasible successor route" which is a shorthand for saying that the route uses the successor or the feasible successor as its next hop, but whenever we talk about successors and feasible successors, we're talking about routers, not routes.

Also, I would not say that for a route to be a feasible successor route, it must comply with several criteria (you have used the wording "not only" suggesting that there are several things for it to match). Let's break it down once again:

  • Feasible Distance (FD): The lowest seen (or experienced) metric to the destination since the last time the destination transitioned from Active to Passive state (that is, since the last diffusing computation for that destination has finished).
  • Feasible Condition: Any neighbor whose RD is strictly smaller than the current router's FD for that destination provides a loop-free path to that destination. In other words, taking the historical nature of the FD into account, any neighbor that is closer to the destination than the current router has been since the last diffusing computation for that destination provides a loop-free path.
  • Successor: A neighbor that meets the Feasibility Condition and provides the least total distance to the destination.
  • Feasible Successor: A neighbor that meets the Feasibility Condition but provides a higher-than-least total distance to the destination

That's it.

How do i reset the FD ?

As an administrator, you cannot. The FD is an internal variable maintained by EIGRP for every known route. However, by its definition, the FD is always lowered whenever the current router learns about a better (understand - shorter) path than currently known. Increasing the FD can only be done during a diffusing computation. A router must not increase the FD on its own accord without coordinating with its neighbors.

I am sure this is a difficult topic and it elicits lots of questions so please feel welcome to ask further!

Best regards,
Peter

View solution in original post

Dear friends,

I am struggling to find an appropriate response to all your compliments but I am utterly at a loss. I do not want this to appear as posturing of any kind, neither do I want to be irritating, but I feel at this point that it is the best to remain silent - apart from telling you in all my sincerity that I am deeply and profoundly touched.

Koh - absolutely no need to apologize. I needed time to respond, too. By the way, is it proper to call you Koh? Is that your first name? If not, how should I properly call you? I apologize but obviously, different languages have different ways of addressing a person. I refuse to use the word "noob" to address you. With its usual meaning, using it to refer to you is an insult and could not be farther from the truth.

a) for every events that cause an update to the topology table - even if there is currently-in-use successor route, the router will still check for routes that has the least cost metric, if there is such a (newer) route, and if it matches the feasibility condition, then it will replace the existing successor route.

Q1) right ? -- what happen to the "current" successor route, that is going to be "replaced"  ?

That is correct. Regarding the replaced route, it will be removed from the routing table but it will still remain in the topology table.

b) The FD for the scenario above, might stay the same (even if the newer route has a higher cost metric/FD) or will go lower.  This is because the operation above is still within the scope of a local computation.

Correct. While the route remains Passive, the FD can not increase. It may stay at its current value (if the new route is of the same or higher metric) or it may decrease (if the new route has a lower metric than the previous one). However, increasing the FD during Passive state is not allowed under any circumstances. Period. It's that simple.

c) In the event that the newer route does not meet the feasibility condition but however is still / has the least cost metric, then it is put into active mode and queries are send out to neighbors to confirm on their RD to the destination network.

Absolutely correct. Just to make sure we keep the terminology correct: It is not a route that meets the Feasibility Condition, rather it is the next hop (that is, the router) that meets the Feasibility Condition. This may be daunting but it is important to always keep in mind that the checks are performed on neighbors for a particular route, not just on the route itself.

Q2) why is it that when/if a newer route does not meet the feasibility condition, then the route must be put into active mode and queries must be send out to neighbors to confirm on the their RD to the destination network ?  In the situation above, can't the router use back the original successor route ? (without going to active mode/sending updates)

Let's make sure we're talking about the same scenario: A route will be put into the Active state if both following conditions are true:

  1. It provides the least total metric (that is, the lowest Computed Distance among all available routes toward the same destination in the topology table)
  2. Its advertising neighbor does not meet the Feasibility Condition

So under these circumstances, why does not the router simply stay with its current route it has been using so far? The answer is simple: You want your router to be always using the shortest path that is available. In my scenario with the two routers, after the link to Router1 went from 10 to 50, the path through Router1 became more expensive (100) than through Router2 (80). The path through Router1 is still guaranteed to be loop-free because Router1 meets the Feasibility Condition - but there is a chance that there is a shorter route available right through Router2. If you stayed with Router1, you would be using a workable route but possibly not the shortest one that is available, and that is not how routing protocols work - to be happy with just about any loop-free route, short or long. But with Router2, you cannot be sure whether it's loop-free or on, as Router2 fails the Feasibility Condition check. That is why you go Active - to make sure.

Note that if the new route did not provide the least cost metric, the fact that its neighbor meets or fails the Feasibility Condition would be irrelevant. You would not go Active with that route because you do not need to: You already have a better path that is loop-free. There would be nothing new to learn by going Active.

What are the actual checks in place (send via the queries) with/to the neighbors to make sure R2 is a usable route and to have it install as the successor route eventually leading to the increment in the FD ?

Okay, this may be a little hairy. When the current router finds out that the route through Router1 (100) is more costly than through Router2 (80) but Router2 fails the Feasibility Condition, it will go over the following (simplified) sequence of steps:

First, it will update the entry in the routing table, keeping it pointing through Router1 but updating the total metric to 100. In EIGRP, you must not change the next hop until you have a guarantee that it is loop-free by meeting the Feasibility Condition. As you have had this guarantee for Router1 up to this point, you are going to keep routing packets through Router1 until the diffusing computation is finished. The packets may thus travel a longer route, perhaps even get blackholed, but they're not going to be stuck in a routing loop. As to why the metric value in the routing table gets increased to 100, this is the very same logic we've used when we talked about the routing loops in RIP: If I am using a particular next hop to reach a destination, and the total cost through that next hop increases (computed as the sum of the link cost to that next hop plus its RD) then until I change to a different next hop, I am objectively farther from the destination, and this fact has to be recorded in the routing table.

Second, the router will put the route into the Active state and send out Queries to all its neighbors. A Query simply contains the new increased distance over the current successor, in this case, 100. The current router effectively tells its neighbors: "Guys, my current distance to this destination has changed to 100. Tell me your own distances to that destination after you take this changed distance of mine into account!"

What happens on the neighbors, now? First of all, the neighbors will treat the metric in the Query as the sending router's new RD, meaning they will update their own topology tables, recalculate their own Computed Distances and determine whose of their own neighbors provides the new least cost path. Now, for each neighbor individually, there are two possibilities:

  • Either its own next hop for the new least cost path satisfies the Feasibility Condition as seen by that neighbor (using that neighbor's FD), in which case the neighbor is happy because it could identify its own new successor in a local computation. In this case, the neighbor will send a Reply right away, indicating its new distance through its own new successor. Notice that it could have safely happened that the neighbor did not need to change its own next hop and metric at all. I have described the situation in this thread you have already visited.
  • Or its own next hop for the new least cost path does not satisfy the Feasibility Condition. In this case, the neighbor performs the very same steps as this router: It will keep the route through its current successor - most probably, it's you - in its routing table but will update the metric through its current successor, reflecting the changed distance, and will send its own Queries indicating its own changed distance over its current successor.

So in other words, the Query is nothing else than an indication that a router's current distance through its current successor has changed to a different value which is indicated in the Query, along with a request for the routers receiving the Query to update their own topology tables, re-evaluate their own choices of least cost paths, subject to their own Feasibility Condition checks, and report back their possibly changed distances. Either they will be able to find the least cost loop-free path using their own local computation, in which case they will simply send a Reply with their re-evaluated distance right away, or they will be unable to find such a path and will need to become Active themselves. A single router going Active may therefore cause a cascade of all routers that formerly relied on the same affected path to go Active, looking for a replacement path. Routers unaffected by this topology change (unaffected in the terms of "Even after processing the distance in the Query, I still could find a neighbor in my topology table that provides the least cost path and based on my current FD, it passes the FC check") will not propagate the Query further, they will simply respond by sending a Reply with their current best metric.

At this point, let's recap: You are a router. You have noticed after processing an event that the neighbor providing the current least-cost path does not meet the FC check. You lock the current routing table entry to make sure it still points to the unchanged old next hop (the old successor), just update its metric to reflect the current (possibly increased) metric through the old next hop, and send out Queries indicating this metric to your neighbors. After doing this, you must not change the routing table until you receive Replies from all neighbors that have been sent a Query. When a Reply is received from a neighbor, it is certain that it was either unaffected, or that it has also engaged into a diffusing computation but has got all necessary Replies and made its own best path selection, in both cases taking your changed distance into account. So after all your neighbors send you a Reply you can be sure they have updated their own knowledge based on what you told them in your Query, and that their own Feasibility Condition check prevents them from choosing you as their next hop if there is a chance you would be using them as your next hop.

Third, with all Replies received - taking the indicated distance from each Reply and recording it into the topology table as they are received - the router now can set the FD to infinity (that, increase it to the maximum value possible) and re-evaluate the least cost path in the topology table. Whichever neighbor provides it, it is going to become the new successor, and because its metric is certainly lower than infinity (which is currently stored in FD), the metric over this neighbor also becomes the new FD. After this, the router can unlock the routing table entry, update it to the newly chosen successor, and put the route back into the Passive state.

Finally, if the current router went active because it received a Query itself then this would be a time to start sending Replies. While in the Active state, you cannot start sending Replies if you haven't received all Replies to your own Query - because you haven't made your mind yet. Otherwise, if you became Active because of any other event, you simply send an unrequested Update if your distance changed from what it was before the Active state.

This will require quite some pondering but in principle, it's relatively simple. It is a recursive process: your Active state may cause other neighbors to go Active as well, but this all depends on how their own Feasibility Checks turn out after processing your Query. So in terms of the behavior of a single router, it's simple, really. You get a Query, process the distance in it, re-evaluate the Computed Distances, choose the neighbor providing the least Computed Distance and now check whether it meets the Feasibility Condition. If it does, you're fine, just start using it and send back a Reply with the new distance. If it does not, go Active yourself advertising your current (possibly changed) distance over your current successor, and wait for all Replies before making a new selection, only then start using it and send Replies. Visualizing it over a larger network may make your head spin, though :)

I will respond to your question about doing the studying in a separate post as this one has got insanely large.

Best regards,
Peter

View solution in original post

Hi,

Yeap, you can call me Koh; that's my surname

Understood. Pardon my ignorance - what is your first name? Sze or Jie? It's uncommon for me in an informal setting like this one to address a person by his/her surname.

1) Can i say that the update/query is actually not to confirm on the router's (newly found successor) but to inform the others/neighbors of the updated metric.to the currently (in-use) successor;

Very correct. You do not send out Queries because you want to "confirm" something. Rather, you send out Queries to inform your neighbors about your updated metric toward the destination network through your current successor, request them to update their own choice of best paths and respond with their own updated best distances. All this is done so that you can choose your new successor based on guaranteedly up-to-date information, knowing that your neighbors have been briefed on the update that has affected you and have considered that before sending a Reply back to you.

2) through the above, neighbors will reply with their updated/confirmed RD to the destination nework; and this is when the current Router itself, can confirm on and use its (newly found successor) ; changing its current FD to infinity and updating it to the new FD for the newly found successor; then going in to passive again.

... "changing its current FD to infinity and updating it to the new CD for the newly found successor". Yes, correct.

so i am going to believe that whoever come up with EIGRP is a maths or some path-finding genius.

There are many smart people behind the fundamental principle but its principial author is Prof. Jose Joaquin Garcia-Luna-Aceves, currently at University of California, Santa Cruz, the author of the Feasibility Condition and of the DUAL itself. He also reused the diffusing computation mechanism from E. W. Dijkstra and C. Scholten and has adapted all of this to the basic shortest path search algorithm by Bellman and Ford.

But you see, to prove that EIGRP works correctly, you do not try to prove it for an entire network at once. Instead, the general mechanism is consider the processes on a single node and their interaction with neighboring routes. By recursively applying this over an entire network, you get the actual proof.

q1)  as mentioned, the update of 1's metrics can create a series of chain effect and 1 must wait for all the replies before 1 can confirm on its own successor and change from active to passive.

Very good! This chained dependence in EIGRP is in fact its Achilles heel, and if some router for whatever reason fails to deliver its Reply to the neighbor that has asked for it, you'll end up with so-called Stuck-In-Active (SIA) states. EIGRP developers had to implement a specific mechanism to recover from these occurrences, and there are lots of things in best practices that should be done to make sure that SIA states never happen. That would require a separate thread.

-- assuming we are talking about a super large network; (i don't know if eigrp is use across WAN/Internet as well);  and assuming that the destination network is quite some distance away in a extremely meshed up network.  -- how can we be sure if we will get all the replies we need ?

EIGRP is an enterprise interior gateway protocol and is not usually used in service provider environment. Still, even enterprise networks, especially when compounded with high redundancy, lots of VLANs, and VPNs, can get exceedingly complex. How we can be sure we'll get a Reply eventually?

With respect to the reliability of delivering EIGRP messages, EIGRP uses its own reliable transport protocol that allows reliability both when unicasting and multicasting and preserves message ordering. From this viewpoint, EIGRP has the means to make sure that once a Reply has been sent, it will eventually come through if you have infinite time for possible retries.

Of course, this is a theoretical assumption. You need to have the Reply as soon as possible, otherwise the convergence speed of your network suffers. However, the links may be so overloaded or faulty that the Replies cannot make it in reasonable time. You may also have some other specific problems - losing packets of specific type or length, software issues, etc. that may cause that the Reply is simply unable to make it back to the neighbor that needs it.

For this situations, EIGRP imposes a time limit on each diffusing computation. If the diffusing computation is not finished in this time (3 minutes by default), the routers will give up on it and just move on with the remaining replies they have received, if any. This is an extremely simplified description of handling a SIA but as I indicated earlier, this topic would be more suitable in a standalone thread.

I am just thinking  A -> B -> C -> Network E

                                       -> D -> Network E

Okay, so what happens here if you raise the cost of the link between B and C, causing D that nonetheless fails the Feasibility Condition to provide the least cost path?

B will go Active and send a Query to all its neighbors. C and D are totally unaffected - they have not been using B to reach network E before and are even less eager to use it after they found out it is even farther than before. So while C and D process B's indicated RD into their topology tables, their best paths do not change and they just send back a Reply indicating their (unchanged) distance to E.

What happens on A is somewhat more surprising. For A, there is a very big chance that B's RD (as learned from its Query) has grown beyond A's FD. That would mean that A has lost its own successor and the router providing the least cost path (in this case, it's still B) does not meet the Feasibility Condition. For A, this means it has to go Active as well.

So A will send out a Query to its only neighbor, B, indicating A's own increased distance. Now, B has to send a Reply but hey, B is still Active so how can it send a Reply? Isn't this a deadlock?

Fortunately, it isn't. If B is in Active state and receives a Query itself, it sends a Reply right away, indicating the same distance it already indicated in its own Query - because that's the truth: At the moment B is Active, its current distance is the increased distance through C. B has indicated this in its Query already but should B receive a Query from any of its neighbors while still Active, B is going to send a Reply right away indicating the same distance again.

So in this network, after A sends a Query to B, B will respond with a Reply, indicating the same distance it has already indicated in its Query. As A got all Replies it expected, it sets the FD to infinity, then chooses the neighbor providing the best path (B), updates the metric in the routing table, then goes Passive and - remember that A still has a Reply to send - sends B a Reply, indicating its momentary distance from the network E.

Only now, at this point, B has all Replies it expects, so it sets its own FD to infinity, chooses the neighbor providing the least cost path (D), updates its own metric in its routing table, and because now B's distance has changed from what it was before the topology change, B sends an Update to all its neighbors including A. To A, this will appear as a metric decrease.

I would not call Updates as "gratuituous". They are simply event-driven and uncoordinated. Every time a router in a Passive state detects a topology change such that its distance to the destination changes but no diffusing computation is required, it will advertise its updated distance in an Update packet.

Best regards,
Peter

View solution in original post

23 Replies 23

Jon Marshall
Hall of Fame
Hall of Fame

The reason is because the AD (Advertised Distance) of the route via R2 is greater than the FD (Feasible Distance) of the route via R3 so you won't see it in the "sh ip eigrp topology" output which only shows successor and feasible successor routes ie.

from your IP routing table -

P 172.16.0.0/16, 1 successors, FD is 2588160 via 192.168.3.2 (2588160/2585600), FastEthernet1/0

and the route update from R2 -

*Mar 1 00:55:36.391: IP-EIGRP(Default-IP-Routing-Table:10): Int 172.16.0.0/16 M 2636800 - 2560000 76800 SM 2611200 - 2560000 51200

the SM is the AD of the route from R2 and you can can see that the AD > FD of the route.

So you won't see it when you run the "sh ip eigrp topology" command because as stated above that command only lists the best route(s) and any other routes that are not currently being used but can be considered as feasible successor routes.

If you run the command "sh ip eigrp topology all-links" you will see the full EIGRP topology database and it should be in there.

Jon

 

Hi Jon, Bilal,

Thanks for replying.

I think I have known the reason why. As per Jon said, the AD of the route is higher then the FD current route, that is the reason why it is not consider as a feasible route and will not show when "show ip eigrp topology".

In the documentation, it says ->

A route is feasible if the next router in the path is closer to the destination than to the current router and if the metric of the alternate path is within the variance. Load balancing can use only feasible paths, and the routing table includes only these paths. The two feasibility conditions are as follows:

  • The local best metric, which is the current feasible distance, must be greater than the best metric (the advertised distance) that is learned from the next router. In other words, the next router in the path must be closer to the destination than to the current router; this criterion prevents routing loops.
  • The metric of the alternate path must be less than the variance multiplied by the local best metric (the current feasible distance)

=============================================================

To prove my theory is right, I have to make the AD lower then the current FD, after playing around with the delay (shortening the delay) , i finally got what i want ;)

- not load balancing though, but added in as a feasible successor route

 

R1(config-if)#do show ip eigrp topology
IP-EIGRP Topology Table for AS(10)/ID(192.168.2.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 10.0.0.0/8, 1 successors, FD is 28160
        via 192.168.2.2 (29696/27648), FastEthernet0/1
        via 192.168.3.2 (30208/27648), FastEthernet1/0
P 192.168.1.0/24, 1 successors, FD is 281600
        via Connected, FastEthernet0/0
P 192.168.2.0/24, 1 successors, FD is 27648
        via Connected, FastEthernet0/1
P 192.168.3.0/24, 1 successors, FD is 28160
        via Connected, FastEthernet1/0
P 172.16.0.0/16, 1 successors, FD is 2588160
        via 192.168.3.2 (2588160/2585600), FastEthernet1/0
        via 192.168.2.2 (2589696/2587648), FastEthernet0/1

Just 2 quick questions though

q1) when manually adjusting bandwidth and delay parameters, do we need to do it across adjacent interfaces ( meaning setting the parameters on each interfaces of the connecting routers)

 

q2) Does the output of "show ip eigrp topology"  in "p" mode, means only successor and feasible successor routes/paths that are being elected by EIGRP ?

if we add a /all behind, it means all available paths ? - but some will not be consider as feasible at all.

Am i right ?

 

Regards,
Noob

Hi Koh,

There are some inaccuracies in the information you have quoted. What documentation was that? If it is a Cisco documentation, it needs to be corrected.

I will be using the term Reported Distance instead of Advertised Distance because the acronym AD is easily confused with Administrative Distance which is a different unrelated concept.

A route is feasible if the next router in the path is closer to the destination than to the current router and if the metric of the alternate path is within the variance.

This is wrong. First, the variance has absolutely no relevance in determining whether the route is feasible. Feasible routes are identified exclusively based on the Feasibility Condition that says: Every neighbor whose Reported Distance is smaller than this router's Feasible Distance provides a loop-free (that is, feasible) path to the destination. Second, the formulation "next router should be closer to the destination than to the current router" is a misrepresentation of the Feasible Condition as it implies that the link between this router and the next router should be more costly than the cost of the entire path from the next router down to the destination.

The local best metric, which is the current feasible distance, must be greater than the best metric (the advertised distance) that is learned from the next router.

This is wrong. This router's Feasible Distance is not the local best metric. The Feasible Distance is defined as the lowest metric to the destination this router has experienced since the route last transitioned from Active to Passive state. In other words, it is a historical record of the smallest distance to the destination since the last Active->Passive transition. The current best distance can be equal to the Feasible Distance, or it can be greater; there is no strict equality between them.

In other words, the next router in the path must be closer to the destination than to the current router; this criterion prevents routing loops.

This is wrong as explained earlier.

The metric of the alternate path must be less than the variance multiplied by the local best metric (the current feasible distance)

This is partially wrong and partially unrelated. This rule talks about selecting worse feasible routes for unequal-cost load balancing and not about identifying feasible routes in the first place. To identify feasible routes, only the Feasibility Condition is used as explained above. In addition, this formulation again makes the mistake of confusing the current best metric with the Feasible Distance and assuming they are the same - which they most certainly aren't.

P 172.16.0.0/16, 1 successors, FD is 2588160
        via 192.168.3.2 (2588160/2585600), FastEthernet1/0
        via 192.168.2.2 (2589696/2587648), FastEthernet0/1

When comparing the FD and the RD, don't make the mistake of using the local best metric as you have done in your previous example. The FD is clearly indicated for the route in its heading, here in green. It has only worked for you because in your network, the FD happened to be the same as the current best metric but this does not always need to be the case.

q1) when manually adjusting bandwidth and delay parameters, do we need to do it across adjacent interfaces ( meaning setting the parameters on each interfaces of the connecting routers)

Ideally, yes, although there are situations where the bandwidth setting on both routers on a common link can be different, most often in multipoint Frame Relay scenarios with different speeds of individual virtual circuits. Note, however, that you should not use the bandwidth to influence EIGRP's choice of paths. The bandwidth setting has more consequences than just impacting the EIGRP metric (it also affects the QoS tools operation on the interface if configured; it translates into how much bandwidth EIGRP will actually use when sending its updates over the interface) and so it should be set to a realistic value. If you need to influence the path EIGRP will use, modify the delay setting. The delay parameter is used only in EIGRP metric calculation and does not affect any other router operation.

q2) Does the output of "show ip eigrp topology"  in "p" mode, means only successor and feasible successor routes/paths that are being elected by EIGRP ?

Can you rephrase this please? I am not entirely sure I understand what you mean.

Best regards,
Peter

Hi Peter,

Good to hear from you. I rushed back from lunch just to be able to reply to your response. Hope you will be able to see them here.

 

1) I have got the respective documentation from
http://www.ciscopress.com/articles/article.asp?p=1171169&seqNum=2  under Figure 5.6

With regards to the variance, I agreed with you on what you have said and it should have no impact on feasible routes selection.

 

However with regards to the below

Second, the formulation "next router should be closer to the destination than to the current router" is a misrepresentation of the Feasible Condition as it implies that the link between this router and the next router should be more costly than the cost of the entire path from the next router down to the destination.

Q1) How does the sentence implies that the link between the current router to the next router, is more costly than the cost of the entire route of the next router to the destination ?

Isn't it correct if the next router's RD is lesser then the current router's FD, it means that it is actually closer to the destination then compared to the current router's distance to the destination- was it wrong ?

It would be good if you can illustrate with a diagram (if possible)

 

Q2) For the sentence  "Every neighbor whose Reported Distance is smaller than this router's Feasible Distance provides a loop-free (that is, feasible) path to the destination"  - does it means that for any  neighbor whose Reported distance is larger then the current router's feasible distance will cause a loop if the current router go through that neighbor to reach the destination ?

Consider this below (courtesy of packetlife.net)

 

topology.png

 

R4 to R5 - FD = 1280+512= 1792

R3 to R5 - FD and RD = 2560+512 = 3072

If R4 to R5 is down,  R3 to R5 is not consider as a feasible route because its RD (3072) is more then the FD (1792) of the current router, but how will/does going from R4-R3-R5 consider or cause a loop ?

 

Q3)

The current best distance can be equal to the Feasible Distance, or it can be greater; there is no strict equality between them

When comparing the FD and the RD, don't make the mistake of using the local best metric as you have done in your previous example. The FD is clearly indicated for the route in its heading, here in green. It has only worked for you because in your network, the FD happened to be the same as the current best metric but this does not always need to be the case.

I have done a test

 

P 172.16.0.0/16, 1 successors, FD is 2588160  -- current FD
        via 192.168.3.2 (2588160/2585600), FastEthernet1/0
        via 192.168.2.2 (2589696/2587648), FastEthernet0/1

 172.16.0.0/16, 1 successors, FD is 2587904 -- lowest FD after adjusting shorter delay
        via 192.168.3.2 (2587904/2585600), FastEthernet1/0
        via 192.168.2.2 (2589696/2587648), FastEthernet0/1

P 172.16.0.0/16, 1 successors, FD is 2587904 -- lowest FD remains after returning the delay to original
        via 192.168.3.2 (2588160/2585600), FastEthernet1/0
        via 192.168.2.2 (2589696/2587648), FastEthernet0/1

 

Does that means that best local metric = FD = best historical path ever used ?

Does that even means that for a route to be a feasible successor, not only it must comply to the feasible condition; the feasible condition must be match against the best metric ever toward that particular destination before (highlighted in red above) and not just the current route metric in used (in green above) - am i right ?

How do i reset the FD ?

 

Regards,
Noob

Hi Koh,

Hey, don't spoil your lunch just because of me :)

1) I have got the respective documentation from
http://www.ciscopress.com/articles/article.asp?p=1171169&seqNum=2 ; under Figure 5.6

Understood. Unfortunately, that document is not correct with respect to the Feasible Distance definition and use.

Q1) How does the sentence implies that the link between the current router to the next router, is more costly than the cost of the entire route of the next router to the destination ?

Simply read the statement carefully. The relevant part of it says: "if the next router in the path is closer to the destination than to the current router [... cut ...]". Now, the next router and the current router are connected via a direct link (otherwise the "next" router would not be the "next" one, right?). So the distance of the next router to the current router is simply the cost of the link that connects them together. As a result, saying that the next router is closer to the destination than to the current router means that the cost of the path from the next router to the destination is lower than the cost of the link that connects the current and the next router together. Voilà.

Isn't it correct if the next router's RD is lesser then the current router's FD, it means that it is actually closer to the destination then compared to the current router's distance to the destination- was it wrong ?

In the previous paragraph, I have intentionally underlined and emphasized the word "to" because it dramatically changes the meaning of the statement we are analyzing.

Notice that the statement says: "if the next router is closer to the destination than to the current router", and that is what I object against in the first place. It would be slightly more correct, but still not entirely correct, if it was rephrased as follows: "if the next router is closer to the destination than the current router", having the second "to" removed.

You could ask - what's wrong with the rephrased statement? Surely, any neighboring router that is closer to the destination than the current router is not on a routing loop, otherwise its distance would need to include the current router's distance as well and would be larger which is a contradiction with the starting assumption, right?

Well, this would be true if the network was stable and no topology changes took place. However, in the moment of a topology change, the router that detects it obviously knows about it, but its neighbors may not yet have been informed. For example, assume that a directly connected network to a router goes down. In routing protocols, this is represented as a topology change in which the distance to the network increases to infinity. At this very moment when the router just detects the directly connected interface going down, it already knows the route is dead. However, its own neighbors do not know about it yet. Using any of them just because each one of them has reported a lower-than-infinity distance in their last update would be grossly premature.

So relying on the current distances as known in the moment of a topology change is not going to prevent you from routing loops. Remember: You know about the topology change but do your neighbors know about it as well? Does their last reported distance already take the topology change into account? See, there's no guarantee of that.

That is why EIGRP uses another distance to do these loop-freedom checks, the Feasible Distance, defined as the historical minimum of the distance toward the destination since the last time the route became Passive. You may be interested in reading this entire thread very carefully:

https://supportforums.cisco.com/discussion/11877371/eigrp-successor-and-feasible-successor

It is lengthy but if we want to talk about what's really up with EIGRP and its operations, it is a mandatory stuff to master.

Q2) For the sentence  "Every neighbor whose Reported Distance is smaller than this router's Feasible Distance provides a loop-free (that is, feasible) path to the destination"  - does it means that for any  neighbor whose Reported distance is larger then the current router's feasible distance will cause a loop if the current router go through that neighbor to reach the destination ?

No, that is not a correct extrapolation. The Feasible Condition you are quoting in your question is what we call a sufficient condition in mathematical logic. Every route that meets the Feasibility Condition is loop-free. However, the Feasibility Condition does not say anything about routes that fail the Feasibility Condition check. They might be loop-free or not. You cannot be certain, and that's the point. Routes that meet the Feasibility Condition are guaranteed to be loop-free. Routes that fail the Feasibility Condition can be either loop-free or looped - EIGRP can't tell just by looking at the distances.

This is why EIGRP also has the mechanism of diffusing computations. If a path meets the Feasibility Condition, you're perfectly safe to use it. If, however, a path does not meet the Feasibility Condition and you want to use it, you must start a diffusing computation to make an explicit verification whether that path can be used, or some other needs to be used instead.

Does that means that best local metric = FD = best historical path ever used ?

Yes, you're getting the point of FD quite right. More properly worded, FD is the best metric seen to a particular destination since the last Active->Passive transition. That is when one history ends and another history starts.

Does that even means that for a route to be a feasible successor, not only it must comply to the feasible condition; the feasible condition must be match against the best metric ever toward that particular destination before (highlighted in red above) and not just the current route metric in used (in green above) - am i right ?

Be careful about the wording. A route is never a feasible successor. The terms successor and feasible successor refer to neighboring routers, that is, potential next hops. You can have a "successor route" or a "feasible successor route" which is a shorthand for saying that the route uses the successor or the feasible successor as its next hop, but whenever we talk about successors and feasible successors, we're talking about routers, not routes.

Also, I would not say that for a route to be a feasible successor route, it must comply with several criteria (you have used the wording "not only" suggesting that there are several things for it to match). Let's break it down once again:

  • Feasible Distance (FD): The lowest seen (or experienced) metric to the destination since the last time the destination transitioned from Active to Passive state (that is, since the last diffusing computation for that destination has finished).
  • Feasible Condition: Any neighbor whose RD is strictly smaller than the current router's FD for that destination provides a loop-free path to that destination. In other words, taking the historical nature of the FD into account, any neighbor that is closer to the destination than the current router has been since the last diffusing computation for that destination provides a loop-free path.
  • Successor: A neighbor that meets the Feasibility Condition and provides the least total distance to the destination.
  • Feasible Successor: A neighbor that meets the Feasibility Condition but provides a higher-than-least total distance to the destination

That's it.

How do i reset the FD ?

As an administrator, you cannot. The FD is an internal variable maintained by EIGRP for every known route. However, by its definition, the FD is always lowered whenever the current router learns about a better (understand - shorter) path than currently known. Increasing the FD can only be done during a diffusing computation. A router must not increase the FD on its own accord without coordinating with its neighbors.

I am sure this is a difficult topic and it elicits lots of questions so please feel welcome to ask further!

Best regards,
Peter

Hi Peter,

Thanks for replying! I read your response 3 times so to be sure that i absorbed every single drop of wisdom in it.

Simply read the statement carefully. The relevant part of it says: "if the next router in the path is closer to the destination than to the current router [... cut ...]". Now, the next router and the current router are connected via a direct link (otherwise the "next" router would not be the "next" one, right?). So the distance of the next router to the current router is simply the cost of the link that connects them together. As a result, saying that the next router is closer to the destination than to the current router means that the cost of the path from the next router to the destination is lower than the cost of the link that connects the current and the next router together. Voilà.

Ahh.... Ok , now i get the meaning.

 

FD is the best metric seen to a particular destination since the last Active->Passive transition. That is when one history ends and another history starts. (notice the words in bold)

Peter, i went to read about what does ACTIVE really means and it says

A - Active
Indicates that EIGRP computations are being performed for this destination.

P - Passive
Indicates that no EIGRP computations are being performed for this destination.

So FD is the best metric seen to a particular destination since the router's last EIGRP computation for that destination.  What if the router recalculate/perform EIGRP computations again ?

 

Q1) Do you mean that if the destination turn from P to A again for EIGRP computations, another FD will replaced the last FD ? or in another words, if the router perform another EIGRP computation again, will the resulting FD replace the previous FD irregardless it is more or less ?

 

Q2) What will cause a diffusing computation ? Will deleting a route, or changing a metric (e.g. latency) caused a diffusing computation ? Will it change the Field from P to A ?

 

If the answer is yes (updating a metric will cause diffusing computation), then how do we explain the previous example that I have done, the FD was not reseted.

P 172.16.0.0/16, 1 successors, FD is 2588160  -- current FD
        via 192.168.3.2 (2588160/2585600), FastEthernet1/0
        via 192.168.2.2 (2589696/2587648), FastEthernet0/1

P 172.16.0.0/16, 1 successors, FD is 2587904 -- lowest FD after adjusting shorter delay
        via 192.168.3.2 (2587904/2585600), FastEthernet1/0
        via 192.168.2.2 (2589696/2587648), FastEthernet0/1

P 172.16.0.0/16, 1 successors, FD is 2587904 -- lowest FD remains after returning the delay to original
        via 192.168.3.2 (2588160/2585600), FastEthernet1/0
        via 192.168.2.2 (2589696/2587648), FastEthernet0/1

 

Regards,

Noob

Hi Koh,

Peter, i went to read about what does ACTIVE really means and it says

Ah, okay, you weren't acquainted with this part of EIGRP terminology. Let's not talk at this point about the transitions from Passive to Active and back, just define the states themselves.

A route is in the Active state when a router has started a diffusing computation for this route by sending out Queries to its neighbors. This usually means that the route has become unusable and a replacement route has to be identified in cooperation with other routers. The Active state for a route will last until the router receives all Replies to its Queries (each of its neighbors that has received a Query must send a Reply, so the router waits to receive a Reply from each of its queried neighbors).

A route is in the Passive state when the router is not performing any diffusing computation for the route. This typically means that the route is usable.

So FD is the best metric seen to a particular destination since the router's last EIGRP computation for that destination.

Yes, more precisely, since the last diffusing computation for that destination because the diffusing computation is the reason for the route to become Active, and the termination of the diffusing computation is the reason for the route to go from Active to Passive again.

In EIGRP, we have two types of computation: a local computation which is performed by a router based exclusively on its topology table contents, and a diffusing computation which is performed by a router querying its neighbors.

What if the router recalculate/perform EIGRP computations again ?

If the router performed a local computation and has found a new best and loop-free path (in other words, it identified the new successor by simply by looking at the topology table contents and finding out that the router providing the least cost path also meets the Feasibility Condition), the FD will either stay the same if the new path has a bigger metric than the previous path, or it will decrease if the new path has a lower metric than the previous path.

If the router performed a diffusing computation - which would happen when a local computation found out that the neighbor providing the least cost path does not meet the Feasibility Condition - then, after the diffusing computation terminates, the FD will be reset and set to the metric of the least cost path produced by the diffusing computation. Note that this metric may be higher than before. That is why FD can increase after diffusing computations but stay the same or decrease during local computations.

Q1) Do you mean that if the destination turn from P to A again for EIGRP computations, another FD will replaced the last FD ? or in another words, if the router perform another EIGRP computation again, will the resulting FD replace the previous FD irregardless it is more or less ?

Quite correct! After a diffusing computation has started and ended for a destination, the router can safely forget the old FD and reinitialize it with the metric of the least cost path that was just computed during the diffusing computation, regardless of whether the new FD is larger or smaller than the old FD. A diffusing computation is in fact the only way of increasing an FD. During Passive state when only local computations are performed, FD can only decrease or stay the same.

Q2) What will cause a diffusing computation ?

Enumerating all causes would be a lengthy list. The most simple and comprehensive formulation would be as follows:

Whenever a router finds out that after performing a change to the topology table, the least cost path is provided by a router that does not meet the Feasibility Condition, the route needs to become Active and a diffusing computation needs to be started for it.

Now, a change to the topology table can be caused by multiple events: learning about a new network you haven't seen before (by receiving an Update), a route changing its metric (either because the interface to the next hop changed its metric, or the next hop itself has advertised a changed metric using Update or Query packets), losing a route (the next hop has timed out, the interface to the next hop has gone down, the next hop as advertised that route with an infinite metric); don't take this as an exhaustive list of events but I'm sure you get the point. Anytime such an event occurs, the router processes the received information into the topology table and then looks for the neighbor providing the least cost path. Does that neighbor meet the Feasibility Condition with the current value of FD? If yes, great, let's use it, and that's the local computation. If not, put the route into the Active state and let the Queries fly.

If the answer is yes (updating a metric will cause diffusing computation), then how do we explain the previous example that I have done, the FD was not reseted.

The FD did not change because the router never had to start the diffusing computation. You have lowered the cost of next hop interface and then you have put it back. Note that the Feasibility Condition requires that RD<FD for a (feasible) successor. The RD of a (feasible) successor does not depend on the cost of the link between you and him, so changing the cost of the interface between you and your (feasible) successor has no impact on how these routers meet the Feasibility Condition. That is why your router in this particular network never needed to enter the Active state and start the diffusing computation, and so, even after you put the cost of the link back to its original value, the FD - being the historical minimum of the distance since the last Active->Passive transition - remained at the decreased value.

Best regards,
Peter

Hi Peter,

 

I am at lost for words. I know this is barely the surface of the topic, but the information here is much more then whatever i can gathered in the reading materials on book and online.

How would anyone new to networking know about all these if not the forum and you as well as the other experts here.. just can't believe it.

Heartfelt thanks really. 

====================================================

Coming back to the topic, I have 2 questions (1 especially important )

Q1) when performing a local computation, does the status get from Passive to Active ?

Edited (Ans: No, only diffusing computation will cause status to go Active)

 

Q2) when receiving a trigger, update etc to do a local computation, does the router/eigrp itself, check to see if the computed "current aka latest" successor match the feasibility condition ? (e.g. taking the current successor RD and matching it with the recorded FD at that point of time).

Reason for asking the above is because you mentioned the following

Whenever a router finds out that after performing a change to the topology table, the least cost path is provided by a router that does not meet the Feasibility Condition, the route needs to become Active and a diffusing computation needs to be started for it

as i think that the least cost path = current/latest successor after local computation
but again you mentioned in my previous workings that

Note that the Feasibility Condition requires that RD<FD for a (feasible) successor. The RD of a (feasible) successor does not depend on the cost of the link between you and him, so changing the cost of the interface between you and your (feasible) successor has no impact on how these routers meet the Feasibility Condition

But the working above is changing the delay between the current router and its successor/next hop router.  (not with its feasible successor)

and how does the router knows by changing the delay between itself and the current successor that there will be no need to do any diffusing computation ? what if the delay is so huge and the router should actually use its initial feasible successor to become the current successor, wouldn't that change the FD ?

But again, changing the delay between the current router and its successor have no impact to the AD of the successor to the designated network (hence no impact to the feasibility condition); so how does the router know that it must use a feasible successor route instead ?

 

I have included an exhibit to illustrate what i meant above as below.

 

 

[Edited] My guess is that when changing R0's delay to 100, will cause a local computation, R0 eigrp finds that going via Router 1 will be a better choice now (120 compared to 150), it will then check if R1 meet the feasibility condition (RD 70 < Current FD 100) and it pass the condition.
Hence, R0 will now put now R1 as the successor to network 10.10.10.0/24; however, the FD will still remain at 100 and not 120.  (there is no diffusing computation done / passive to active).  - Right ?

My only doubt is, will the above computation check (feasibility condition) on R1 be executed since R1 is already a feasible successor from the start.

 

Regards,
Noob

 

Hi Koh,

Sorry, I have been busy yesterday so only now I am tending back to your questions. First and foremost of all, though: You said some very nice things, but it goes both ways, you know. I thank you for being such an open and willing learner of all things networking.

Q1) when performing a local computation, does the status get from Passive to Active ?

As you have correctly determined yourself - no, during local computation, the route stays Passive.

Q2) when receiving a trigger, update etc to do a local computation, does the router/eigrp itself, check to see if the computed "current aka latest" successor match the feasibility condition ?

Yes, definitely, but we need to take the larger picture into account.

Assume that a route is in the passive state. Now, in terms of metric changes, what event causes an update to the topology table?

  • Change of the RD from the current successor (by means of receiving an Update or a Query from that successor). I am not saying that the change is towards higher or lower value, I am merely stating that you learn a different RD value.
  • Change of the link cost to the current successor.
  • Change of the RD from any other neighbor (by means of receiving an Update or a Query from that neighbor)
  • Change of the link cost to any neighbor that advertises the network
  • A neighbor newly advertising this network who has not advertised that network before
  • Loss of a network through a particular neighbor (either that neighbor goes down entirely, or it withdraws the network by advertising it with an infinite metric in an Update or Query packet)

In each of these cases, your router first processes the updated information by recording the new RD and the total distance through the neighbor that was affected by the topology change into the topology table (the routing table is not changed at this moment, neither is FD - these all stay unaffected by this update as of yet). After doing this update in the topology table, the router looks up the neighbor that provides the least-cost metric, and checks whether it meets the feasibility condition using the current value of FD (recall, it wasn't touched by this procedure). If the neighbor meets the feasibility condition then the router has a new successor, so only now it updates the routing table, and, if the new route's metric is even lower than the current FD, the FD will be updated (read - decreased) to the new route's metric. However, if the neighbor does not meet the feasibility condition then the route must be put into the Active state and Queries must be sent out.

Note that the Feasibility Condition requires that RD<FD for a (feasible) successor. The RD of a (feasible) successor does not depend on the cost of the link between you and him, so changing the cost of the interface between you and your (feasible) successor has no impact on how these routers meet the Feasibility Condition

This is a text that is a quotation from my own post. I may have confused you here inadvertently. When I wrote "(feasible) successor" I meant to say "successor and/or feasible successor". So it should be better worded, like this:

Note that the Feasibility Condition requires that RD<FD for a successor or a feasible successor. The RD of a successor and a feasible successor does not depend on the cost of the link between you and him, so changing the cost of the interface between you and your successor or feasible successor has no impact on how these routers meet the Feasibility Condition

and how does the router knows by changing the delay between itself and the current successor that there will be no need to do any diffusing computation ?

It does not know. But think of this: Let us call the total distance through a particular neighbor the Computed Distance (this is the official name as used in EIGRP SNMP MIB). For a neighbor n, the Computed Distance is

CDn = Ln + RDn

where Ln is the cost of the link toward that neighbor, and RDn is its own Reported Distance.

Now what does the Feasibility Condition say once again? It says RDn<FD if the neighbor n is to be considered a successor or a feasible successor. The FD is a historical minimum of the distance toward the destination, not specifically tied to any neighbor. The RDn is the current known Reported Distance. Where's the Ln in this inequality? You guessed it right - there isn't! So for the inequality RDn<FD, the Ln has no impact, so a particular neighbor cannot become a guaranteed loop-free next hop, nor can it lose this status just because the cost of the link toward this neighbor changes.

This isn't to say that the change of a link cost never causes a router to go Active. There may be situations where you have a successor and another neighbor that is not even a feasible successor because its RD is higher or equal than your own FD, so for example:

Router1: L1 = 10, RD1 = 50, CD1 = 10 + 50 = 60
Router2: L2 = 10, RD2 = 70, CD2 = 10 + 70 = 80

Without knowing the previous history, we can safely assume the FD of 60. Now, Router1 is a successor as RD1<FD (50<60). Router2 is not a successor or a feasible successor as it does not hold that 70<60.

Now assume that L1 goes from 10 to 50. Then the situation changes as follows:

Router1: L1 = 50, RD1 = 50, CD1 = 50 + 50 = 100
Router2: L2 = 10, RD2 = 70, CD2 = 10 + 70 = 80

FD hasn't been touched and is still at 60. Obviously, Router2 would be providing a better path but because it still does not meet the Feasible Condition (it is not true that 70<60), it cannot be used without verifying. Notice that at this point, the link cost change toward Router1 did not change its own conformity with the Feasibility Condition: it still holds that 50<60, as neither the FD nor RD1 have changed just because L1 has changed. So Router1 is still loop-free but it no longer appears to provide the least-cost route. Therefore you have to go Active and verify whether Router2 could be used indeed. Perhaps it could - perhaps not, this exercise does not contain any further info to determine that. That's actually the nature of the distance vector which EIGRP still is - a single router is unable to determine the whole topology on its own; rather, it must rely on reported information from neighbors, that in turn rely on reported information from their own neighbors, and none of the routers has a complete picture of the network.

I am not going to answer the remaining questions in your post as I suppose this example clarifies a couple of them - but please be assured that you are most welcome to ask further, I just don't want to ramble too much as it's too lengthy to digest.

Best regards,
Peter

Hi Peter,

I am very sorry for reverting back late and I thank you for coming back to the thread even though you don't have the obligation to. I hope you are still around to see this thread tomorrow and I look forward to your responses

 

Back to the our topic ;)

After reading the above explanation -> can i draw to the conclusion that

a) for every events that cause an update to the topology table - even if there is currently-in-use successor route, the router will still check for routes that has the least cost metric, if there is such a (newer) route, and if it matches the feasibility condition, then it will replace the existing successor route.

Q1) right ? -- what happen to the "current" successor route, that is going to be "replaced"  ?

b) The FD for the scenario above, might stay the same (even if the newer route has a higher cost metric/FD) or will go lower.  This is because the operation above is still within the scope of a local computation.


c) In the event that the newer route does not meet the feasibility condition but however is still / has the least cost metric, then it is put into active mode and queries are send out to neighbors to confirm on their RD to the destination network.


Q2) why is it that when/if a newer route does not meet the feasibility condition, then the route must be put into active mode and queries must be send out to neighbors to confirm on the their RD to the destination network ?  In the situation above, can't the router use back the original successor route ? (without going to active mode/sending updates)

 

Q3) In both my example and yours,

Router1: L1 = 10, RD1 = 50, CD1 = 10 + 50 = 60
Router2: L2 = 10, RD2 = 70, CD2 = 10 + 70 = 80

Without knowing the previous history, we can safely assume the FD of 60. Now, Router1 is a successor as RD1<FD (50<60). Router2 is not a successor or a feasible successor as it does not hold that 70<60.

Now assume that L1 goes from 10 to 50. Then the situation changes as follows:

Router1: L1 = 50, RD1 = 50, CD1 = 50 + 50 = 100
Router2: L2 = 10, RD2 = 70, CD2 = 10 + 70 = 80

So Router1 is still loop-free but it no longer appears to provide the least-cost route. Therefore you have to go Active and verifywhether Router2 could be used indeed.


What will happen next when the router find that Router 1 is no longer the least cost metric route to the designated network, but Router 2 is. However R2 does not meet the feasibility condition and queries are being send out to neighbors to confirm the usability of R2.

What are the actual checks in place (send via the queries) with/to the neighbors to make sure R2 is a usable route and to have it install as the successor route eventually leading to the increment in the FD ?

(The current router know that R1 is loop free, but is not the best route to the destination network; while R2 is the best route (have the least cost metric), but fail Feasibility condition -- then what must be done next, what will the queries send out actually check ?

 

Hope my understanding is correct and hope to hear from you soon.

================================================

 

Lastly, Peter just wanna ask a non-technical advise from you as a lecturer..  i am actually studying for my CCNA and i have been advised to just understand the basic of what routing protocols do, their differences etc.. - am i diving in too soon ?  ( i just don't like to pass the exam without knowing how things actually work.) but i am spending quite abit of time in the routing chapters.. :[

 

Regards,
Noob

One humble recommendation :) I have my fathers's volume 1 1st edition / and also volume 2. We both still go through it together, every now and then. Believe me its worth every single penny.

http://www.amazon.com/Routing-TCP-IP-1-2nd/dp/1587052024/

Bilal

Please rate useful posts & remember to mark any solved questions as answered. Thank you.

I second Bilal's recommendation.

Lost track of the number of times I have referred to these books, if you want to understand routing protocols you should get them.

I hope Peter answers but for a different perspective from someone who didn't go down the certification route -

I have always been of the opinion that it's not as important as to how much you know as how much you understand and although they are closely related it is an important difference.

If you really understand the basics of networking then you will not struggle too much with the advanced topics. You cannot start learning EIGRP if you don't understand the basics of IP addressing, L2 and L3 forwarding of packets etc.

So in short, yes, you cannot run before you can walk.

But to say you only need to understand the basics of routing protocols for CCNA seems to me to be a very limiting approach. It is almost as if the only goal was to pass CCNA as opposed to gaining knowledge.

I have been involved in a lot of your posts and I can say that not only do you show an ability to understand what is being explained to you but you can also then extrapolate from that information to go deeper into the subject. This post alone is, as far as I am aware, way beyond CCNA knowledge but you do not seem to be having any problems with it.

So my answer would be why limit yourself ?

The more you understand the better you will be and your attitude of wanting to understand rather than just to pass an exam says a lot about how good you will eventually be.

The reason I (and Bilal) hold Peter in such high regard is, amongst other things, because his level of understanding is so deep, and certainly goes way beyond my own level of understanding.

Peter as a true expert on these sorts of things.

He is also extremely modest so, somewhat irritatingly, if he does respond and sees this he will undoubtedly deny it :-)

Jon

Hi Bilal,

Thanks for the recommendations. Truely appreciate it and i am surprise to know both you and your dad are network maniacs :P

 

Hi Jon,

Thank you for your kind words.  I have to admit, i do get discouraged sometimes when I can't understand some technical details and have no one to turn to except you folks in the forum. But seeing your acknowledgement into my basic understanding really is an energy booster.

 

In fact, it is you that give me the head-start to participate in the forum due to the help rendered when i just started posting as i believe actually there are people that  are willing to give advises. 

Till date, i am very very grateful for that; to see your responses in the thread as I know all these are valuable information and knowledge. Thank you ;)

Yeap.. Peter is like the guru here and the problem is that he explain the topic with such detailed ease in the format of which it is like from a teacher to a student; yea.. though i have to agree that he is - irritatingly too modest. ;P .

 

Regards,
Noob

Dear friends,

I am struggling to find an appropriate response to all your compliments but I am utterly at a loss. I do not want this to appear as posturing of any kind, neither do I want to be irritating, but I feel at this point that it is the best to remain silent - apart from telling you in all my sincerity that I am deeply and profoundly touched.

Koh - absolutely no need to apologize. I needed time to respond, too. By the way, is it proper to call you Koh? Is that your first name? If not, how should I properly call you? I apologize but obviously, different languages have different ways of addressing a person. I refuse to use the word "noob" to address you. With its usual meaning, using it to refer to you is an insult and could not be farther from the truth.

a) for every events that cause an update to the topology table - even if there is currently-in-use successor route, the router will still check for routes that has the least cost metric, if there is such a (newer) route, and if it matches the feasibility condition, then it will replace the existing successor route.

Q1) right ? -- what happen to the "current" successor route, that is going to be "replaced"  ?

That is correct. Regarding the replaced route, it will be removed from the routing table but it will still remain in the topology table.

b) The FD for the scenario above, might stay the same (even if the newer route has a higher cost metric/FD) or will go lower.  This is because the operation above is still within the scope of a local computation.

Correct. While the route remains Passive, the FD can not increase. It may stay at its current value (if the new route is of the same or higher metric) or it may decrease (if the new route has a lower metric than the previous one). However, increasing the FD during Passive state is not allowed under any circumstances. Period. It's that simple.

c) In the event that the newer route does not meet the feasibility condition but however is still / has the least cost metric, then it is put into active mode and queries are send out to neighbors to confirm on their RD to the destination network.

Absolutely correct. Just to make sure we keep the terminology correct: It is not a route that meets the Feasibility Condition, rather it is the next hop (that is, the router) that meets the Feasibility Condition. This may be daunting but it is important to always keep in mind that the checks are performed on neighbors for a particular route, not just on the route itself.

Q2) why is it that when/if a newer route does not meet the feasibility condition, then the route must be put into active mode and queries must be send out to neighbors to confirm on the their RD to the destination network ?  In the situation above, can't the router use back the original successor route ? (without going to active mode/sending updates)

Let's make sure we're talking about the same scenario: A route will be put into the Active state if both following conditions are true:

  1. It provides the least total metric (that is, the lowest Computed Distance among all available routes toward the same destination in the topology table)
  2. Its advertising neighbor does not meet the Feasibility Condition

So under these circumstances, why does not the router simply stay with its current route it has been using so far? The answer is simple: You want your router to be always using the shortest path that is available. In my scenario with the two routers, after the link to Router1 went from 10 to 50, the path through Router1 became more expensive (100) than through Router2 (80). The path through Router1 is still guaranteed to be loop-free because Router1 meets the Feasibility Condition - but there is a chance that there is a shorter route available right through Router2. If you stayed with Router1, you would be using a workable route but possibly not the shortest one that is available, and that is not how routing protocols work - to be happy with just about any loop-free route, short or long. But with Router2, you cannot be sure whether it's loop-free or on, as Router2 fails the Feasibility Condition check. That is why you go Active - to make sure.

Note that if the new route did not provide the least cost metric, the fact that its neighbor meets or fails the Feasibility Condition would be irrelevant. You would not go Active with that route because you do not need to: You already have a better path that is loop-free. There would be nothing new to learn by going Active.

What are the actual checks in place (send via the queries) with/to the neighbors to make sure R2 is a usable route and to have it install as the successor route eventually leading to the increment in the FD ?

Okay, this may be a little hairy. When the current router finds out that the route through Router1 (100) is more costly than through Router2 (80) but Router2 fails the Feasibility Condition, it will go over the following (simplified) sequence of steps:

First, it will update the entry in the routing table, keeping it pointing through Router1 but updating the total metric to 100. In EIGRP, you must not change the next hop until you have a guarantee that it is loop-free by meeting the Feasibility Condition. As you have had this guarantee for Router1 up to this point, you are going to keep routing packets through Router1 until the diffusing computation is finished. The packets may thus travel a longer route, perhaps even get blackholed, but they're not going to be stuck in a routing loop. As to why the metric value in the routing table gets increased to 100, this is the very same logic we've used when we talked about the routing loops in RIP: If I am using a particular next hop to reach a destination, and the total cost through that next hop increases (computed as the sum of the link cost to that next hop plus its RD) then until I change to a different next hop, I am objectively farther from the destination, and this fact has to be recorded in the routing table.

Second, the router will put the route into the Active state and send out Queries to all its neighbors. A Query simply contains the new increased distance over the current successor, in this case, 100. The current router effectively tells its neighbors: "Guys, my current distance to this destination has changed to 100. Tell me your own distances to that destination after you take this changed distance of mine into account!"

What happens on the neighbors, now? First of all, the neighbors will treat the metric in the Query as the sending router's new RD, meaning they will update their own topology tables, recalculate their own Computed Distances and determine whose of their own neighbors provides the new least cost path. Now, for each neighbor individually, there are two possibilities:

  • Either its own next hop for the new least cost path satisfies the Feasibility Condition as seen by that neighbor (using that neighbor's FD), in which case the neighbor is happy because it could identify its own new successor in a local computation. In this case, the neighbor will send a Reply right away, indicating its new distance through its own new successor. Notice that it could have safely happened that the neighbor did not need to change its own next hop and metric at all. I have described the situation in this thread you have already visited.
  • Or its own next hop for the new least cost path does not satisfy the Feasibility Condition. In this case, the neighbor performs the very same steps as this router: It will keep the route through its current successor - most probably, it's you - in its routing table but will update the metric through its current successor, reflecting the changed distance, and will send its own Queries indicating its own changed distance over its current successor.

So in other words, the Query is nothing else than an indication that a router's current distance through its current successor has changed to a different value which is indicated in the Query, along with a request for the routers receiving the Query to update their own topology tables, re-evaluate their own choices of least cost paths, subject to their own Feasibility Condition checks, and report back their possibly changed distances. Either they will be able to find the least cost loop-free path using their own local computation, in which case they will simply send a Reply with their re-evaluated distance right away, or they will be unable to find such a path and will need to become Active themselves. A single router going Active may therefore cause a cascade of all routers that formerly relied on the same affected path to go Active, looking for a replacement path. Routers unaffected by this topology change (unaffected in the terms of "Even after processing the distance in the Query, I still could find a neighbor in my topology table that provides the least cost path and based on my current FD, it passes the FC check") will not propagate the Query further, they will simply respond by sending a Reply with their current best metric.

At this point, let's recap: You are a router. You have noticed after processing an event that the neighbor providing the current least-cost path does not meet the FC check. You lock the current routing table entry to make sure it still points to the unchanged old next hop (the old successor), just update its metric to reflect the current (possibly increased) metric through the old next hop, and send out Queries indicating this metric to your neighbors. After doing this, you must not change the routing table until you receive Replies from all neighbors that have been sent a Query. When a Reply is received from a neighbor, it is certain that it was either unaffected, or that it has also engaged into a diffusing computation but has got all necessary Replies and made its own best path selection, in both cases taking your changed distance into account. So after all your neighbors send you a Reply you can be sure they have updated their own knowledge based on what you told them in your Query, and that their own Feasibility Condition check prevents them from choosing you as their next hop if there is a chance you would be using them as your next hop.

Third, with all Replies received - taking the indicated distance from each Reply and recording it into the topology table as they are received - the router now can set the FD to infinity (that, increase it to the maximum value possible) and re-evaluate the least cost path in the topology table. Whichever neighbor provides it, it is going to become the new successor, and because its metric is certainly lower than infinity (which is currently stored in FD), the metric over this neighbor also becomes the new FD. After this, the router can unlock the routing table entry, update it to the newly chosen successor, and put the route back into the Passive state.

Finally, if the current router went active because it received a Query itself then this would be a time to start sending Replies. While in the Active state, you cannot start sending Replies if you haven't received all Replies to your own Query - because you haven't made your mind yet. Otherwise, if you became Active because of any other event, you simply send an unrequested Update if your distance changed from what it was before the Active state.

This will require quite some pondering but in principle, it's relatively simple. It is a recursive process: your Active state may cause other neighbors to go Active as well, but this all depends on how their own Feasibility Checks turn out after processing your Query. So in terms of the behavior of a single router, it's simple, really. You get a Query, process the distance in it, re-evaluate the Computed Distances, choose the neighbor providing the least Computed Distance and now check whether it meets the Feasibility Condition. If it does, you're fine, just start using it and send back a Reply with the new distance. If it does not, go Active yourself advertising your current (possibly changed) distance over your current successor, and wait for all Replies before making a new selection, only then start using it and send Replies. Visualizing it over a larger network may make your head spin, though :)

I will respond to your question about doing the studying in a separate post as this one has got insanely large.

Best regards,
Peter