Not sure if my understanding is correct.
To reach the tunnel destination we need to go through the tunnel, however to built the tunnle we need to reach the destinaton first.
Am I right?
Yes, you build the tunnel first, but after the tunnel is up, ususally due to routing protocols running over the tunnel, the route towards destination change and goes through the tunnel.
Thats the issue.. after building the tunnel the routing protocol select the tunnel to the destination due to better metric this cause the resursive routing to resolve this we need to block the destination address from being learn thru the tunnel hereby selective the proper path.
Another fix would be to use a host route (/32) for the tunnel destination. However I think the correct solution would be to block the tunnel destination from being learned through the tunnel in the first place.
Whenever you setup a tunnel with an IGP riding over it, once the tunnel becomes "UP UP"and the IGP forms an adjacency across the tunnel, a better metric to reach the tunnel destination is now advertised through the tunnel, causing the router to now route through the tunnel to reach it's tunnel destination. Once this happens, you will see the tunnel state going up and down (flapping) and the router will generate a recursive routing error message:
%TUN-5-RECURDOWN: Tunnel0 temporarily disabled due
to recursive routing
In order to prevent this problem, you have to prevent the router from routing through the tunnel to reach the tunnel destination.
There are several ways to prevent this such as using some type of filtering (distribute-list) or you can use a static route pointing to the next-hop out of your network to manually control which path the router takes...
Hope this helps [:)]