Δύο εκτελέσεις, ένα τούνελ, και οι αριθμοί διαφέρουν κατά τρεις φορές. Το τούνελ δεν άλλαξε ανάμεσά τους. Αυτό που άλλαξε είναι η μέτρηση: ένας ιστότοπος δοκιμής που επιλέγει διακομιστή με βάση την φαινομενική σας τοποθεσία, ένα πλήθος ροών που καθορίζει αν μία αργή εκκίνηση ή έξι γεμίζουν τον σωλήνα, και μια διάρκεια αρκετά σύντομη ώστε να τελειώσει πριν η διαδρομή αρχίσει καν να χρησιμοποιείται σωστά. Οι δοκιμές ταχύτητας δεν είναι λάθος, αλλά απαντούν σε στενότερο ερώτημα από εκείνο που τους θέτει ο κόσμος.

Μια νέα διεύθυνση εξόδου αλλάζει τον προορισμό της δοκιμής

Οι περισσότεροι ιστότοποι δοκιμής επιλέγουν αυτόματα διακομιστή μέτρησης και τον επιλέγουν εν μέρει κοιτάζοντας από πού φαίνεται να έρχεται η σύνδεσή σας. Ενεργοποιήστε το τούνελ και η φαινομενική χώρα σας αλλάζει, άρα αλλάζει ο επιλεγμένος διακομιστής, και η σύγκριση τώρα καλύπτει δύο διαφορετικές διαδρομές προς δύο διαφορετικούς κεντρικούς υπολογιστές.

Το αποτέλεσμα δεν είναι καθόλου μέτρηση VPN. Είναι μέτρηση της διαδρομής σας προς έναν διακομιστή που δεν επιλέξατε, και η διαφορά ανάμεσα στις δύο εκτελέσεις μπορεί να κυριαρχείται από το peering εκείνου του διακομιστή παρά από οτιδήποτε έκανε το τούνελ.

Καρφιτσώστε τον προορισμό πριν αλλάξετε οτιδήποτε άλλο. Κάθε αξιόπιστο εργαλείο σάς αφήνει να επιλέξετε διακομιστή ρητά, και όταν δεν το κάνει, η σελίδα αποτελεσμάτων συνήθως ονομάζει αυτόν που χρησιμοποίησε, που αρκεί για να προσέξετε ότι οι δύο εκτελέσεις δεν είναι συγκρίσιμες. Επιβεβαιώστε τι είδε ο ιστότοπος πριν εμπιστευτείτε την επιλογή του:

curl -sS https://ipinfo.io/json | grep -E '"ip"|"org"|"country"'

Αν η χώρα άλλαξε ανάμεσα στις εκτελέσεις, άλλαξε και ό,τι επέλεξε μετά η δοκιμή. Σημειώστε την παρατηρούμενη έξοδο δίπλα σε κάθε αποτέλεσμα και η σύγχυση ως επί το πλείστον εξαφανίζεται.

Η αργή εκκίνηση τελειώνει μετά το τέλος των περισσότερων σύντομων δοκιμών

Μια σύνδεση TCP δεν ξεκινά με τον ρυθμό του συνδέσμου. Ξεκινά με ένα μικρό παράθυρο συμφόρησης, το διπλασιάζει περίπου σε κάθε κύκλο και φτάνει στη χωρητικότητα της διαδρομής μόνο μετά από αρκετούς κύκλους. Μια δοκιμή δέκα δευτερολέπτων σε διαδρομή με υψηλή καθυστέρηση μπορεί να περάσει σημαντικό μέρος της ζωής της σε αυτή την ανάβαση.

Γι' αυτό ένα τούνελ με μεγαλύτερη καθυστέρηση τα πάει χειρότερα σε μια σύντομη δοκιμή απ' όσο του αξίζει, και γι' αυτό μια μεγαλύτερη εκτέλεση συχνά αναφέρει μεγαλύτερο αριθμό χωρίς καμία αλλαγή ρυθμίσεων. Το πλαίσιο ρυθμαπόδοσης RFC 6349 το αντιμετωπίζει ρητά, και γι' αυτό οι σοβαρές μετρήσεις διαρκούν αρκετά για να φτάσουν σε σταθερή κατάσταση. Μια εκτέλεση πέντε δευτερολέπτων σε δορυφορική διαδρομή μετρά τον επιταχυντή, όχι τον δρόμο.

Κοιτάξτε τις φάσεις της σύνδεσης αντί να εμπιστευτείτε έναν μόνο αριθμό. Το Curl αναφέρει κάθε στάδιο ξεχωριστά, ώστε να δείτε αν ο χρόνος πηγαίνει στη χειραψία, στην ανάβαση ή στη μεταφορά:

curl -sS -o /dev/null -w 'dns=%{time_namelookup} tcp=%{time_connect} tls=%{time_appconnect} total=%{time_total} bytes/s=%{speed_download}\n' \
  https://mirror.example.net/testfile.bin

Εκτελέστε το δύο φορές στη σειρά προς τον ίδιο προορισμό. Αν η δεύτερη εκτέλεση είναι πολύ ταχύτερη, μετρούσατε την ανάβαση, όχι τη διαδρομή, και κάθε σύγκριση που χρησιμοποίησε μόνο την πρώτη είναι ύποπτη.

Μία ροή και έξι ροές μετρούν διαφορετικά πράγματα

