General list for discussing Bufferbloat
 help / color / mirror / Atom feed
* [Bloat] netperf server news
@ 2020-10-06 10:52 Rich Brown
  2020-10-06 13:11 ` Sebastian Moeller
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Rich Brown @ 2020-10-06 10:52 UTC (permalink / raw)
  To: bloat; +Cc: Richard E. Brown

To the Bloat list,

I had some time, so I looked into what it might take to keep the netperf.bufferbloat.net server on-line in the face of an unwitting "DDoS" attack - automated scripts that run tests every 5 minutes 24x7. The problem was that these tests would blow through my 4TB/month bandwidth allocation in a few days.

In the past, I had been irregularly running a set of scripts to count incoming netperf connections and blacklist (in iptables) those whose counts were too high. This wasn't good enough: it wasn't keeping up with the tidal wave of connections.

Last week, I revised those scripts to work as a cron job. The current parameters are: run the script every hour; process the last two days' of kern.log files; look for > 500 connections; drop those addresses in iptables.

There are currently 479 addresses blacklisted in iptables (that explains why the bandwidth was being consumed so quickly). There are only a few new addresses being added per day, so it seems that we have flushed out most of the abusers.

My questions for this august group:

1) The server at netperf.bufferbloat.net is up and running. I get full rate speed from my 7mbps DSL circuit, but that's not much of a test. I would be interested to hear your results.

2) The current threshold comes from this estimate: most speed tests use 10 connections: 5 connections up and 5 down. So 500 connections would permit about 50 tests over the course of two days. Is that enough for "real research"? (If you need more, I can add your address to my whitelist file...)

3) I would be pleased to get comments on the set of scripts. I'm a newbie at iptables, so it wouldn't hurt to have someone else check the rules I devised. See the README at https://github.com/richb-hanover/netperfclean

Thanks.

Rich


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

* Re: [Bloat] netperf server news
  2020-10-06 10:52 [Bloat] netperf server news Rich Brown
@ 2020-10-06 13:11 ` Sebastian Moeller
  2020-10-06 19:18 ` Colin Dearborn
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Sebastian Moeller @ 2020-10-06 13:11 UTC (permalink / raw)
  To: Rich Brown; +Cc: bloat

Dear Rich,

first, thanks for supplying that service.

> On Oct 6, 2020, at 12:52, Rich Brown <richb.hanover@gmail.com> wrote:
> 
> To the Bloat list,
> 
> I had some time, so I looked into what it might take to keep the netperf.bufferbloat.net server on-line in the face of an unwitting "DDoS" attack - automated scripts that run tests every 5 minutes 24x7. The problem was that these tests would blow through my 4TB/month bandwidth allocation in a few days.
> 
> In the past, I had been irregularly running a set of scripts to count incoming netperf connections and blacklist (in iptables) those whose counts were too high. This wasn't good enough: it wasn't keeping up with the tidal wave of connections.
> 
> Last week, I revised those scripts to work as a cron job. The current parameters are: run the script every hour; process the last two days' of kern.log files; look for > 500 connections; drop those addresses in iptables.
> 
> There are currently 479 addresses blacklisted in iptables (that explains why the bandwidth was being consumed so quickly). There are only a few new addresses being added per day, so it seems that we have flushed out most of the abusers.
> 
> My questions for this august group:
> 
> 1) The server at netperf.bufferbloat.net is up and running. I get full rate speed from my 7mbps DSL circuit, but that's not much of a test. I would be interested to hear your results.

From work:

bash-3.2$ ./betterspeedtest.sh
2020-10-06 14:46:19 Testing against netperf.bufferbloat.net (ipv4) with 5 simultaneous sessions while pinging gstatic.com (60 seconds in each direction)
.
 Download:  Mbps
  Latency: (in msec, 1 pings, 0.00% packet loss)
      Min: 6.868 
    10pct: 0.000 
   Median: 0.000 
      Avg: 6.868 
    90pct: 0.000 
      Max: 6.868
.............................................................
   Upload:  309.67 Mbps
  Latency: (in msec, 61 pings, 0.00% packet loss)
      Min: 6.644 
    10pct: 6.730 
   Median: 7.289 
      Avg: 7.385 
    90pct: 7.941 
      Max: 9.980
Press any key to continue...

bash-3.2$ ./betterspeedtest.sh
2020-10-06 14:49:33 Testing against netperf.bufferbloat.net (ipv4) with 5 simultaneous sessions while pinging gstatic.com (60 seconds in each direction)
................................................................................
 Download:  0 Mbps
  Latency: (in msec, 80 pings, 0.00% packet loss)
      Min: 6.583 
    10pct: 6.637 
   Median: 6.674 
      Avg: 6.694 
    90pct: 6.743 
      Max: 7.204
................................................................................
   Upload:  0 Mbps
  Latency: (in msec, 80 pings, 0.00% packet loss)
      Min: 6.555 
    10pct: 6.622 
   Median: 6.667 
      Avg: 6.687 
    90pct: 6.742 
      Max: 7.218
Press any key to continue...

So there seems to be an issue with the Download test, from home I currently get 0/0 for both Upload/download.... Maybe I just made it on the block list (not that I remember trying to reach that server in the last weeks at all).

Running flent's rrul_cs8 manually against netperf.bufferbloat.net gave me around 80/25 which seems  believable.


> 
> 2) The current threshold comes from this estimate: most speed tests use 10 connections: 5 connections up and 5 down. So 500 connections would permit about 50 tests over the course of two days. Is that enough for "real research"? (If you need more, I can add your address to my whitelist file...)

	I think 50 tests is quite generous, that is more than one test every hour for two days ;)

> 
> 3) I would be pleased to get comments on the set of scripts. I'm a newbie at iptables, so it wouldn't hurt to have someone else check the rules I devised. See the README at https://github.com/richb-hanover/netperfclean

	Outside of my area of expertise....

Best Reards
	Sebastian

> 
> Thanks.
> 
> Rich
> 
> _______________________________________________
> Bloat mailing list
> Bloat@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/bloat


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

* Re: [Bloat] netperf server news
  2020-10-06 10:52 [Bloat] netperf server news Rich Brown
  2020-10-06 13:11 ` Sebastian Moeller
