Failure recovery in IP networks is critical to high quality service provisioning. The main challenge is how to achieve fast recovery without introducing high complexity and resource usage. Today's networks mainly use route recalculation and lower layer protection. However, route recalculation could take as long as seconds to complete; while lower layer protection usually requires considerable bandwidth redundancy. We present two fast rerouting algorithms to achieve recovery from single-link and single-node failures, respectively. The idea is to calculated backup paths in advance. When a failure is detected, the affected packets are immediately forwarded through backup paths to shorten the service disruption. This paper answers the following questions: 1. How to find backup paths? 2. How to coordinate routers during the rerouting without explicit signaling? 3. How to realize distributed implementation? The schemes react to failures very fast because there are no calculations on the fly. They are also cost efficient because no bandwidth reservation is required. Our schemes guarantee 100% failure recovery without any assumption on the primary paths. Simulations show that our schemes yield comparable performance to shortest path route recalculation. This work illuminates the possibility of using pure IP layer solutions to build highly survivable yet cost-efficient networks.