dropbear: add option to set receive window size

The default receive window size in dropbear is hardcoded to 24576 byte
to limit memory usage. This value was chosen for 100Mbps networks, and
limits the throughput of scp on faster networks. It also severely limits
scp throughput on high-latency links.

Add an option to set the receive window size so that people can improve
performance without having to recompile dropbear.

Setting the window size to the highest value supported by dropbear
improves throughput from my build machine to an APU2 on the same LAN
from 7MB/s to 7.9MB/s, and to an APU2 over a link with ~65ms latency
from 320KB/s to 7.5MB/s.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
master
Stijn Tintel 7 years ago
parent 88ba41453d
commit 1c308bbbf5
  1. 5
      package/network/services/dropbear/files/dropbear.init

@ -42,6 +42,7 @@ validate_section_dropbear()
'SSHKeepAlive:uinteger:300' \ 'SSHKeepAlive:uinteger:300' \
'IdleTimeout:uinteger:0' \ 'IdleTimeout:uinteger:0' \
'MaxAuthTries:uinteger:3' \ 'MaxAuthTries:uinteger:3' \
'RecvWindowSize:uinteger:0' \
'mdns:bool:1' 'mdns:bool:1'
} }
@ -50,7 +51,7 @@ dropbear_instance()
local PasswordAuth enable Interface GatewayPorts \ local PasswordAuth enable Interface GatewayPorts \
RootPasswordAuth RootLogin rsakeyfile \ RootPasswordAuth RootLogin rsakeyfile \
BannerFile Port SSHKeepAlive IdleTimeout \ BannerFile Port SSHKeepAlive IdleTimeout \
MaxAuthTries mdns ipaddrs MaxAuthTries RecvWindowSize mdns ipaddrs
validate_section_dropbear "${1}" || { validate_section_dropbear "${1}" || {
echo "validation failed" echo "validation failed"
@ -80,6 +81,8 @@ dropbear_instance()
[ "${IdleTimeout}" -ne 0 ] && procd_append_param command -I "${IdleTimeout}" [ "${IdleTimeout}" -ne 0 ] && procd_append_param command -I "${IdleTimeout}"
[ "${SSHKeepAlive}" -ne 0 ] && procd_append_param command -K "${SSHKeepAlive}" [ "${SSHKeepAlive}" -ne 0 ] && procd_append_param command -K "${SSHKeepAlive}"
[ "${MaxAuthTries}" -ne 0 ] && procd_append_param command -T "${MaxAuthTries}" [ "${MaxAuthTries}" -ne 0 ] && procd_append_param command -T "${MaxAuthTries}"
[ "${RecvWindowSize}" -gt 0 -a "${RecvWindowSize}" -le 1048576 ] && \
procd_append_param command -W "${RecvWindowSize}"
[ "${mdns}" -ne 0 ] && procd_add_mdns "ssh" "tcp" "$Port" "daemon=dropbear" [ "${mdns}" -ne 0 ] && procd_add_mdns "ssh" "tcp" "$Port" "daemon=dropbear"
procd_set_param respawn procd_set_param respawn
procd_close_instance procd_close_instance

Loading…
Cancel
Save