All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Lunn <andrew@lunn.ch>
To: Sarah Newman <srn@prgmr.com>
Cc: Willy Tarreau <w@1wt.eu>,
	Nikolay Aleksandrov <nikolay@cumulusnetworks.com>,
	netdev@vger.kernel.org, roopa <roopa@cumulusnetworks.com>
Subject: Re: [PATCH] net: bridge: add max_fdb_count
Date: Thu, 16 Nov 2017 20:23:25 +0100	[thread overview]
Message-ID: <20171116192325.GA16122@lunn.ch> (raw)
In-Reply-To: <3d08c77f-8d71-e302-d3f7-24acc6df9414@prgmr.com>

> Linux bridges can also be used in small embedded devices. With no limit,
> the likely result from those devices being attacked is the device gets
> thrown away for being unreliable.

Hi Sarah

Just to get a gut feeling...

struct net_bridge_fdb_entry is 40 bytes.

My WiFi access point which is also a 5 port bridge, currently has 97MB
free RAM. That is space for about 2.5M FDB entries. So even Roopa's
128K is not really a problem, in terms of memory.

> Maybe what's needed is two thresholds, one for warning and one for enforcement.
> The warning limit would need to be low enough that the information had a good chance
> of being logged before the system was under too much load to be able to convey
> that information. The enforcement limit could be left as default inactive until
> shown that it needed to be otherwise.

What exactly is the problem here? Does the DoS exhaust memory, or does
the hashing algorithm not scale?

It is more work, but the table could be more closely tied to the
memory management code. When memory is getting low, callbacks are made
asking to free up memory. Register such a callback and throw away part
of the table when memory is getting low. There is then no need to
limit the size, but print a rate limited warning when asked to reduce
the size.

    Andrew

  reply	other threads:[~2017-11-16 19:23 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-15 19:27 [PATCH] net: bridge: add max_fdb_count Sarah Newman
2017-11-15 19:43 ` Sarah Newman
2017-11-15 20:04 ` Stephen Hemminger
2017-11-16  2:25   ` Andrew Lunn
2017-11-16  4:05     ` Toshiaki Makita
2017-11-16  4:54       ` Sarah Newman
2017-11-16  6:13         ` Toshiaki Makita
2017-11-16  6:20           ` Roopa Prabhu
2017-11-16 16:54             ` Stephen Hemminger
2017-11-15 21:34 ` Egil Hjelmeland
2017-11-16  3:01 ` Andrew Lunn
2017-11-16  7:31 ` Nikolay Aleksandrov
2017-11-16  9:20   ` Sarah Newman
2017-11-16  9:49     ` Nikolay Aleksandrov
2017-11-16  9:58     ` Willy Tarreau
2017-11-16 18:23       ` Sarah Newman
2017-11-16 19:23         ` Andrew Lunn [this message]
2017-11-16 19:36           ` Nikolay Aleksandrov
2017-11-16 20:54             ` Sarah Newman
2017-11-16 20:21           ` Vincent Bernat
2017-11-17  0:27             ` Stephen Hemminger
2017-11-17  5:26               ` Willy Tarreau
2017-11-17  6:14                 ` Nikolay Aleksandrov
2017-11-17  8:01                   ` Nikolay Aleksandrov
2017-11-17 14:06                 ` Andrew Lunn
2017-11-17 18:44                   ` Willy Tarreau
2017-11-21 14:53 ` David Laight

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171116192325.GA16122@lunn.ch \
    --to=andrew@lunn.ch \
    --cc=netdev@vger.kernel.org \
    --cc=nikolay@cumulusnetworks.com \
    --cc=roopa@cumulusnetworks.com \
    --cc=srn@prgmr.com \
    --cc=w@1wt.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.