Μία ροή TCP περιορίζεται από το παράθυρο που μπορεί να κρατήσει εν πτήσει, που είναι περίπου ο χρόνος κύκλου επί τον ρυθμό. Σε μια μακριά διαδρομή αυτό το γινόμενο υπερβαίνει ό,τι θα χρησιμοποιήσει μία ροή, οπότε μία λήψη υποδηλώνει λιγότερη χωρητικότητα απ' όση υπάρχει. Έξι παράλληλες ροές γεμίζουν το κενό και δίνουν μεγαλύτερο αριθμό.

iperf3 -c speed.example.net -t 20
iperf3 -c speed.example.net -t 20 -P 6
mtr -rwc 50 speed.example.net

Και οι δύο αριθμοί είναι αληθινοί. Ο αριθμός της μίας ροής λέει τι θα κάνει μία λήψη, που είναι αυτό που συνήθως παίρνει μια καρτέλα περιηγητή. Ο παράλληλος αριθμός λέει τι μπορεί να μεταφέρει η διαδρομή συνολικά, που μπορεί να χρησιμοποιήσει ένα torrent ή μια λήψη σε τμήματα. Το να παραθέτεις το ένα σαν να είναι το άλλο είναι ο τρόπος με τον οποίο ένα υγιές τούνελ αντικαθίσταται χωρίς λόγο.

Η σύγκριση ενός παράλληλου αποτελέσματος με αποτέλεσμα μίας ροής είναι ο πιο συνηθισμένος τρόπος με τον οποίο ο κόσμος καταλήγει ότι το VPN μείωσε τη ταχύτητά του στο μισό. Ταιριάξτε τη μέθοδο και μετά συγκρίνετε. Το ίχνος στην τρίτη εντολή προσθέτει το πλαίσιο που λείπει: μια διαδρομή με υψηλό jitter θα δίνει ασυνεπή αποτελέσματα και στις δύο λειτουργίες, και κανένα πλήθος ροών δεν το διορθώνει.

Η κρυπτογράφηση κοστίζει χρόνο επεξεργαστή, η ενθυλάκωση κοστίζει byte

Δύο μηχανισμοί τρέχουν σε κάθε πακέτο ανεξάρτητα από την ταχύτητα του συνδέσμου. Η κρυπτογράφηση καταναλώνει CPU ανά byte, και η ενθυλάκωση προσθέτει byte κεφαλίδας που ο σύνδεσμος πρέπει να μεταφέρει. Και τα δύο εμφανίζονται ως οροφή, και έχουν διαφορετικά συμπτώματα.

Η οροφή της CPU εμφανίζεται ως οροπέδιο: η ρυθμαπόδοση σταματά να ανεβαίνει όσες ροές κι αν προσθέσετε, και ο επεξεργαστής του μηχανήματος είναι απασχολημένος ενώ ο σύνδεσμος όχι. Σε έναν μικρό δρομολογητή ή ένα τηλέφωνο αυτό είναι συχνά το πραγματικό όριο, και γι' αυτό μια γρήγορη γραμμή μπορεί να δώσει ακόμη ένα μέτριο τούνελ.

Το κόστος σε byte είναι μικρότερο αλλά σταθερό. Οι επιπλέον κεφαλίδες σημαίνουν λιγότερο ωφέλιμο φορτίο ανά πακέτο, και σε διαδρομή με σταθερή μέγιστη μονάδα μεταφοράς μπορούν επίσης να προκαλέσουν κατακερματισμό ή μαύρη τρύπα που εμφανίζεται ως κόλλημα στις μεγάλες μεταφορές παρά ως αργός μέσος όρος.

ObservationLikely mechanismWhat to measure
Throughput flat as streams increaseCPU per packet on one corePer-core utilisation during the test
Fast small transfers, stalled large onesMTU and fragmentationPayload size at which it breaks
Good average, unusable callsQueueing delay behind a full bufferLatency under load

Αυτά τα τρία συγχέονται συχνά γιατί ο κόσμος τα περιγράφει όλα ως «το VPN είναι αργό». Μόνο το πρώτο ανταποκρίνεται σε μεγαλύτερο μηχάνημα, μόνο το δεύτερο ανταποκρίνεται σε μικρότερο MTU, και μόνο το τρίτο ανταποκρίνεται στη διαχείριση ουρών.

Βάλτε τη μέθοδο στο αρχείο

Ένα αποτέλεσμα που αξίζει να κρατήσετε ονομάζει τη συσκευή, το δίκτυο πρόσβασης, την έξοδο, τον διακομιστή μέτρησης, την κατεύθυνση, το πλήθος ροών και τη διάρκεια. Χωρίς αυτά δύο αριθμοί δεν συγκρίνονται, και ένα δελτίο με έναν αριθμό είναι στην πραγματικότητα μια διάθεση.

Κρατήστε και τις κακές εκτελέσεις. Μια σειρά όπου μία έξοδος προκαλεί κόλλημα κάθε φορά είναι πολύ πιο κατατοπιστική από έναν μέσο όρο, και τα κολλήματα είναι ακριβώς αυτό που κρύβουν οι μέσοι όροι.

Μετά δοκιμάστε αυτό που πραγματικά σας νοιάζει. Αν στόχος είναι μια μεγάλη λήψη, κατεβάστε το αρχείο. Αν στόχος είναι μια κλήση, μετρήστε την καθυστέρηση υπό φόρτο αντί τη ρυθμαπόδοση σε αδράνεια, γιατί ένα τούνελ μπορεί να σκοράρει καλά σε δοκιμή ταχύτητας και παρ' όλα αυτά να κάνει κάθε συνάντηση μη ακουστή.

Σχετικά άρθρα