Test di throughput · Test di latenza su UDP

Peer di test

Un peer di test è un piccolo programma che esegui tu stesso su un computer connesso alla stessa rete del tuo iPhone o iPad. Risponde al protocollo di test proprio di Linkalyst, così le due estremità possono misurare il collegamento tra loro.

Non è un servizio di misurazione della velocità di Internet, né iperf o un altro strumento esistente. Un sito web o un normale servizio TCP non può rispondere a questo protocollo.

Quali strumenti ne hanno bisogno

Test di throughput
throughput_peer.py · TCP 5202
Test di latenza in modalità UDP
echo_peer.py · UDP 9999

Queste sono le porte predefinite, ed entrambe si possono cambiare quando avvii un peer. Tutti gli altri strumenti, e «Test di latenza» in modalità ping, funzionano senza un peer di test.

Download

Ogni peer è un singolo file Python che usa solo la libreria standard. Sul computer serve Python 3.9 o versioni successive, e nient’altro. Su un Mac senza Python, il primo comando python3 propone di installare gli strumenti per sviluppatori da riga di comando di Apple, che lo includono.

throughput_peer.py 4.8 KB

Per «Test di throughput». Invia o riceve dati sintetici su una sola connessione TCP.

SHA-256
6f3cf1a7bb8b076d8df0ddf77eb642cb8bdfc4a626e470b0231a8e2bd1d9643c
Scarica

echo_peer.py 7.8 KB

Per «Test di latenza» in modalità UDP. Rimanda indietro i pacchetti che riportano il suo codice di accesso.

SHA-256
d92e20436907a11897c9b14086360d9a4d92586c8c05250d5398e19a6bebfab4
Scarica

Per verificare un file scaricato, confronta lo SHA-256 indicato sopra con l’output di shasum -a 256 echo_peer.py su macOS o Linux, oppure di certutil -hashfile echo_peer.py SHA256 su Windows.

Entrambi i programmi sono forniti così come sono, ai sensi della sezione 5 dei Termini di servizio.

Prima di eseguirne uno

  • Esegui un peer solo su una rete privata. Entrambi inviano testo in chiaro e nessuno dei due è cifrato, e il peer di throughput non ha alcun codice di accesso. Non rendere le loro porte raggiungibili da Internet con il port forwarding.
  • Finché non gli assegni un indirizzo, un peer resta in ascolto solo sul computer stesso (127.0.0.1), quindi il telefono non può raggiungerlo finché non lo fai. Il peer UDP rifiuta gli indirizzi pubblici e wildcard, e risponde solo ai pacchetti provenienti da indirizzi privati.
  • Il peer di throughput invia e riceve dati sintetici. Non legge file, non conserva ciò che riceve e non inoltra nulla.
  • Avvia il peer sull’indirizzo dell’interfaccia che vuoi misurare. Con un computer collegato via cavo, nel risultato non entra un secondo tratto wireless.

Come eseguirlo

  1. 01

    Trova l’indirizzo del computer

    Usa l’indirizzo IP dell’interfaccia connessa alla stessa rete del telefono.

    macOS · il Wi-Fi di solito è en0
    ipconfig getifaddr en0
    Windows · cerca «Indirizzo IPv4»
    ipconfig
    Linux
    hostname -I
  2. 02

    Avvia il peer su quell’indirizzo

    Apri un terminale nella cartella in cui hai salvato il file. Gli esempi usano 192.168.1.20: sostituiscilo con l’indirizzo del tuo computer. Su Windows, digita py invece di python3.

    Test di throughput
    python3 throughput_peer.py --host 192.168.1.20
    Output
    Listening on 192.168.1.20:5202 (single connection; 64 MiB / 60 s maximum)
    Test di latenza su UDP
    python3 echo_peer.py --bind 192.168.1.20
    Output
    Linkalyst UDP echo peer: 192.168.1.20:9999
    Access code: 3f9c2a61d04b7e85
    Private networks only. Do not forward this port from the Internet; the access code is not encryption. Press Ctrl+C to stop.
  3. 03

    Consenti le connessioni in entrata

    Se un firewall chiede se Python può accettare connessioni in entrata, consentilo sulla rete privata. Non serve disattivare il firewall.

  4. 04

    Inserisci l’indirizzo in Linkalyst

    Per «Test di throughput», inserisci in «Peer di test» l’indirizzo e la porta mostrati dal peer. Per «Test di latenza» in modalità UDP, aggiungi una destinazione UDP con quell’indirizzo e quella porta, e inserisci il codice di accesso di 16 caratteri mostrato dal peer UDP.

  5. 05

    Tieni attivo il computer, poi arresta il peer

    Il computer deve restare attivo per tutta la durata del test; su un Mac, avviare il peer con caffeinate -i python3 … impedisce lo stop per inattività. Premi Ctrl+C per arrestare il peer quando hai finito.

Opzioni

throughput_peer.py

--host ADDRESSIndirizzo numerico su cui restare in ascolto. Valore predefinito: 127.0.0.1, raggiungibile solo dal computer stesso.
--port PORTPorta TCP. Valore predefinito: 5202.
--onceTermina dopo una connessione.

echo_peer.py

--bind ADDRESSIndirizzo numerico privato, di loopback o link-local su cui restare in ascolto. Valore predefinito: 127.0.0.1.
--port PORTPorta UDP. Valore predefinito: 9999.
--token CODEUsa questo codice di accesso di 16 caratteri invece di uno casuale.

Esegui uno dei due file con --help per l’elenco completo. Le opzioni di iniezione di guasti del peer UDP, come --drop-every, servono a testare Linkalyst stesso e rendono i risultati non rappresentativi.

Se l’app non riesce a raggiungere il peer

Ogni richiesta va in timeout, oppure la connessione non riesce

Verifica che il telefono e il computer siano sulla stessa rete, e non su una rete ospiti che isola i dispositivi tra loro; che l’indirizzo nell’app sia quello mostrato dal peer; e che il firewall consenta Python.

Il peer UDP termina con --bind must be a numeric private/loopback/link-local address

Assegnagli un indirizzo IPv4 o IPv6 privato che appartenga al computer, scritto in forma numerica. Nomi host, 0.0.0.0 e indirizzi pubblici vengono rifiutati.

Address already in use

Un altro peer o programma sta usando la porta. Arrestalo, oppure avvia il peer con --port e inserisci la stessa porta nell’app.

Il peer UDP è in esecuzione ma non torna indietro nulla

Controlla il codice di accesso. Il peer ignora i pacchetti senza il codice che ha mostrato, e l’app conserva il codice solo finché è in esecuzione, quindi reinseriscilo dopo che l’app è stata chiusa.