Rendez-vous sur Arrakis

C'est lorsque nous croyons savoir quelque chose qu'il faut justement réfléchir un peu plus profondément. F. Herbert

Trouver le miroir OpenBSD le plus rapide pour vous

Il y a pléthore de miroir OpenBSD disponibles, il faut choisir dans la liste.
Jusqu'à présent, je me contentait de regarder l'emplacement géographique pour savoir quoi mettre dans le fichier /etc/installurl afin d'installer les paquets facilement.
Malheureusement, je trouvais que ça manquait un peu de précision.

Vous me connaissez, qu'à cela ne tienne, j'ai fait un script qui s'appelle ffom : find fast openbsd mirror
Ce qu'il fait :

Je ne doute pas qu'on puisse faire mieux, mais ça marche bien pour l'instant :)

Vous pourrez trouver ce script ci-dessous ou :

#!/bin/sh
 # ffom : find fast openbsd mirror
 # Auteur :      thuban <thuban@yeuxdelibad.net>
 # Improved by vincentdelft
 # licence :     MIT
 
 # Description : cherche le miroir OpenBSD le plus rapide
 # Depends : curl
 
 t=$(mktemp)
 MIRRORS="$(curl -s https://www.openbsd.org/ftp.html | grep -Eo "(https?|ftp)://.*/pub/OpenBSD/" |uniq)"
 
 NB=$(echo $MIRRORS | wc -w | tr -d ' ')
 COUNT=1
 
 end() {
    clear 
    echo 'RESULTS:'
    echo '--------' 
    sort -g $t 
    rm $t
    exit
 }
 
 trap end INT
 echo "Hit ctrl-c to stop and see results"
 
 for URL in $MIRRORS; do
    result=$(curl --silent --output /dev/null --max-time 5 --write-out "%{time_total}-%{time_pretransfer}" "$URL")
    time=$(echo ${result} | bc)
    echo "...tested $time $URL [${COUNT}/${NB}]" 
    echo "$time : $URL" >> $t
    COUNT=$(($COUNT + 1))
 done 
 
 end
 

Voici le classement pour moi :

