status/metrics: make MTU configurable

since some users don't even have a full 1500 (and some systems might
have links with bigger MTU and not require as much fragmentation).

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
Fabian Grünbichler 2020-10-29 08:32:30 +01:00 committed by Thomas Lamprecht
parent 0b9e52ddc6
commit 0fc553eb1b
3 changed files with 14 additions and 1 deletions

View File

@ -50,6 +50,7 @@ sub options {
return {
server => {},
port => { optional => 1 },
mtu => { optional => 1 },
proto => { optional => 1 },
timeout => { optional => 1 },
path => { optional => 1 },

View File

@ -28,6 +28,7 @@ sub options {
return {
server => {},
port => {},
mtu => { optional => 1 },
disable => { optional => 1 },
};
}

View File

@ -33,6 +33,14 @@ my $defaultData = {
type => 'integer',
description => "server network port",
},
mtu => {
type => 'integer',
description => "MTU for metrics transmission over UDP",
default => 1500,
min => 512,
maximum => 64*1024,
optional => 1,
},
},
};
@ -69,7 +77,10 @@ sub _disconnect {
# UDP cannot do more than 64k at once. Overwrite for different protocol limits.
sub _send_batch_size {
my ($class, $cfg) = @_;
return 1450; # assume 1500 MTU, empty IPv6 UDP packet needs 48 bytes overhead
# default to 1500 MTU, empty IPv6 UDP packet needs 48 bytes overhead
my $mtu = $cfg->{mtu} // 1500;
return $mtu - 50;
}
# call with the smalles $data chunks possible