Refusing Pings on Core Routers??? A new trend?
Eric Spaeth
eric at spaethco.com
Fri Oct 20 04:37:31 UTC 2006
Rubens Kuhl Jr. wrote:
> If I recall well, Cisco GSRs impose low priority and/or limits for all
> ICMP traffic flowing thru the box, not just packets to/from router
> itself, and there's not a knob to adjust that.
There'd be no reason to limit ICMP globally -- for traffic through a
router it's all IP; it doesn't really matter what the sub-protocol it
is. The forwarding process on the router is the same for all IP
traffic, the simple breakdown being:
1) Take the source and destination IP and hash them to get an index value
2) Look up the destination prefix in the forwarding table (the CEF table
on Cisco hardware)
3) Match the hashed index value in the CEF table with an outbound interface
4) Puke the packet out the destination interface.
All of these tasks are easily done in hardware ASICs because they are
just doing simple hashing and bit comparisons. If the destination
prefix is already populated in the CEF table then there is no
CPU/software involved in the process. The hashing is to keep traffic
from source to destination on a single interface to reduce out-of-order
delivery.
To respond to ICMP, however, the packet needs to be routed up to the CPU
to be handled. There the packet must be inspected, and an entirely new
packet must be created to be sent back. While individually these
responses take a negligible amount of CPU time, if you get enough
devices flooding you with ICMP requests it starts to add up. Since
processor time is used for other semi-important tasks like maintaining
BGP peering, it is often prudent to rate-limit ICMP handling by the router.
Overall this is a bigger issue with IOS devices; Juniper has a whole
architecture built into JunOS to protect the CPU so they can often get
by without end-user configuration to limit impact.
-Eric
More information about the NANOG
mailing list