0.170478 : http://ftp2.fr.openbsd.org/pub/OpenBSD/
 0.176536 : http://mirror.ox.ac.uk/pub/OpenBSD/
 0.202198 : http://mirror.exonetric.net/pub/OpenBSD/
 0.203528 : http://ftp.man.poznan.pl/pub/OpenBSD/
 0.206931 : http://www.obsd.si/pub/OpenBSD/
 0.300705 : http://ftp.aso.ee/pub/OpenBSD/
 0.308147 : http://mirror.switch.ch/ftp/pub/OpenBSD/
 0.325268 : http://openbsd.mirrors.pair.com/pub/OpenBSD/
 0.357502 : https://ftp.hostserver.de/pub/OpenBSD/
 0.369432 : https://mirrors.ircam.fr/pub/OpenBSD/
 0.380675 : https://anorien.csc.warwick.ac.uk/pub/OpenBSD/
 0.384045 : http://mirrors.mit.edu/pub/OpenBSD/
 0.390400 : https://www.mirrorservice.org/pub/OpenBSD/
 0.392840 : https://mirror.hs-esslingen.de/pub/OpenBSD/
 0.407639 : http://mirrors.gigenet.com/pub/OpenBSD/
 0.409608 : https://ftp2.eu.openbsd.org/pub/OpenBSD/
 0.430520 : https://mirror.bytemark.co.uk/pub/OpenBSD/
 0.431837 : https://ftp.spline.de/pub/OpenBSD/
 0.450512 : https://mirrors.dotsrc.org/pub/OpenBSD/
 0.465088 : https://fastly.cdn.openbsd.org/pub/OpenBSD/
 0.465551 : http://piotrkosoft.net/pub/OpenBSD/
 0.474384 : https://mirrors.dalenys.com/pub/OpenBSD/
 0.514941 : https://ftp.cc.uoc.gr/pub/OpenBSD/
 0.522097 : https://ftp.nluug.nl/pub/OpenBSD/
 0.549315 : http://mirrors.unb.br/pub/OpenBSD/
 0.574759 : https://openbsd.ipacct.com/pub/OpenBSD/
 0.596792 : https://ftp.bit.nl/pub/OpenBSD/
 0.601835 : https://openbsd.delfic.org/pub/OpenBSD/
 0.614496 : https://mirror.litnet.lt/pub/OpenBSD/
 0.632571 : https://mirrors.pidginhost.com/pub/OpenBSD/
 0.647992 : https://openbsd.mirror.netelligent.ca/pub/OpenBSD/
 0.658851 : http://ftp.jaist.ac.jp/pub/OpenBSD/
 0.691112 : https://ftp.fau.de/pub/OpenBSD/
 0.695468 : https://mirror.csclub.uwaterloo.ca/pub/OpenBSD/
 0.699224 : https://mirrors.nav.ro/pub/OpenBSD/
 0.715067 : ftp://mirror.exonetric.net/pub/OpenBSD/
 0.717398 : http://mirror.rise.ph/pub/OpenBSD/
 0.731446 : https://openbsd.cs.toronto.edu/pub/OpenBSD/
 0.739496 : ftp://mirrors.ircam.fr/pub/OpenBSD/
 0.767239 : https://ftp.fsn.hu/pub/OpenBSD/
 0.775231 : https://openbsd.mirror.garr.it/pub/OpenBSD/
 0.796890 : https://ftp4.usa.openbsd.org/pub/OpenBSD/
 0.838188 : http://kartolo.sby.datautama.net.id/pub/OpenBSD/
 0.843364 : https://ftp.eu.openbsd.org/pub/OpenBSD/
 0.867719 : https://ftp5.usa.openbsd.org/pub/OpenBSD/
 0.872131 : ftp://ftp.bytemine.net/pub/OpenBSD/
 0.873076 : ftp://ftp.bit.nl/pub/OpenBSD/
 0.876426 : https://ftp.halifax.rwth-aachen.de/pub/OpenBSD/
 0.906848 : https://ftp.heanet.ie/pub/OpenBSD/
 0.910614 : ftp://mirror.switch.ch/pub/OpenBSD/
 0.917422 : ftp://ftp.mirrorservice.org/pub/OpenBSD/
 0.951280 : https://ftp.OpenBSD.org/pub/OpenBSD/
 0.992542 : https://mirror.esc7.net/pub/OpenBSD/
 0.997968 : https://mirrors.ucr.ac.cr/pub/OpenBSD/
 1.002347 : ftp://ftp.nluug.nl/pub/OpenBSD/
 1.004686 : https://ftp3.usa.openbsd.org/pub/OpenBSD/
 1.018899 : https://mirrors.sonic.net/pub/OpenBSD/
 1.028484 : ftp://mirror.hs-esslingen.de/pub/OpenBSD/
 1.047536 : ftp://mirror.ox.ac.uk/pub/OpenBSD/
 1.072567 : ftp://ftp.irisa.fr/pub/OpenBSD/
 1.075051 : https://cloudflare.cdn.openbsd.org/pub/OpenBSD/
 1.146726 : ftp://ftp.man.poznan.pl/pub/OpenBSD/
 1.156617 : https://ftp.bytemine.net/pub/OpenBSD/
 1.220939 : https://openbsd.c3sl.ufpr.br/pub/OpenBSD/
 1.225577 : ftp://ftp.piotrkosoft.net/pub/OpenBSD/
 1.228718 : ftp://ftp.icm.edu.pl/pub/OpenBSD/
 1.261707 : ftp://mirror.bytemark.co.uk/pub/OpenBSD/
 1.276578 : ftp://ftp2.eu.openbsd.org/pub/OpenBSD/
 1.286102 : https://mirror.vdms.io/pub/OpenBSD/
 1.289844 : ftp://ftp.heanet.ie/pub/OpenBSD/
 1.290457 : ftp://ftp.ulak.net.tr/pub/OpenBSD/
 1.298279 : ftp://mirror.yandex.ru/pub/OpenBSD/
 1.308601 : https://mirror.leaseweb.com/pub/OpenBSD/
 1.320563 : ftp://ftp.hostserver.de/pub/OpenBSD/
 1.328281 : https://openbsd.mirror.constant.com/pub/OpenBSD/
 1.353299 : https://openbsd.hk/pub/OpenBSD/
 1.384652 : ftp://mirrors.dalenys.com/pub/OpenBSD/
 1.408751 : ftp://mirrors.pidginhost.com/pub/OpenBSD/
 1.462666 : ftp://ftp.spline.de/pub/OpenBSD/
 1.510367 : ftp://ftp.aso.ee/pub/OpenBSD/
 1.515511 : ftp://ftp.eu.openbsd.org/pub/OpenBSD/
 1.582234 : ftp://mirror.one.com/pub/OpenBSD/
 1.629271 : ftp://ftp.cc.uoc.gr/pub/OpenBSD/
 1.643345 : ftp://openbsd.ipacct.com/pub/OpenBSD/
 1.765213 : https://mirrors.syringanetworks.net/pub/OpenBSD/
 1.799737 : ftp://mirrors.mit.edu/pub/OpenBSD/
 1.860721 : ftp://mirror.esc7.net/pub/OpenBSD/
 1.954544 : http://mirror.internode.on.net/pub/OpenBSD/
 1.984793 : https://mirror.one.com/pub/OpenBSD/
 1.995199 : ftp://mirror.csclub.uwaterloo.ca/pub/OpenBSD/
 2.006020 : ftp://ftp.fsn.hu/pub/OpenBSD/
 2.007276 : ftp://ftp2.fr.openbsd.org/pub/OpenBSD/
 2.013689 : ftp://ftp4.usa.openbsd.org/pub/OpenBSD/
 2.025392 : ftp://ftp5.usa.openbsd.org/pub/OpenBSD/
 2.028912 : ftp://mirror.litnet.lt/pub/OpenBSD/
 2.268570 : ftp://ftp.obsd.si/pub/OpenBSD/
 2.299880 : ftp://openbsd.cs.toronto.edu/pub/OpenBSD/
 2.365331 : ftp://mirrors.dotsrc.org/pub/OpenBSD/
 2.416547 : https://ftp.icm.edu.pl/pub/OpenBSD/
 2.516440 : ftp://mirrors.sonic.net/pub/OpenBSD/
 2.528243 : ftp://ftp3.usa.openbsd.org/pub/OpenBSD/
 2.533396 : https://mirror.aarnet.edu.au/pub/OpenBSD/
 2.772639 : ftp://mirrors.syringanetworks.net/pub/OpenBSD/
 3.161285 : ftp://openbsd.c3sl.ufpr.br/pub/OpenBSD/
 3.478581 : ftp://mirrors.unb.br/pub/OpenBSD/
 3.589945 : https://mirror.yandex.ru/pub/OpenBSD/
 3.689257 : https://ftp.rnl.tecnico.ulisboa.pt/pub/OpenBSD/
 3.760751 : ftp://ftp.jaist.ac.jp/pub/OpenBSD/
 3.962318 : ftp://mirror.rise.ph/pub/OpenBSD/
 4.074385 : https://ftp.yzu.edu.tw/pub/OpenBSD/
 4.943132 : ftp://ftp.yzu.edu.tw/pub/OpenBSD/
 5.158715 : ftp://mirror.internode.on.net/pub/OpenBSD/
 6.345436 : https://ftp.fr.openbsd.org/pub/OpenBSD/
 6.390462 : ftp://anorien.csc.warwick.ac.uk/pub/OpenBSD/
 14.369035 : https://www.ftp.ne.jp/pub/OpenBSD/
 18.108227 : ftp://ftp.kddilabs.jp/pub/OpenBSD/
 

