diff options
author | Maciej Żenczykowski <maze@google.com> | 2021-03-23 06:01:37 -0700 |
---|---|---|
committer | Maciej Żenczykowski <maze@google.com> | 2021-04-02 05:59:39 +0000 |
commit | 2cd9b420781b7f10e5620234280384ba78169d01 (patch) | |
tree | 8fe8519e77b4bfbc9d808dedce73282632fdb1eb | |
parent | 690616707811c607cdf11c4b373c92bf7a284c14 (diff) | |
download | tests-2cd9b420781b7f10e5620234280384ba78169d01.tar.gz |
net-test: add test for congestion control sysctls
There are various obsolete/deprecated congestion control algorithms,
like BIC, that should never be used as they're unfair/uncooperative
and bad for other devices on the network.
In particular BIC has been deprecated for a very long (12y?) time
and subsumed by Cubic. It really should be removed from the Linux kernel
but some folks want to keep it around for historical purposes
(ie. for comparisons). There have been a lot of improvements made
into Cubic (e.g. stretched ACKs and hystart).
It is also an IETF standard (RFC8312) and used by iOS and Windows
clients.
Test: gpylint2 sysctls_test.py, ran against 5.4-R ACK kernel
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I1a36a62f516701a3478da993fc2a09951da9d7b5
-rwxr-xr-x | net/test/sysctls_test.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/net/test/sysctls_test.py b/net/test/sysctls_test.py new file mode 100755 index 0000000..4b71f39 --- /dev/null +++ b/net/test/sysctls_test.py @@ -0,0 +1,43 @@ +#!/usr/bin/python +# +# Copyright 2021 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import unittest + +import net_test + + +class SysctlsTest(net_test.NetworkTest): + + def check(self, f): + algs = open(f).readline().strip().split(' ') + bad_algs = [a for a in algs if a not in ['bbr', 'bbr2', 'cubic', 'reno']] + msg = ("Obsolete TCP congestion control algorithm found. These " + "algorithms will decrease real-world networking performance for " + "users and must be disabled. Found: %s" % bad_algs) + self.assertEqual(bad_algs, [], msg) + + def testAllowedCongestionControl(self): + self.check('/proc/sys/net/ipv4/tcp_allowed_congestion_control') + + def testAvailableCongestionControl(self): + self.check('/proc/sys/net/ipv4/tcp_available_congestion_control') + + def testCongestionControl(self): + self.check('/proc/sys/net/ipv4/tcp_congestion_control') + + +if __name__ == "__main__": + unittest.main() |