Re: [PATCH 01/11] rxrpc: Add a common object cache

From: David Miller
Date: Tue Mar 08 2016 - 22:00:12 EST


From: David Howells <dhowells@xxxxxxxxxx>
Date: Tue, 08 Mar 2016 21:11:09 +0000

> I can put in a limit per peer, where a 'peer' is either a particular remote
> UDP port or particulat remote host. TCP has this by virtue of having a
> limited number of ports available per IP address. But if I have 10 IP
> addresses available, I can attempt to set up half a million TCP connections to
> a server simultaneously. If I have access to a box that has an NFS mount on
> it, I can potentially open sufficient TCP ports that the NFS mount can't make
> a connection if it's not allowed to use privileged ports.

You must hold onto and commit locally to state for each and every one
of those remote TCP connections you create and actually move to
established state.

It's completely different, both sides have to make a non-trivial
resource commitment.

For this RXRPC stuff, you don't.

That's the important and critical difference.

My core argument still stands that RXRPC is fundamental DoS'able, in a
way that is not matched by TCP or our routing code or similar
subsystems.