Kevin Dorrell, CCIE #20765

15 Mar 2010

The BGP Decision Process

Filed under: BGP, IP Routing Protocols — dorreke @ 12:29

As it is coming up to re-certification time, I have dusted off my copy of Wendell Odom’s CCIE R&S Certification Exam Guide. I have the second edition, which is a little out of date but the information in it is still relevant.  With that, and the addition of sample chapters from the 3rd edition about MPLS and IPv6 courtesy of the CiscoPress web site, I hope to get by without forking out for the new 4th edition.   (That is one advantage of not registering my copy until 3 years after I bought it: CiscoPress gave me two sample chapters from the 3rd edition to try to persuade me to buy it, even though that too is now out of print.  But I digress.  Who knows, I may crack and  buy the 4th edition anyway.  I’m a glutton for books.)

I am looking at the BGP Decision Process on page 444, and I am having an issue with steps 3 and 5.  Just as a reminder, here are the steps as explained in the book:

3. Locally injected routes – Pick the route injected into BGP locally; if multiple routes exist, prefer ORIGIN I routes first, then ORIGIN E routes, and finally ORIGIN ? routes.  (This step is seldom needed, and is sometimes omitted from other BGP references.)

5. ORIGIN PA – IGP (I) routes are preferred over EGP (E) routes, which are in turn preferred over incomplete (?) routes.

Now, I may be being thick, but I don’t see the difference between these two steps, and I am suspecting that the explanation of step 3 is incomplete.  I suspect step 3 has nothing to do with the ORIGIN PA, but has all to do with whether the route was generated by a network command or by redistribution on this router.  Or maybe it means that the ORIGIN PA values are compared, but only if the routes are locally generated.  As he points out later in the chapter, the step is largely redundant because locally generated routes would get a weight of 32768, and so would have won outright at step 1.  But my confusion is compounded on page 456, which insists that the step is related to the ORIGIN PA.

OK, the way I think it probably works is this: step 3 gives preference to routes generated in this router by a network or redistribute command.  In fact, they have already been given preference by virtue of the weight of 32768 that they were given,  but just suppose for a moment that they are competing with an incoming update that has been artificially given a weight of 32768.  The locally generated ones take preference, discarding the incoming route.

Now suppose we generated the route locally twice, once by a redistribute by a network command.  Both of these will drop through step 4 since the AS_PATH is still empty.  So even in this case, it is step 5 that decides between I, E, or ?.

I think I’ll have to write to him to ask about it.

Blog at