Ces tests seraient à réaliser un certain nombre de fois pour être plus précis.
Tiens, un version javascript de ce truc serait pas mal… AJAX risque de bloquer les requêtes cross-domain, donc ça dépasse un peu mon niveau… À bon entendeur ;)

le 14/03/2018 à 15:35:36, John Doe a dit :

6.345436 : https://ftp.fr.openbsd.org/pub/OpenBSD/

WTF ?

le 14/03/2018 à 16:02:20, thuban a dit :

@John Doe : eh oui, ça fait beaucoup pour le pauvre petit serveur français peut-être?
Mais quand on a fait un mirroir sur obsd4a.net, on nous a dit qu'il y en avait assez en France… Si on est plusieurs à faire remonter la latence, ça bougera peut-être?

le 17/03/2018 à 11:07:05, Vincent a dit :

J'adore la simplicité de ce script :-).
Par contre en prenant “time_total” comme référence le résultat est pollué par la performance du DNS. Par exemple il se peut qu'un serveur soit dans un DNS cache et pas un autre. Ça peut peut fausser le résultat.
Je propose donc de faire le classement sur base du temps lié au download. Pour ce faire il faut sous-traire time_pretransfer à time_total.
Voici le diff de la modification.
Pour vous en convaincre prenez les 5 meilleurs sites sans la modif et avec la modif, si vous êtes derrière un DNS caching (ubound), le classement est fort différent.