@ 2020-10-06 19:18 ` Colin Dearborn
  2020-10-06 20:40 ` Rich Brown
  2020-10-07  2:39 ` Kenneth Porter
  3 siblings, 0 replies; 8+ messages in thread
From: Colin Dearborn @ 2020-10-06 19:18 UTC (permalink / raw)
  To: Rich Brown, bloat


1): This hits what I'd expect my connection to be (or close enough anyway):
./betterspeedtest.sh
2020-10-06 12:53:54 Testing against netperf.bufferbloat.net (ipv4) with 5 simultaneous sessions while pinging gstatic.com (60 seconds in each direction)
.............................................................
 Download: 926.27 Mbps
  Latency: (in msec, 61 pings, 0.00% packet loss)
      Min: 23.200
    10pct: 25.500
   Median: 31.100
      Avg: 30.503
    90pct: 34.100
      Max: 38.800
...............................................................
   Upload: 103.50 Mbps
  Latency: (in msec, 63 pings, 0.00% packet loss)
      Min: 22.700
    10pct: 23.900
   Median: 28.600
      Avg: 30.233
    90pct: 33.400
      Max: 112.000

2) That sounds like plenty to me.


-----Original Message-----
From: Bloat <bloat-bounces@lists.bufferbloat.net> On Behalf Of Rich Brown
Sent: October 6, 2020 4:53 AM
To: bloat <bloat@lists.bufferbloat.net>
Cc: Richard E. Brown <richb.hanover@gmail.com>
Subject: [Bloat] netperf server news

  CAUTION: This email is from an external source. Do not click links or open attachments unless you recognize the sender and know the content is safe.

To the Bloat list,

I had some time, so I looked into what it might take to keep the netperf.bufferbloat.net server on-line in the face of an unwitting "DDoS" attack - automated scripts that run tests every 5 minutes 24x7. The problem was that these tests would blow through my 4TB/month bandwidth allocation in a few days.

In the past, I had been irregularly running a set of scripts to count incoming netperf connections and blacklist (in iptables) those whose counts were too high. This wasn't good enough: it wasn't keeping up with the tidal wave of connections.

Last week, I revised those scripts to work as a cron job. The current parameters are: run the script every hour; process the last two days' of kern.log files; look for > 500 connections; drop those addresses in iptables.

There are currently 479 addresses blacklisted in iptables (that explains why the bandwidth was being consumed so quickly). There are only a few new addresses being added per day, so it seems that we have flushed out most of the abusers.

My questions for this august group:

1) The server at netperf.bufferbloat.net is up and running. I get full rate speed from my 7mbps DSL circuit, but that's not much of a test. I would be interested to hear your results.

2) The current threshold comes from this estimate: most speed tests use 10 connections: 5 connections up and 5 down. So 500 connections would permit about 50 tests over the course of two days. Is that enough for "real research"? (If you need more, I can add your address to my whitelist file...)

3) I would be pleased to get comments on the set of scripts. I'm a newbie at iptables, so it wouldn't hurt to have someone else check the rules I devised. See the README at https://github.com/richb-hanover/netperfclean

Thanks.

Rich

_______________________________________________
Bloat mailing list
Bloat@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/bloat

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

* Re: [Bloat] netperf server news
  2020-10-06 10:52 [Bloat] netperf server news Rich Brown
  2020-10-06 13:11 ` Sebastian Moeller
  2020-10-06 19:18 ` Colin Dearborn
@ 2020-10-06 20:40 ` Rich Brown
  2020-10-07  0:42   ` Dave Collier-Brown
  2020-10-07  2:39 ` Kenneth Porter
  3 siblings, 1 reply; 8+ messages in thread
