Docker uses bridge/veth for its bridged network. veth sends tcp packets
as big as 65536 (its default gso value), even when lower physical or
synthetic devices expose a lower limit. This causes tcp fragmentation in
the host, spinning more cpu cycles.
The proposed solution is to allow user to tune gso settings, via iproute
utils for example. Note: this enables changing gso for all interfaces,
not limited to veth only.
This series rebases Stephen's original patches [1]. It also fixes a
minor issue when validating maximum gso_max_size, which can be in the
range [0,65536]. Changes are validated with and without docker use
cases.
[1] https://marc.info/?l=linux-netdev&m=151217101428494&w=2
Stephen Hemminger (2):
rtnetlink: allow GSO maximums to be passed to device
veth: allow configuring GSO maximums
drivers/net/veth.c | 20 ++++++++++++++++++++
net/core/rtnetlink.c | 30 ++++++++++++++++++++++++++++++
2 files changed, 50 insertions(+)
--
2.7.4
From: Stephen Hemminger <stephen@networkplumber.org>
Allow GSO maximum segments and size as netlink parameters on input,
with 'ip link add' utils for example. Allow also updating these
attributes after rtnetlink devices are created.
Signed-off-by: Stephen Hemminger <redacted>
Signed-off-by: Solio Sarabia <redacted>
---
net/core/rtnetlink.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
From: Stephen Hemminger <stephen@networkplumber.org>
Veth's can be used in environments (like Azure) where the underlying
network device is impacted by large GSO packets. This patch allows
gso maximum values to be passed in when creating the device via
netlink.
In theory, other pseudo devices could also use netlink attributes
to set GSO maximums but for now veth is what has been observed
to be an issue.
Signed-off-by: Stephen Hemminger <redacted>
Signed-off-by: Solio Sarabia <redacted>
---
drivers/net/veth.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
From: Stephen Hemminger <stephen@networkplumber.org> Date: 2017-12-06 01:25:18
On Tue, 5 Dec 2017 17:14:26 -0800
Solio Sarabia [off-list ref] wrote:
From: Stephen Hemminger <stephen@networkplumber.org>
Veth's can be used in environments (like Azure) where the underlying
network device is impacted by large GSO packets. This patch allows
gso maximum values to be passed in when creating the device via
netlink.
In theory, other pseudo devices could also use netlink attributes
to set GSO maximums but for now veth is what has been observed
to be an issue.
Signed-off-by: Stephen Hemminger <redacted>
Signed-off-by: Solio Sarabia <redacted>
On Tue, Dec 05, 2017 at 05:25:10PM -0800, Stephen Hemminger wrote:
On Tue, 5 Dec 2017 17:14:26 -0800
Solio Sarabia [off-list ref] wrote:
quoted
From: Stephen Hemminger <stephen@networkplumber.org>
Veth's can be used in environments (like Azure) where the underlying
network device is impacted by large GSO packets. This patch allows
gso maximum values to be passed in when creating the device via
netlink.
In theory, other pseudo devices could also use netlink attributes
to set GSO maximums but for now veth is what has been observed
to be an issue.
Signed-off-by: Stephen Hemminger <redacted>
Signed-off-by: Solio Sarabia <redacted>
I am testing new version with changelink support
Ack, I second whatever version works best.
Will help to try newer patches.