From 88c1fd3a35926d813967b3c969e01b41ea67771a Mon Sep 17 00:00:00 2001 From: Christian Breunig Date: Tue, 3 Oct 2023 18:14:23 +0200 Subject: pppoe: T5630: allow to specify MRU in addition to already configurable MTU Set the MRU (Maximum Receive Unit) value to n. PPPd will ask the peer to send packets of no more than n bytes. The value of n must be between 128 and 16384, the default was always 1492 to match PPPoE MTU. A value of 296 works well on very slow links (40 bytes for TCP/IP header + 256 bytes of data). Note that for the IPv6 protocol, the MRU must be at least 1280. CLI: set interfaces pppoe pppoe0 mru 1280 (cherry picked from commit e062a8c11856f213983f5b41f50d4f9dbc0dde0f) --- data/templates/pppoe/peer.tmpl | 2 +- interface-definitions/interfaces-pppoe.xml.in | 14 ++++++++++++++ smoketest/scripts/cli/test_interfaces_pppoe.py | 4 ++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/data/templates/pppoe/peer.tmpl b/data/templates/pppoe/peer.tmpl index b681bea77..536d484de 100644 --- a/data/templates/pppoe/peer.tmpl +++ b/data/templates/pppoe/peer.tmpl @@ -50,7 +50,7 @@ ifname {{ ifname }} ipparam {{ ifname }} debug mtu {{ mtu }} -mru {{ mtu }} +mru {{ mru }} {% if authentication is defined %} {{ 'user "' + authentication.user + '"' if authentication.user is defined }} diff --git a/interface-definitions/interfaces-pppoe.xml.in b/interface-definitions/interfaces-pppoe.xml.in index 581a8a59c..5e39ac65d 100644 --- a/interface-definitions/interfaces-pppoe.xml.in +++ b/interface-definitions/interfaces-pppoe.xml.in @@ -114,6 +114,20 @@ 1492 + + + Maximum Receive Unit (MRU) + + u32:128-16384 + Maximum Receive Unit in byte + + + + + MRU must be between 128 and 16384 + + 1492 + Do not use DNS servers provided by the peer diff --git a/smoketest/scripts/cli/test_interfaces_pppoe.py b/smoketest/scripts/cli/test_interfaces_pppoe.py index 8dcac4d7d..6774a86ba 100755 --- a/smoketest/scripts/cli/test_interfaces_pppoe.py +++ b/smoketest/scripts/cli/test_interfaces_pppoe.py @@ -58,11 +58,13 @@ class PPPoEInterfaceTest(VyOSUnitTestSHIM.TestCase): user = 'VyOS-user-' + interface passwd = 'VyOS-passwd-' + interface mtu = '1400' + mru = '1300' self.cli_set(base_path + [interface, 'authentication', 'user', user]) self.cli_set(base_path + [interface, 'authentication', 'password', passwd]) self.cli_set(base_path + [interface, 'default-route', 'auto']) self.cli_set(base_path + [interface, 'mtu', mtu]) + self.cli_set(base_path + [interface, 'mru', mru]) self.cli_set(base_path + [interface, 'no-peer-dns']) # check validate() - a source-interface is required @@ -80,6 +82,8 @@ class PPPoEInterfaceTest(VyOSUnitTestSHIM.TestCase): tmp = get_config_value(interface, 'mtu')[1] self.assertEqual(tmp, mtu) + tmp = get_config_value(interface, 'mru')[1] + self.assertEqual(tmp, mru) tmp = get_config_value(interface, 'user')[1].replace('"', '') self.assertEqual(tmp, user) tmp = get_config_value(interface, 'password')[1].replace('"', '') -- cgit v1.2.3