From: Rich Brown @ 2020-10-06 20:40 UTC (permalink / raw)
  To: bloat

Thanks for the feedback. Some responses:

1) I'm glad that people are seeing reasonable speeds from the VPS. (I don't know what I can do to make it go faster, so I'm relieved...)

2) I don't think I posed the right question for the number-of-tests threshold. (Most of the responses were like, "Sure, that sounds like enough..." Let me reframe the question: 

	In your normal testing/troubleshooting process, what is the maximum number of tests YOU might need to run in any two-day period?

3) If you can't get through to netperf.bufferbloat.net, send me your IP address because it might have been blacklisted.

Thanks!

Rich


> On Oct 6, 2020, at 6:52 AM, Rich Brown <richb.hanover@gmail.com> wrote:
> 
> To the Bloat list,
> 
> I had some time, so I looked into what it might take to keep the netperf.bufferbloat.net server on-line in the face of an unwitting "DDoS" attack - automated scripts that run tests every 5 minutes 24x7. The problem was that these tests would blow through my 4TB/month bandwidth allocation in a few days.
> 
> In the past, I had been irregularly running a set of scripts to count incoming netperf connections and blacklist (in iptables) those whose counts were too high. This wasn't good enough: it wasn't keeping up with the tidal wave of connections.
> 
> Last week, I revised those scripts to work as a cron job. The current parameters are: run the script every hour; process the last two days' of kern.log files; look for > 500 connections; drop those addresses in iptables.
> 
> There are currently 479 addresses blacklisted in iptables (that explains why the bandwidth was being consumed so quickly). There are only a few new addresses being added per day, so it seems that we have flushed out most of the abusers.
> 
> My questions for this august group:
> 
> 1) The server at netperf.bufferbloat.net is up and running. I get full rate speed from my 7mbps DSL circuit, but that's not much of a test. I would be interested to hear your results.
> 
> 2) The current threshold comes from this estimate: most speed tests use 10 connections: 5 connections up and 5 down. So 500 connections would permit about 50 tests over the course of two days. Is that enough for "real research"? (If you need more, I can add your address to my whitelist file...)
> 
> 3) I would be pleased to get comments on the set of scripts. I'm a newbie at iptables, so it wouldn't hurt to have someone else check the rules I devised. See the README at https://github.com/richb-hanover/netperfclean
> 
> Thanks.
> 
> Rich
> 


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

