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
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
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
- 01
Trova l’indirizzo del computer
Usa l’indirizzo IP dell’interfaccia connessa alla stessa rete del telefono.
macOS · il Wi-Fi di solito è en0ipconfig getifaddr en0Windows · cerca «Indirizzo IPv4»ipconfigLinuxhostname -I - 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, digitapyinvece dipython3.Test di throughputpython3 throughput_peer.py --host 192.168.1.20OutputListening on 192.168.1.20:5202 (single connection; 64 MiB / 60 s maximum)Test di latenza su UDPpython3 echo_peer.py --bind 192.168.1.20OutputLinkalyst 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. - 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.
- 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.
- 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 ADDRESS | Indirizzo numerico su cui restare in ascolto. Valore predefinito: 127.0.0.1, raggiungibile solo dal computer stesso. |
| --port PORT | Porta TCP. Valore predefinito: 5202. |
| --once | Termina dopo una connessione. |
echo_peer.py
| --bind ADDRESS | Indirizzo numerico privato, di loopback o link-local su cui restare in ascolto. Valore predefinito: 127.0.0.1. |
| --port PORT | Porta UDP. Valore predefinito: 9999. |
| --token CODE | Usa 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.