Skip to content

Commit 91bd8bc

Browse files
committed
man: add workaround for the port-fowarding performance issue w/ kernel 4.20
The kernel 4.20 bumped up the default value of `/proc/sys/net/ipv4/tcp_rmem` from 87380 to 131072. This is known to slow down slirp4netns port forwarding: rootless-containers#128 As a workaround, it is recommended to modify `/proc/sys/net/ipv4/tcp_rmem` inside the namespace manually. (No real root privilege is needed) Update rootless-containers#128 Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
1 parent bbd6f25 commit 91bd8bc

File tree

4 files changed

+21
-0
lines changed

4 files changed

+21
-0
lines changed

benchmarks/benchmark-iperf3-reverse.sh

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ unshare -r -n sleep infinity &
99
child=$!
1010

1111
wait_for_network_namespace $child
12+
fixup_kernel420_net_ipv4_tcp_rmem $child
1213

1314
mtu=${MTU:=1500}
1415
tmpdir=$(mktemp -d /tmp/slirp4netns-bench.XXXXXXXXXX)

benchmarks/benchmark-iperf3.sh

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ unshare -r -n sleep infinity &
1010
child=$!
1111

1212
wait_for_network_namespace $child
13+
fixup_kernel420_net_ipv4_tcp_rmem $child
1314

1415
mtu=${MTU:=1500}
1516
slirp4netns -c --mtu $mtu $child tun11 &

slirp4netns.1.md

+10
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,16 @@ Additionally, a **--userns-path=PATH** argument can be included to override any
206206
```console
207207
$ slirp4netns --netns-type=path --userns-path=/path/to/userns /path/to/netns tap0
208208
```
209+
# BUGS
210+
211+
The kernel 4.20 bumped up the default value of **/proc/sys/net/ipv4/tcp_rmem** from 87380 to 131072.
212+
This is known to slow down slirp4netns port forwarding: **https://github.com/rootless-containers/slirp4netns/issues/128**.
213+
214+
As a workaround, you can revert the value of **/proc/sys/net/ipv4/tcp_rmem** inside the namespace manually. (No real root privilege is needed)
215+
216+
```console
217+
unshared$ c=$(cat /proc/sys/net/ipv4/tcp_rmem); echo $c | sed -e s/131072/87380/g > /proc/sys/net/ipv4/tcp_rmem
218+
```
209219

210220
# SEE ALSO
211221

tests/common.sh

+9
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,12 @@ function expose_tcp() {
6969
echo -n $json | ncat -U $apisock
7070
echo -n "{\"execute\": \"list_hostfwd\"}" | ncat -U $apisock
7171
}
72+
73+
function fixup_kernel420_net_ipv4_tcp_rmem() {
74+
# kernel 4.20 bumped up the default value of /proc/sys/net/ipv4/tcp_rmem from 87380 to 131072.
75+
# This is known to slow down slirp4netns port forwarding.
76+
# See https://github.com/rootless-containers/slirp4netns/issues/128
77+
# See https://github.com/torvalds/linux/commit/a337531b942bd8a03e7052444d7e36972aac2d92
78+
child=$1
79+
nsenter --preserve-credentials -U -n --target=$child sh -c 'c=$(cat /proc/sys/net/ipv4/tcp_rmem); echo $c | sed -e s/131072/87380/g > /proc/sys/net/ipv4/tcp_rmem'
80+
}

0 commit comments

Comments
 (0)