HTTPS performance issue with opkg (Was: [PATCH 3/3] build: switch VERSION_REPO to HTTPS)

Baptiste Jonglez baptiste at bitsofnetworks.org
Tue Sep 15 02:49:51 EDT 2020


On 27-08-20, Paul Spooren wrote:
> The variable VERSION_REPO is used by opkg to download package(list)s.
> Now that the default installation support encrypted HTTP opkg should
> make use of it.

I wonder what is the performance impact of this?  Opkg forks a new wget
process to download each package, so the HTTPS connection is never reused.

Running a simple "time make image
PROFILE=mikrotik_routerboard-921gs-5hpacd-15s" with the ath79/mikrotik
imagebuilder results in a 50% increase of running time:

- with HTTPS: 32 seconds
- with HTTP: 22 seconds

(timing for the second run is shown, and dl/ is cleaned up before each run)

The overhead might be even more significant on a device, and the download
server probably sees more load from the large number of key exchange.
Anybody got any figures?

With HTTPS, opkg would really need connection reuse.  I don't think the
current situation is acceptable for a stable release, if only to avoid
high load on the download server.

Baptiste

> Suggested-by: Petr Štetiar <ynezz at true.cz>
> Suggested-by: Baptiste Jonglez <baptiste at bitsofnetworks.org>
> Signed-off-by: Paul Spooren <mail at aparcar.org>
> ---
>  include/version.mk                 | 2 +-
>  package/base-files/image-config.in | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/include/version.mk b/include/version.mk
> index 7d3c1ad640..b7f42e13bb 100644
> --- a/include/version.mk
> +++ b/include/version.mk
> @@ -32,7 +32,7 @@ VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
>  VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),$(REVISION))
>  
>  VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
> -VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/snapshots)
> +VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/snapshots)
>  
>  VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
>  VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)
> diff --git a/package/base-files/image-config.in b/package/base-files/image-config.in
> index 4bace77db0..bfa3055cc8 100644
> --- a/package/base-files/image-config.in
> +++ b/package/base-files/image-config.in
> @@ -183,7 +183,7 @@ if VERSIONOPT
>  	config VERSION_REPO
>  		string
>  		prompt "Release repository"
> -		default "http://downloads.openwrt.org/snapshots"
> +		default "https://downloads.openwrt.org/snapshots"
>  		help
>  			This is the repository address embedded in the image, it defaults
>  			to the trunk snapshot repo; the url may contain the following placeholders:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.openwrt.org/pipermail/openwrt-devel/attachments/20200915/3aee2907/attachment.sig>


More information about the openwrt-devel mailing list