[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