[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Idr] Progressing draft-bhatia-bgp-multiple-next-hops-01.txt
Hi Enke,
On Wed, 23 Aug 2006, Enke Chen wrote:
I am not sure what you meant by "same implementation view, and
dependent upon a particular implementation". In the add-path
proposal, the advertiser is responsible for allocating the
identifier suitable for a particular application, and the receiver
needs to use the (prefix, path-identifier) to identify a path to be
replaced. I believe that part is clear in the proposal, but if it
is not, we'll need to make it clear.
That the sender must pick the identifier is quite clear. It's also
clear the draft leaves that as an implementation matter.
The problem, and Joel's point (I think), is that in not giving any
guidance on how this identifier is to be picked, implementations will
settle on picking this identifier in a deficient way. E.g.
particularly as the draft suggests that router-ID is one possible
choice of such identifier (and indeed you suggest same the below).
Such a choice would not work for re-advertising multiple paths, e.g.
a cluster of route-reflectors:
RR1-RR2
/ | |
A B C
Say A, B and C all advertise a certain NLRI, P.
RR1 and RR2 use add-path with their clients and between themselves so
as to allow all paths to be distributed to all RR-clients. Both the
RR implementations go for the simple approach (as suggested in the
draft and your email) of using the router-ID of the speaker a path
was received from as the Add-Path-ID. So RR1 sends to RR2:
UPDATE: feasible P:A, <attributes>
UPDATE: feasible P:B, <attributes>
Where X:Y is: add-path NLRI for Prefix X and add-path-id of Y.
Now, how should RR2 advertise these to its clients?
It clearly can not blindly just use the Router-ID of the speaker it
received the paths from (RR1 in both cases).
It could however just reuse the path-ids. So the RR's add-path
implementation now becomes (wrt choosing Add-Path-ID):
"If the received path already has a path-ID, and no other
received paths have the same, just re-use that path-id.
Otherwise, use the Router-ID of speaker the path was
received from"
So now RR2 /can/ easily advertise the two paths received from RR1 to
C and D.
However, our friendly BGP network administrator now figures out he
really ought to have clients peer with both RRs, he does so for B
(e.g. A and C's sessions to other RR may be broken for some reason):
RR1-RR2
/ |/ |
A B C
RR2 now has recieved:
From RR1:
P:A
P:B
From B:
P
What should it advertise to C?
The choices seem to be:
- Figure out that P and P:B are the exact same path (e.g. they'll
have the exact same next-hop..), and advertise just P:B to C.
- remember, that RR1 used 'B' as the path-ID is wholly at the
discretion of RR1
- the nexthop however...
or
- Advertise both P:B and P:B' to C
- where B' is some constructed identifier for the path
for P received from B
It seems to us that behaviour of the add-path draft with RR clusters
may be quite indeterminable, given that the issue of the additional
path-identifier is left completely at the discretion of speakers.
One could say "Ah, but ORIGINATOR_ID can be used!", but that's a
route-reflection specific attribute. It won't work for other cases
that could make use of add-path, e.g. ECMP..
Also, for ECMP, a lot of the details of whether not multiple-paths
should be advertised or else whether or not the AS_PATH must be 'ECMP
aggregated' revolve around next-hop.
the routes (simulating full-mesh). It is actually the (prefix,
router-id) that would identify a path instead of the prefix itself.
And see above :)
As the issue of how to identify a path is so fundamental to a solution, I
hope that it can be clarified before we dive into other details.
Yep, fully agreed.
And for any two paths to the same destination a speaker may have, the
next-hop(s) serve(s) as an identity, regardless of other attributes
of the paths.
- if they are not to the same remote speaker, the paths obviously are
different (at least in that "plane" of routing)
- if they are the same, the two paths are effectively the same,
regardless of the other attributes.
We maintain so anyway and think it to be fundamental to routing.
In which case, we might as well make use of this property, rather
than having speakers left to reinvent identifiers, which we think is
not quite as easy and problem-free in the general case as it is for
simple RR cases.
So the question is how to settle the matter of the additional
identifier..
regards,
--
Paul Jakma paul at clubi.ie paul at jakma.org Key ID: 64A2FF6A
Fortune:
Populus vult decipi.
[The people like to be deceived.]
_______________________________________________
Idr mailing list
Idr at ietf.org
https://www1.ietf.org/mailman/listinfo/idr