[Xorp-cvs] XORP cvs commit: xorp/bgp xorp/tests/bgp
Atanu Ghosh
atanu at icir.org
Thu Nov 30 19:41:05 PST 2006
CVSROOT: /usr/local/www/data/cvs
Module name: xorp
Changes by: atanu at xorpc.icir.org 2006-12-01 03:41:05 UTC
XORP CVS repository
Modified files:
bgp next_hop_resolver.cc next_hop_resolver.hh
tests/bgp test_bgp_reports1.py
Log message:
The nexthop resolver tracks the state of nexthops; whether a
nexthop resolves and the IGP distance if it does. In order to track
the state of the nexthop BGP registers interest in nexthops with the
RIB. As routes can be added or removed from the RIB the state of a
nexthop can change, when it does the RIB does one of two things:
1) It can send a route_info_invalid XRL on receipt of which BGP will
re-register interest with the RIB.
2) If only the IGP distance changed then the RIB can send a
route_info_changed with the new IGP distance.
When interest in a nexthop is registered rather then send back
resolvability and metric information for a single address, a subnet is
returned. This subnet has two prefixes associated with it the real
prefix that belongs to the original route and the prefix that is
actually covered.
The nexthop resolver was assuming that the route_info_changed was
receiving the real prefix information rather than the covered prefix,
hence an assert was being hit as the prefix was not in the table.
To trigger the problem:
1) Install a static route 0.0.0.0/0 works well.
2) Introduce a BGP route that does not cover the nexthop, which will
cause a new range to be registered with BGP.
3) Introduce a BGP route which exactly matches the current
registration, causing a route_info_changed XRL to be sent to BGP. Note
BGP routes are all installed with a metric of 0, hence the metric change.
For example:
static default route: 0.0.0.0/0
nexthop: 10.0.0.1
route1: 10.1.0.0/20
route2: 10.0.0.0/16
Bugzilla URL: http://www.xorp.org/bugzilla/show_bug.cgi?id=649
Bug found by: Justin Fletcher
Revision Changes Path
1.49 +33 -5; commitid: 1286a456fa44f7ea6; xorp/bgp/next_hop_resolver.cc
1.32 +4 -4; commitid: 1286a456fa44f7ea6; xorp/bgp/next_hop_resolver.hh
1.6 +52 -1; commitid: 1286a456fa44f7ea6; xorp/tests/bgp/test_bgp_reports1.py
More information about the Xorp-cvs
mailing list