DIFF:
 24c24
 < trap end 2
 ---
 > trap end INT
 28,30c28,29
 < result=$(curl --silent --output /dev/null --max-time 5 --write-out "%{time_total}-%{time_pretransfer}" "$URL")
 < time=$(echo $result | bc)
 < echo "...tested $time $URL [${COUNT}/${NB}]"
 ---
 > echo "...testing $URL [${COUNT}/${NB}]"
 > time=$(curl --silent --output /dev/null --max-time 30 --write-out %{time_total} "$URL")

le 17/03/2018 à 19:59:21, thuban a dit :

@Vincent : Utilisant unbound comme cache, après plusieurs essais je n'ai plus le souci DNS, mais tout de même.
Ta proposition est très intéressante (bien cool le coup de “bc” ;) ).
Du coup, je te la pique :)

le 17/03/2018 à 21:35:00, Mimoza a dit :

Petite amélioration possible : Vérifier que «curl» est bien présent sur la machine car par défaut il ne l'est pas dans Obsd. Du coup quand on lance le script il ne sort que l'entête «résultat» sans plus de précision. Heureusement que en remontant un peut dans la console on voit le message «./test_mirroir.sh[11]: curl: not found»

le 18/03/2018 à 09:58:24, thuban a dit :

@Mimoza : curl est précisé dans les dépendances du script, mais pour 3 petites lignes en plus indiquant qu'il faut curl, pourquoi pas ;)

le 18/03/2018 à 10:54:47, Vincent a dit :

Je propose un changement leger (utile ?) qui précise quel curl on utilise.

Finallement grace à ce petit script je gagne 10 bonnes minutes lors d'un pkg_add -uv sur ma machine “current”
Simplement, le site que j'utilisais était loin d'etre le plus rapide.

Maintenant faudra voir à l'usage si le nouveau site de download que j'utilise sera bien synchro entre les ports et le kernel.

Pour moi le plus rapide est: https://fastly.cdn.openbsd.org/pub/OpenBSD/ (San Francisco ?? pas le plus proche geographiquement)

e5450:~/bin$ diff ffom.sh ffom.sh_orig
4c4
< # Improved by: vincent.delft@gmail.com

> # Improved by vincentdelft
10,12c10,11
< CURL=$(which curl)
< if [ ! $CURL ]; then
< echo “You need curl to use $0”

> if [ -z “$(whereis curl)” ]; then
> echo “You need curl to use ffom”
15d13
< echo “We use $CURL”
18c16
< MIRRORS=“$($CURL -s https://www.openbsd.org/ftp.html | grep -Eo ”(https?|ftp)://.*/pub/OpenBSD/“ |uniq)”

> MIRRORS=“$(curl -s https://www.openbsd.org/ftp.html | grep -Eo ”(https?|ftp)://.*/pub/OpenBSD/“ |uniq)”
36c34
< result=$($CURL –silent –output /dev/null –max-time 5 –write-out “%{time_total}-%{time_pretransfer}” “$URL”)

> result=$(curl –silent –output /dev/null –max-time 5 –write-out “%{time_total}-%{time_pretransfer}” “$URL”)

le 18/03/2018 à 11:59:19, PengouinPdt a dit :

Le partage est d'autant plus intéressant que tu as des retours constructifs, entre Mimoza, et vincent…
Belles initiatives ;)

le 18/03/2018 à 12:33:43, thuban a dit :

@Vincent : J'avais déjà fait l'ajout d'un avertissement, moins élaboré que le tiens cela dit :)
En effet ça fait gagner pas mal de temps.
À noter que fatsly.cdn est un “CDN” justement, donc avec des serveurs répartis un peu partout.
Moi, le miroir le plus rapide, c'est celui de l'ircam (normal, à Nantes…)

@PengouinPdt : Et toi, c'est lequel le plus rapide?

J'hésite à présenter le script sur @misc…

le 18/03/2018 à 15:08:13, Vincent a dit :

Pour ma part, le script manque encore de précision. En effet, le risque d'avoir un “mauvais” delta entre les ports et le kernel est loin d'etre nulle. Je lis une critique sur le mirror ftp.fr.openbsd.org car visiblement lent. Mais d'un autre coté la synchro est quasi irreprocheable (depuis +-2 ans que je suis en “current”)

Peut etre utiliser ces info http://spacehopper.org/mirmon/ pour améliorer le choix de la liste initiale (avant mesure de perf).

le 18/03/2018 à 15:17:38, thuban a dit :

@Vincent : Il est certain que les exigences sur le serveur ne sont pas les même selon si on est en -current ou en -stable/-release