* Re: [Bloat] netperf server news
  2020-10-06 20:40 ` Rich Brown
@ 2020-10-07  0:42   ` Dave Collier-Brown
  0 siblings, 0 replies; 8+ messages in thread
From: Dave Collier-Brown @ 2020-10-07  0:42 UTC (permalink / raw)
  To: bloat

[-- Attachment #1: Type: text/plain, Size: 4151 bytes --]

Number?

One or two that were complete and successful.  Maybe five unsuccessful tries.

More of a sequence than a time-period: u{1-5}s{1-2}

--daev


On 2020-10-06 4:40 p.m., Rich Brown wrote:

Thanks for the feedback. Some responses:

1) I'm glad that people are seeing reasonable speeds from the VPS. (I don't know what I can do to make it go faster, so I'm relieved...)

2) I don't think I posed the right question for the number-of-tests threshold. (Most of the responses were like, "Sure, that sounds like enough..." Let me reframe the question:

        In your normal testing/troubleshooting process, what is the maximum number of tests YOU might need to run in any two-day period?

3) If you can't get through to netperf.bufferbloat.net, send me your IP address because it might have been blacklisted.

Thanks!

Rich




On Oct 6, 2020, at 6:52 AM, Rich Brown <richb.hanover@gmail.com><mailto:richb.hanover@gmail.com> wrote:

To the Bloat list,

I had some time, so I looked into what it might take to keep the netperf.bufferbloat.net server on-line in the face of an unwitting "DDoS" attack - automated scripts that run tests every 5 minutes 24x7. The problem was that these tests would blow through my 4TB/month bandwidth allocation in a few days.

In the past, I had been irregularly running a set of scripts to count incoming netperf connections and blacklist (in iptables) those whose counts were too high. This wasn't good enough: it wasn't keeping up with the tidal wave of connections.

Last week, I revised those scripts to work as a cron job. The current parameters are: run the script every hour; process the last two days' of kern.log files; look for > 500 connections; drop those addresses in iptables.

There are currently 479 addresses blacklisted in iptables (that explains why the bandwidth was being consumed so quickly). There are only a few new addresses being added per day, so it seems that we have flushed out most of the abusers.

My questions for this august group:

1) The server at netperf.bufferbloat.net is up and running. I get full rate speed from my 7mbps DSL circuit, but that's not much of a test. I would be interested to hear your results.

2) The current threshold comes from this estimate: most speed tests use 10 connections: 5 connections up and 5 down. So 500 connections would permit about 50 tests over the course of two days. Is that enough for "real research"? (If you need more, I can add your address to my whitelist file...)

3) I would be pleased to get comments on the set of scripts. I'm a newbie at iptables, so it wouldn't hurt to have someone else check the rules I devised. See the README at https://github.com/richb-hanover/netperfclean

Thanks.

Rich




_______________________________________________
Bloat mailing list
Bloat@lists.bufferbloat.net<mailto:Bloat@lists.bufferbloat.net>
https://lists.bufferbloat.net/listinfo/bloat


--
David Collier-Brown,         | Always do right. This will gratify
System Programmer and Author | some people and astonish the rest
dave.collier-brown@indexexchange.com<mailto:dave.collier-brown@indexexchange.com> |              -- Mark Twain



