Flushing the Routing Cache
Whenever a change in the system takes place that could cause some of the information in the cache to become out of date, the kernel flushes the routing cache. In many cases, only selected entries are out of date, but to keep things simple the kernel removes all entries. The main events that trigger flushing are:
- A device comes up or goes down
Some addresses that used to be reachable through a given device may not be reachable anymore, or may be reachable through a different device with a better route.
- An IP address is added to or removed from a device
We saw in the sections "Adding an IP address" and "Removing an IP address" in Chapter 32 that Linux creates a special route for each locally configured IP address. When an address is removed, any associated route in the cache also has to be removed. The removed address was most likely configured with a netmask different from /32, so all the cache entries associated with addresses within the same subnet should go away[*] as well. Finally, if one of the addresses in the same subnet was used as a gateway for other indirect routes, all of them should go away. Flushing the entire cache is simpler than keeping track of all of these possible cases.
- The global forwarding status, or the forwarding status of a device, has changed
If you disable forwarding, you need to remove all the cached routes that were used to forward traffic. See the section "Enabling and Disabling Forwarding" in Chapter 36.
- A route is removed ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access