[Xorp-cvs] XORP cvs commit: xorp/bgp xorp/bgp/harness

Atanu Ghosh atanu@icir.org
Wed, 20 Jul 2005 01:33:15 GMT


CVSROOT:	/usr/local/www/data/cvs
Module name:	xorp
Changes by:	atanu@xorpc.icir.org	2005-07-20 01:33:15 UTC

XORP CVS repository


Modified files:
	bgp           next_hop_resolver.cc next_hop_resolver.hh 
	bgp/harness   test_rib_fea1.sh 

Log message:
	Changing the nexthop associated with a route was causing a
	de-registration failure with the RIB. The tests "test5" and "test6"
	demonstrate this problem.
	
	Update1: Route1 - NextHop1
	Update2: Route1 - NextHop2
	
	Nexthop1: does not resolve.
	Nexthop2: resolves.
	
	Consider the following sequence of events:
	1) Update1 causes a registration for NextHop1 with the RIB.
	2) Update2 causes a registration for Nexthop2 with the RIB
	3) Nexthop2 resolves so Route1 is sent as a route add to the RIB
	4) Nexthop1 suddenly resolves as it falls within the Route1 subnet.
	5) The RIB sends an invalidate to BGP.
	6) Meanwhile BGP no longer has any interest in NextHop1 so
	de-registers interest.
	
	7) The RIB no nolonger has any state about NextHop1 when the
	de-register arrives. It has just sent an invalidate. It returns an
	error.
	8) The BGP receives the failed response from the de-register and then
	the invalidate.
	
	In BGP if a de-register fails expect to see an invalidate in the
	future. Previously the failed de-register was a fatal error.
	
	Very strangely even if NextHop1 does not fall within Route1 an
	invalidate is sent by the RIB which doesn't seem correct. This
	behaviour can be verified with "test6".
	
	Bug found by: Andrea Bittau

Revision  Changes                                Path
1.13      +96 -2;  commitid: 1781b42dda9d97ea6;  xorp/bgp/harness/test_rib_fea1.sh
1.42      +45 -5;  commitid: 1781b42dda9d97ea6;  xorp/bgp/next_hop_resolver.cc
1.28      +10 -1;  commitid: 1781b42dda9d97ea6;  xorp/bgp/next_hop_resolver.hh