[Xorp-cvs] XORP cvs commit: xorp/bgp
Atanu Ghosh
atanu@icir.org
Wed, 29 Jun 2005 00:52:29 GMT
CVSROOT: /usr/local/www/data/cvs
Module name: xorp
Changes by: atanu@xorpc.icir.org 2005-06-29 00:52:28 UTC
XORP CVS repository
Modified files:
bgp route_table_nhlookup.cc
Log message:
On a peering if a route existed with a unique nexthop and a
replacement route arrived with the same unique nexthop, previously a
de-registration would be sent to the RIB followed by a registration.
Most importantly there was a window during which the nexthop was not
resolvable. If the decision process performed a lookup on the peer
during this window the lookup would have to return that the status of
this nexthop was known as it had been known previously. Unfortunately
if the decision process decided that this route was the winner it
would attempt to get the IGP distance from the next hop resolver which
did not have an answer. This caused an assert in the decision process,
by the time a route reaches the decision process its status must be
known.
The current code no longer does the de-registration first. In the case
that the nexthops are the same in both routes, re-ordering the
de-registration/registration means there is no longer a window when
the status of the nexthop is not known. In the case where the nexthops
are different it is necessary to defer the de-registration until the
new nexthop has been resolved.
The problem was triggered by configuring four routers in a clique with
E-BGP peerings. Then introducing a single route and withdrawing that
route.
Bug found by: Dario Vieira
Revision Changes Path
1.20 +38 -6; commitid: 746242c1f0cb7ea6; xorp/bgp/route_table_nhlookup.cc