I would like to be able to run iperf3 in guestshell on ios-xe to test throughput for router WAN links.
iperf3 results are reasonable over very low latency paths (i.e. 10ms), but for higher latency increasing the TCP send/receive buffers on the iperf3 host is necesseary or TCP throughput really drops due to buffer saturation.
Because guestshell is a container, it appears that I am unable to modify the following settings which are only accessible
The following are some recommended increased buffer settings from https://fasterdata.es.net/host-tuning/linux/ for /etc/sysctl.conf.
# increase TCP max buffer size setable using setsockopt()
# allow testing with 256MB buffers
net.core.rmem_max = 268435456
net.core.wmem_max = 268435456
# increase Linux autotuning TCP buffer limits
# min, default, and max number of bytes to use
# allow auto-tuning up to 128MB buffers
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
# don't cache TCP metrics from previous connection
net.ipv4.tcp_no_metrics_save = 1
# If you are using Jumbo Frames, also set this
net.ipv4.tcp_mtu_probing = 1
# recommended to enable 'fair queueing' (fq or fq_codel)
net.core.default_qdisc = fq
Increasing net.core.rmem_max and net.core.wmem_max is required prior to increasing net.ipv4.tcp_rmem and tcp_wmwm because the core parameters set the maximum for all network buffers. Since guestshell is a container, net.core sysproc settings are unaccessible - they are only accessible on the underlying host operating system which in this case is the IOS-XE hypervisor.
Is there a way to increase net.core.rmem_max on IOS-XE, or another way to increase TCP buffer settings so that iperf3 tests over "high" latency are actually useful?
Running iperf3 in a VM on IOS-XE works fine because I can modify net.core settings, but unfortunately I do not have storage on all of my routers, but all of them can run guestshell.