Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Nov 1998 23:08:50 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        "John Saunders" <john.saunders@scitec.com.au>
Cc:        "Matthew Dillon" <dillon@apollo.backplane.com>, <freebsd-current@FreeBSD.ORG>
Subject:   Re: RE: D.O.S. attack protection enhancements commit (ICMP_BANDLIM)
Message-ID:  <199812010708.XAA03688@apollo.backplane.com>
References:   <005b01be1cf6$e6368da0$6cb611cb@saruman.scitec.com.au>

next in thread | previous in thread | raw e-mail | index | archive | help

:
:>From my thinking there are two steps:
:
:1: Make FreeBSD run stable as a rock while being pounded with
:DoS attacks. Although under such an attack it is not expected
:to be able to perform much real work due to network saturation
:and shortage of mbufs.

    As far as I can tell, it starves the mbuf pool and/or outgoing
    packet queues.  When we get D.O.S. attacks greater then 20,000
    packets per second or so, and the machine tries to send 20,000
    pps worth of ICMP error replies, other packet traffic gets
    thrown away.  Furthermore, if the reply is to a non-existant
    IP on the local LAN, the ICMP replies get buffered while
    the machine tries to ARP the destination.  If not, the xmit
    traffic goes to the switch which starts collisioning-out packets
    when the router beyond the switch saturates.  It isn't possible
    for the xmit rate to exceed the recv rate in that situation,
    so packets build up.

:2: Include the ICMP rate limiting patch so that while under
:a DoS attack real work can continue to happen. Although this
:patch only removes work from the transmission path, DoS ICMP
:messages will continue to be received and processed to the
:point of being discarded. However most servers have plenty
:of reception bandwidth available but not much transmission
:bandwidth so this patch works in our favour.
:
:I think that this patch may simply mask the real stability
:problem in the IP stack. Although I do support the idea of
:having this facility. Would setting the packet rate to 0
:effectively disable the rate limiting?

    It's a real problem.  When you are receiving a 20Kpps
    attack you do not want to be transmitting 20Kpps in ICMP
    replies to a possibly spoofed address.

    I definitely do *not* want to play with the outgoing packet
    queues or network memory allocation subsystem.  Not only
    is doing so a much more complicated task, but it is also
    a matter of fixing the problem after the patient has died.
    With the cpu already at saturation, trying to do fancy dequeueing 
    and prioritization of insanely huge packet queues will only make
    things worse.  Rate limiting the error responses (not even trying 
    to respond if the rate is too high) prevents cpu and network xmit
    starvation from occuring in the first place while still allowing 
    legitimate traffic through.

:loaded
:>     web boxes.  I believe 100 to be an excellent default value.
:
:This sounds OK, on my network I wouldn't see even 2 packets
:per second.
:
:--   .   +-------------------------------------------------------+
: ,--_|\  | John Saunders    mailto:John.Saunders@scitec.com.au   |

					-Matt

    Matthew Dillon  Engineering, HiWay Technologies, Inc. & BEST Internet 
                    Communications & God knows what else.
    <dillon@backplane.com> (Please include original email in any response)    

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199812010708.XAA03688>