routing loops

Tony Li <tli@cisco.com> Fri, 22 May 1992 23:08 UTC

Received: from nri.nri.reston.va.us by ietf.NRI.Reston.VA.US id aa03460; 22 May 92 19:08 EDT
Received: from nri.reston.va.us by NRI.Reston.VA.US id aa21120; 22 May 92 19:14 EDT
Received: from PIZZA.BBN.COM by NRI.Reston.VA.US id aa21116; 22 May 92 19:14 EDT
Received: from pizza by PIZZA.BBN.COM id aa07723; 22 May 92 19:06 EDT
Received: from BBN.COM by PIZZA.BBN.COM id aa07717; 22 May 92 19:04 EDT
Received: from lager.cisco.com by BBN.COM id aa21247; 22 May 92 19:06 EDT
Received: by lager.cisco.com; Fri, 22 May 92 16:06:20 -0700
Date: Fri, 22 May 1992 16:06:20 -0700
From: Tony Li <tli@cisco.com>
Message-Id: <9205222306.AA26255@lager.cisco.com>
To: msteenst@bbn.com
Cc: idpr-wg@bbn.com
In-Reply-To: Martha Steenstrup's message of Fri, 22 May 92 18:22:40 -0400 <9205222225.AA23028@wolf.cisco.com>
Subject: routing loops

   I've just reread the BGP-3 specification.  The general looping problem
   I am talking about is addressed in a more specific form in section 10,
   Detection of Inter-AS Policy Contradictions.  The last paragraph of
   that section says:"... the protocol itself does not provide any
   mechanism for suppressing the route oscillation that may result from
   these unsatisfiable policies".

   I don't mean to pick on BGP.  As I've already said, the architecture
   document discusses general distance vector algorithms for policy
   routing.  It's just that I don't see how you can say that this looping
   problem is not a problem in BGP, unless the implementation differs
   from the protocol specification.

Ding.  Congratulations, you win the prize.  Recall the
_implementation_ sections that I quoted you?  Now, from section 10
look at:

   In some cases, this may allow a BGP speaker to detect the fact that
   its policies, taken together with the policies of some other AS,
   cannot simultaneously be satisfied.  For example, consider the
   following situation involving AS A and its neighbor AS B.  B
   advertises a route with a path of the form <B,...>, where A is not
   present in the path.  A then decides to use this path, and advertises
   <A,B,...> to all its neighbors.  B later advertises <B,...,A,...>
   back to A, without ever declaring its previous path <B,...> to be
   unreachable. 

The sections that I quoted insure that this last action is not
possible.  If B advertises <B,....,A,....> back to A, that _implies_
that the previous path is no longer reachable.  A correct
implementation at A, then would have to remove <A,B,...> from its path
table.  No loop.  I will gladly stipulate that RFC 1267 is not
internally self-consistent in this case.

Of course, it may still oscillate.  Is this what you real complaint is?

Tony