Thread (10 messages) flat view 10 messages, 5 authors, 2021-07-08

Re: [PATCH net] ipv6: tcp: drop silly ICMPv6 packet too big messages

From: Willy Tarreau <w@1wt.eu>
Date: 2021-07-07 16:15:45

On Wed, Jul 07, 2021 at 06:06:21PM +0200, Eric Dumazet wrote:
On Wed, Jul 7, 2021 at 5:59 PM Willy Tarreau [off-list ref] wrote:
quoted
Hi Eric,

On Wed, Jul 07, 2021 at 08:46:30AM -0700, Eric Dumazet wrote:
quoted
From: Eric Dumazet <edumazet@google.com>

While TCP stack scales reasonably well, there is still one part that
can be used to DDOS it.

IPv6 Packet too big messages have to lookup/insert a new route,
and if abused by attackers, can easily put hosts under high stress,
with many cpus contending on a spinlock while one is stuck in fib6_run_gc()
Just thinking loud, wouldn't it make sense to support randomly dropping
such packets on input (or even better rate-limit them) ? After all, if
a host on the net feels like it will need to send one, it will surely
need to send a few more until one is taken into account so it's not
dramatic. And this could help significantly reduce their processing cost.
Not sure what you mean by random.
I just meant statistical randomness. E.g. drop 9/10 when under stress for
example.
We probably want to process valid packets, if they ever reach us.
That's indeed the other side of my question. I.e. if a server gets hit
by such a flood, do we consider more important to spend the CPU cycles
processing all received packets or can we afford dropping a lot of them.
In our case, we could simply drop all ICMPv6 " packet too big"
 messages, since we clamp TCP/IPv6 MSS to the bare minimum anyway.

Adding a generic check in TCP/ipv6 stack is cheaper than an iptables
rule (especially if this is the only rule that must be used)
Sure, I was not thinking about iptables here, rather a hard-coded
prandom_u32() call or a percpu cycling counter.

Willy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help