public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
* rpc.mountd can be blocked by a bad client
@ 2014-09-24 10:57 Strösser, Bodo
  2014-09-25  0:32 ` NeilBrown
  0 siblings, 1 reply; 5+ messages in thread
From: Strösser, Bodo @ 2014-09-24 10:57 UTC (permalink / raw)
  To: linux-nfs@vger.kernel.org; +Cc: bfields@fieldses.org

Hello,

a few days ago we had some trouble with a NFS server. The clients most of the time no longer
could mount any shares, but in rare cases they had success.

We found out, that during the times when mounts failed, rpc.mountd hung on a write() to a TCP
socket. netstat showed, that Send-Q was full and Recv-Q counted up slowly. After a long time
the write ended with an error ("TCP timeout" IIRC) and rpc.mountd worked normally for a short
while until it again hung on write() for the same reason. The problem was caused by a MTU size
configured wrong. So, one single bad client (or as much clients as the number of threads used
by rpc.mountd) can block rpc.mountd entirely.

But what will happen, if someone intentionally sends RPC requests, but doesn't read() the
answers? I wrote a small tool to test this situation. It fires DUMP requests to rpc.mountd as
fast as possible, but does not read from the socket. The result is the same as with the
problem above: rpc.mountd hangs in write() and no longer responds to other requests while no
TCP timeout breaks up this situation.

So it's quite easy to intentionally block rpc.mountd from remote.

Please CC me, I'm not on the list.

Best regards,
Bodo

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-11-05 14:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-24 10:57 rpc.mountd can be blocked by a bad client Strösser, Bodo
2014-09-25  0:32 ` NeilBrown
2014-09-25 10:21   ` Strösser, Bodo
2014-11-05  5:14     ` NeilBrown
2014-11-05 14:25       ` Strösser, Bodo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox