Come faccio a diagnosticare e visualizzare i tempi di ping elevati sul router wifi?


65

Sto vedendo tempi di ping irregolari e talvolta molto lunghi sul mio router wifi che è solo un salto di distanza. Il ping a 192.168.1.1volte dà tratti di latenze di 400-800 ms.

Ci sono molte cose da provare (firmware, posizionamento del router, canale AP, ecc.), Ma vorrei attaccare questo problema un po 'più metodicamente:

  • Innanzitutto, come posso visualizzare le prestazioni della mia rete?
  • Quindi, come posso confrontare le prestazioni di una determinata configurazione, in modo da poter confrontare in modo affidabile dopo aver effettuato le regolazioni?

Quale router e / o software del router di bordo stai usando se non è l'installazione di serie?
Jeff Clayton,

@JeffClayton Linksys WRT54GSv2 (vecchia scuola) con Tomato (Shibby). Utilizzato per eseguire DD-WRT ma è stato danneggiato e confuso da mantenere.
Paul Irish

1
Hai un problema reale o è puramente un problema estetico? I router WiFi non sono generalmente progettati per essere risponditori di ping super veloci, hanno davvero del lavoro da fare.
David Schwartz,

1
@DavidSchwartz dovremmo essere in grado di completare un roundtrip completo per un AP wifi in meno di 10 ms, no? Se la latenza all'interno del Wi-Fi è superiore a 500 ms, OGNI PACCHETTO estratto dal Web / Internet subisce questa latenza. È un assassino.
Paul Irish

1
@PaulIrish Tutto vero, ma questo non ha nulla a che fare con i tempi di ping. Il ping misura la somma della latenza di rete più la stessa latenza di risposta del ping. SoHo I router WiFi non sono pensati per essere efficienti risponditori di ping, quindi non è consigliabile utilizzare ping per misurare la latenza di rete.
David Schwartz,

Risposte:


78

Questa risposta serverfault ha una buona guida di alto livello su cosa fare, quindi inizia da quella. L'ultimo passo è un vero doozy: presumibilmente tu (voglio dire, io) non vuoi investire in hardware dedicato per questo ...

Di seguito sono riportati alcuni strumenti utili, prima per comprendere la salute della connettività all'interno della rete wifi locale e poi per un endpoint Internet.

Strumenti Wifi

NetSpot (per mac)

Tiene traccia degli AP WiFI locali e fornisce dati di base come SNR, Channel, Signal Strength. Può anche eseguire un'indagine di base sul sito per uno spazio fisico che indica punti di forza e interferenze. Nella modalità di rilevamento AP, puoi anche tracciare la potenza del segnale nel tempo, permettendoti di testare i posizionamenti e regolare le possibilità di interferenza. inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Wifi Speed ​​Test per Android

Molto utile. Eseguirai un semplice server Python sul tuo computer e l'app può testare alcuni scenari dandoti un feedback di velocità in tempo reale.

inserisci qui la descrizione dell'immagine

Wifi Analyzer , un'altra fantastica app Android, offre alcune preziose visualizzazioni di quali canali WiFi AP sono attivi. Potrebbe essere il miglior strumento gratuito per la scelta del canale AP senza fare molto lavoro.

iperf

Strumento ben rispettato per comprendere le prestazioni della rete locale. Hai bisogno di due caselle, una come server, una come client. È possibile impostare un numero di parametri, eseguire un test e vedere i risultati per larghezza di banda e jitter. Perferisco usandolo con la GUI di jPerf per risultati grafici e parametri di modifica.

brew install iperf
iperf -s # on server, next one on client
iperf -c 192.168.1.XXX -P 1 -i 1 -p 5001 -f m -t 60

inserisci qui la descrizione dell'immagine

Integrità della connettività Internet

mtr (ping e traceroute combinati)

Esegue il ping di tutti i tuoi hop traceroute. Fornisce dati di tendenza. Fantastico!

brew install mtr
mtr 8.8.4.4

SpeedTest-cli

La versione CLI della cosa comune ookla speedtest.net. Il responsabile del progetto dichiara che non è coerente, ma è comunque utile provare a misurare grandi differenze.

wget -O speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
chmod +x speedtest-cli
speedtest-cli --list | head # and chose a top server (sorted by distance)
speedtest-cli --server 2761 # re-use the same server

NPAD : percorso di rete e diagnosi dell'applicazione

Server diagnostico automatico per la risoluzione dei problemi relativi ai sistemi terminali e all'ultimo miglio della rete. Dopo aver eseguito una serie di test, visualizza una pagina di riepilogo dei risultati come questa . Ti consiglio di utilizzare questo link di reindirizzamento del server NPAD per trovare il server NPAD più vicino (sono tutti da capo) e di utilizzare quel nome host per i tuoi test.

  wget http://netspeed.usc.edu:8000/diag-client.c
  cc diag-client.c -o diag-client
# ./diag-client <server_name> <port> <target_RTT> <target_data_rate_in_MB/S>
  ./diag-client ps.psc.xsede.org 8001 30 5

inserisci qui la descrizione dell'immagine


I miei risultati personali:

Ho trascorso alcune ore a fare tutto ciò, provando cose diverse (passando dal firmware DD-WRT al firmware Tomato) e leggendo. Si scopre che non era un livello di rete ed era una buona vecchia interferenza RF, principalmente da Bluetooth! Avevo il mio computer, un mouse bluetooth e una tastiera a meno di 5 piedi dal router. (E il vecchio router è ancora a 2,4 Ghz dove si scontrano.)

Per questo, ho ottenuto il massimo dal Wifi Speed ​​Test per Android , eseguendolo regolarmente mentre spostavo le cose nell'appartamento. Dato che segnala aggiornamenti ogni 200 ms circa, ha comunicato chiaramente quando le interferenze lasciavano cadere i miei pacchetti.

Consiglio vivamente di leggere la guida sulle fonti comuni di interferenza di Metageek. (Fanno anche sembrare InSSIDer e altri strumenti di analisi Wifi che sembrano buoni.)

inserisci qui la descrizione dell'immagine

Uno strumento che non avevo era un misuratore di analisi dello spettro fisico. Telefoni e laptop possono rilevare solo AP Wi-Fi, ma non possono rilevare interferenze da Bluetooth o altre tecnologie basate su RF. Metageek ha alcune belle soluzioni in questo spazio ( Wi-Spy e inSSIDer Office ) e speriamo di vedere emergere più strumenti come AirShark .


Sono strumenti meravigliosi che aggiornano le mie note.
Jeff Clayton,

Un altro strumento "rapido e sporco" che ha un valore inestimabile perché il suo portatile è Wifi Analyzer per dispositivi Android.
davidgo,

Sì. Ho citato brevemente l'analizzatore WiFi; potrebbe essere lo strumento migliore per comprendere l'interferenza del canale AP, anche se nel mio caso non è stato un problema. Detto questo, è davvero ben fatto.
Paul Irish

Ottima lista, grazie. Un'altra cosa da provare sempre è vedere cosa succede senza wifi. Una volta ho avuto quello che pensavo fosse un problema wifi, ma collegando direttamente il cavo che alimentava l'AP wifi e eseguendo iPerf ha rivelato un cattivo cavo come il vero colpevole!
Ryan Dlugosz,

1
Hmmmm. È improbabile che il Bluetooth provochi il tipo di interferenza che descrivi, il solito schema di salto AFS eviterà un tipico segnale Wi-Fi a 20 MHz a 2,4 GHz. Non stavi gestendo canali a 40 Mhz, vero?
Alfwatt il

4

Come notato nel mio commento sopra: gli strumenti comunemente usati per diagnosticare i problemi Wi-Fi possono effettivamente causare questo problema. Durante la ricerca di reti Wi-Fi, la radio deve disattivare il canale, in genere indica all'AP di bufferizzare i frame in modo che possa "dormire", quindi cambia canale per la scansione.

Inoltre, iOS e OS X da quando AirDrop è stato introdotto, toglieranno la radio Wi-Fi dal canale per cercare altri servizi AirDrop e poiché Yosemite periodicamente si spegnerà dal canale per supportare il trasferimento.


1
Ottimo punto - ho notato questo problema usando InSSIDer in passato - bello avere una spiegazione per questo.
Nick,

3

Quindi ho avuto queste fluttuazioni di ping Wi-Fi anche sul router.

PING 192.168.0.1 (192.168.0.1): 56 data bytes
64 bytes from 192.168.0.1: icmp_seq=0 ttl=63 time=2.334 ms
64 bytes from 192.168.0.1: icmp_seq=1 ttl=63 time=1.813 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=63 time=2749.664 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=63 time=1748.912 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=63 time=748.162 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=63 time=1.796 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=63 time=1.806 ms
64 bytes from 192.168.0.1: icmp_seq=7 ttl=63 time=1.991 ms
64 bytes from 192.168.0.1: icmp_seq=8 ttl=63 time=1.797 ms
64 bytes from 192.168.0.1: icmp_seq=9 ttl=63 time=1.832 ms
64 bytes from 192.168.0.1: icmp_seq=10 ttl=63 time=1.713 ms
64 bytes from 192.168.0.1: icmp_seq=11 ttl=63 time=1.819 ms
64 bytes from 192.168.0.1: icmp_seq=12 ttl=63 time=1.616 ms
64 bytes from 192.168.0.1: icmp_seq=13 ttl=63 time=1.748 ms
64 bytes from 192.168.0.1: icmp_seq=14 ttl=63 time=1.677 ms
64 bytes from 192.168.0.1: icmp_seq=15 ttl=63 time=3427.213 ms
64 bytes from 192.168.0.1: icmp_seq=16 ttl=63 time=2426.371 ms
64 bytes from 192.168.0.1: icmp_seq=17 ttl=63 time=1425.634 ms
64 bytes from 192.168.0.1: icmp_seq=18 ttl=63 time=424.834 ms
64 bytes from 192.168.0.1: icmp_seq=19 ttl=63 time=1.829 ms
64 bytes from 192.168.0.1: icmp_seq=20 ttl=63 time=1.691 ms
64 bytes from 192.168.0.1: icmp_seq=21 ttl=63 time=2.038 ms
64 bytes from 192.168.0.1: icmp_seq=22 ttl=63 time=1.679 ms
^C--- 192.168.0.1 ping statistics ---
23 packets transmitted, 23 packets received, 0% packet loss
round-trip min/avg/max/stddev = 1.616/564.346/3427.213/1015.102 ms

Ho cambiato router (da TL-WR743ND a DIR-815), ho provato diversi adattatori USB Wi-Fi (principalmente TP-LINK, anche se penso di avere anche il problema con D-Link DWA-160), sono passato da 2,5 GHz a 5 GHz e setacciato i canali. Nessuna fortuna, il problema persisteva.

Fino a quando ho notato che quando eseguo un test di velocità della rete o eseguo un client bittorrent il ping va bene. Fluttua solo quando la rete è inattiva.

Potrebbe essere un problema di Windows 7 o una cosa con i miei adattatori TP-LINK, ma quando do un po 'di carico al Wi-Fi la fluttuazione svanisce e la rete funziona bene.

Finora ho realizzato un piccolo programma Rust per mantenere attiva la mia rete Wi-Fi.

// Need a constant wifi load in order not to have the ping drops.
fn wifi_load() {
  // This *might* be useful if the router suddenly supports Keep-Alive.
  // Not the case with DIR-815 though, we'll keep making new connections to it.
  let config = hyper::client::pool::Config {max_idle: 1};

  let client = hyper::client::Client::with_pool_config (config);
  loop {
    let url = "http://192.168.0.1/css/init.css";
    if let Err (err) = client.get (url) .send() {
      log! ("wifi_load] Error fetching {}: {}", url, err);
      sleep (Duration::from_secs (9));}
    sleep (Duration::from_millis (100));}} 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.