CONFIDENTIALITY NOTICE AND DISCLAIMER : This telecommunication, including any and all attachments, contains confidential information intended only for the person(s) to whom it is addressed. Any dissemination, distribution, copying or disclosure is strictly prohibited and is not a waiver of confidentiality. If you have received this telecommunication in error, please notify the sender immediately by return electronic mail and delete the message from your inbox and deleted items folders. This telecommunication does not constitute an express or implied agreement to conduct transactions by electronic means, nor does it constitute a contract offer, a contract amendment or an acceptance of a contract offer. Contract terms contained in this telecommunication are subject to legal review and the completion of formal documentation and are not binding until same is confirmed in writing and has been signed by an authorized signatory.

[-- Attachment #2: Type: text/html, Size: 5177 bytes --]

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

* Re: [Bloat] netperf server news
  2020-10-06 10:52 [Bloat] netperf server news Rich Brown
                   ` (2 preceding siblings ...)
  2020-10-06 20:40 ` Rich Brown
@ 2020-10-07  2:39 ` Kenneth Porter
  3 siblings, 0 replies; 8+ messages in thread
From: Kenneth Porter @ 2020-10-07  2:39 UTC (permalink / raw)
  To: bloat

--On Tuesday, October 06, 2020 7:52 AM -0400 Rich Brown 
<richb.hanover@gmail.com> wrote:

> 3) I would be pleased to get comments on the set of scripts. I'm a newbie
> at iptables, so it wouldn't hurt to have someone else check the rules I
> devised. See the README at https://github.com/richb-hanover/netperfclean

A couple of alternatives to custom scripts are fail2ban and the 
rate-limiting modules available for iptables such as hashlimit and recent. 
I haven't used fail2ban for rate-limiting so I'm not sure if it's the right 
tool for that but it monitors log files to add iptables rules for 
short-term banning. It's not hard to add your own log monitoring rule. I 
haven't used the iptables modules but they look like a natural solution for 
this.

<https://poorlydocumented.com/2017/08/understanding-iptables-hashlimit-module/>

<https://serverfault.com/questions/682045/source-ip-rate-limiting-in-iptables-hashlimit-vs-recent>

Instead of using a unique iptables rule for each blocklist member, I 
suggest using an ipset. (I use firewalld as a front-end to iptables so I 
let it manage my ipsets, but you can also install ipset's service for use 
with raw iptables to save and restore the sets across boots.) Your block 
rule could be as simple as this:

iptables -I INPUT 1 -p tcp --dport netperf -m set --match-set 
NetPerfAbusers src -m conntrack --ctstate NEW -j DROP



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

* Re: [Bloat] netperf server news
  2020-10-07 18:23 ` Rich Brown
@ 2020-10-08  1:39   ` Kenneth Porter
  0 siblings, 0 replies; 8+ messages in thread
From: Kenneth Porter @ 2020-10-08  1:39 UTC (permalink / raw)
  To: bloat

--On Wednesday, October 07, 2020 3:23 PM -0400 Rich Brown 
<richb.hanover@gmail.com> wrote:

> I'm also aware of ipset, which I take to be an optimized alternative to
> searching a long set of iptables rules (true?) I don't believe that my
> OpenVZ VPS has kernel support for this, so as long as the
> long-list-of-rules seems to work well, I'm going to leave it alone.

A quick google of "OpenVZ ipset" turned up a thread from 3 years ago 
suggesting it's in their kernel:

<https://forum.openvz.org/index.php?t=rview&goto=53549&th=13604>

Note that ipset operates in addition to iptables. Other kernel subsystems 
can also use them. iptables has a module to query an ipset.

500 rules is a lot to search linearly. I'd think a hash table would give 
much superior performance. Note that every "good" packet has to check ALL 
the blocking rules to be approved.

I use ipsets to block probes to my mail servers from outside the country 
and from cloud services. I've managed to find a few sources of lists for 
those. I also use ipset with fail2ban.

The only complicated part is how to handle reboots or other service 
restarts. I use firewalld which does its own ipset management so I put the 
permanent lists there. (I have scripts to convert the cloud lists to a 
firewalld's XML format for its ipset storage.) fail2ban keeps its own block 
database in a sqlite file and tears down and recreates its ipsets on 
restart.


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

* Re: [Bloat] netperf server news
       [not found] <mailman.3.1602086401.13868.bloat@lists.bufferbloat.net>
@ 2020-10-07 18:23 ` Rich Brown
  2020-10-08  1:39   ` Kenneth Porter
  0 siblings, 1 reply; 8+ messages in thread
From: Rich Brown @ 2020-10-07 18:23 UTC (permalink / raw)
  To: bloat


> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Tue, 06 Oct 2020 19:39:54 -0700
> From: Kenneth Porter <shiva@sewingwitch.com>
> To: bloat <bloat@lists.bufferbloat.net>
> Subject: Re: [Bloat] netperf server news
> Message-ID: <38F0B196CFEA470FEEBE0520@[172.27.17.193]>
> Content-Type: text/plain; charset=us-ascii; format=flowed
> 
> --On Tuesday, October 06, 2020 7:52 AM -0400 Rich Brown 
> <richb.hanover@gmail.com> wrote:
> 
>> 3) I would be pleased to get comments on the set of scripts. I'm a newbie
>> at iptables, so it wouldn't hurt to have someone else check the rules I
>> devised. See the README at https://github.com/richb-hanover/netperfclean
> 
> A couple of alternatives to custom scripts are fail2ban and the 
> rate-limiting modules available for iptables such as hashlimit and recent. 
> I haven't used fail2ban for rate-limiting so I'm not sure if it's the right 
> tool for that but it monitors log files to add iptables rules for 
> short-term banning. It's not hard to add your own log monitoring rule. I 
> haven't used the iptables modules but they look like a natural solution for 
> this.
> 
> <https://poorlydocumented.com/2017/08/understanding-iptables-hashlimit-module/>
> 
> <https://serverfault.com/questions/682045/source-ip-rate-limiting-in-iptables-hashlimit-vs-recent>
> 
> Instead of using a unique iptables rule for each blocklist member, I 
> suggest using an ipset. (I use firewalld as a front-end to iptables so I 
> let it manage my ipsets, but you can also install ipset's service for use 
> with raw iptables to save and restore the sets across boots.) Your block 
> rule could be as simple as this:
> 
> iptables -I INPUT 1 -p tcp --dport netperf -m set --match-set 
> NetPerfAbusers src -m conntrack --ctstate NEW -j DROP

Thanks for these thoughts. I looked briefly at rate-limiting schemes, but didn't see a good way for them to distinguish good users from bad:

- Good users (who are setting up their SQM, or testing various algorithms) run a test (that creates 10 connections in ~10-60 seconds), tweak a parameter, then re-run that test, repeating until they're happy.

- Bad users who test every five minutes 24x7 create 10 connections every 300 seconds - a slower "rate" of establishing new connections than the good guys.

The primary characteristic that distinguishes the good guys from the bad is that good guys *stop.*

So, my reasoning goes, I need to look at a longer time window and set a limit on the number of connections over the course of a day or two (not minutes or hours). And that's the genesis of my question to the group:

	What is *your* pattern of testing? How many successive tests are you likely to make over the course of a day? 

I'm also aware of ipset, which I take to be an optimized alternative to searching a long set of iptables rules (true?) I don't believe that my OpenVZ VPS has kernel support for this, so as long as the long-list-of-rules seems to work well, I'm going to leave it alone.

That's my thinking, but please let me know if I'm missing something. Thanks again.




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

end of thread, other threads:[~2020-10-08  1:40 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-06 10:52 [Bloat] netperf server news Rich Brown
2020-10-06 13:11 ` Sebastian Moeller
2020-10-06 19:18 ` Colin Dearborn
2020-10-06 20:40 ` Rich Brown
2020-10-07  0:42   ` Dave Collier-Brown
2020-10-07  2:39 ` Kenneth Porter
     [not found] <mailman.3.1602086401.13868.bloat@lists.bufferbloat.net>
2020-10-07 18:23 ` Rich Brown
2020-10-08  1:39   ` Kenneth Porter

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