Як діагностувати та візуалізувати високі пінг-чати для маршрутизатора wifi?


65

Я бачу нестабільні та інколи дуже довгі часи пінг-файлу до мого wifi-роутера, це лише один скачок. Пінгінг 192.168.1.1іноді дає затримки в 400-800 мс затримок.

Можна спробувати багато чого (мікропрограмне забезпечення, розміщення маршрутизатора, канал AP тощо), але я хотів би трохи більш методично атакувати цю проблему:

  • По-перше, як я можу уявити продуктивність своєї мережі?
  • Потім, як я можу порівняти продуктивність заданої конфігурації, щоб я міг надійно порівняти після внесення змін?

Яке програмне забезпечення для маршрутизатора та / або бортового маршрутизатора ви використовуєте, якщо воно не встановлено на складі?
Джефф Клейтон

@JeffClayton Linksys WRT54GSv2 (old-school), що працює з помідором (Shibby). Використовується для запуску DD-WRT, але це було помилково і заплутано в обслуговуванні.
Пол Ірландський

1
У вас є актуальна проблема чи це суто косметичне питання? Як правило, маршрутизатори WiFi не призначені для надшвидких відповідей на пінг, у них є справжня робота.
Девід Шварц

1
@DavidSchwartz ми повинні мати можливість здійснити повний переїзд до Wi-Fi AP протягом 10 мс, ні? Якщо затримка у вашому внутрішньому режимі перевищує 500 мс, то ВСІ ПАКЕТИ, які ви витягуєте з Інтернету / Інтернету, також страждають від цієї затримки. Це вбивця.
Пол Ірландський

1
@PaulIrish Все правда, але це не має нічого спільного з часом пінгу. Ping вимірює суму затримки мережі плюс саму затримку відповіді ping. Маршрутизатори SoHo WiFi не повинні бути ефективними для відповіді на пінг, тому використання ping для вимірювання затримки в мережі не рекомендується.
Девід Шварц

Відповіді:


78

Ця відповідь за замовчуванням на сервері має гарне керівництво на високому рівні щодо того, що робити - тому почніть з цього. Цей останній крок є справжнім духом: мабуть, ви (я маю на увазі, я) не хочете вкладати кошти у спеціальне обладнання для цього ...

Нижче наведено кілька хороших інструментів, спочатку для розуміння стану здоров'я підключення в локальній мережі Wi-Fi, а потім до кінцевої точки Інтернету.

Інструменти Wi-Fi

NetSpot (для Mac)

Він відстежує локальні AP-адреси WiFI та надає основні дані, такі як SNR, канал, сила сигналу. Він також може зробити базовий огляд місця для фізичного простору із зазначенням сильних сторін та перешкод. У режимі виявлення AP можна також графікувати силу сигналу з часом, що дозволяє перевірити місця розташування та коригувати можливості перешкод. введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення

Тест швидкості Wifi для Android

Дуже корисний. На вашій машині ви запустите простий сервер python, і додаток може перевірити декілька сценаріїв, що дасть вам зворотній зв'язок у режимі реального часу.

введіть тут опис зображення

Wifi Analyzer , ще одне чудове додаток для Android, має кілька цінних уявлень про те, які Wi-Fi канали AP є активними. Можливо, це буде найкращим безкоштовним інструментом для вибору каналу AP, не роблячи багато роботи.

iPerf

Добре поважається інструмент для розуміння продуктивності локальної мережі. Вам потрібно два поля, одне як сервер, а одне як клієнт. Ви можете встановити ряд параметрів, провести тест і побачити результати пропускної здатності та тремтіння. Я дозволю використовувати його з графічним інтерфейсом jPerf для графіків результатів та налаштування параметрів.

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

введіть тут опис зображення

Здоров'я до Інтернету

mtr (комбінований пінг і traceroute)

Збирає весь твій хміль. Надає дані про тенденції. Божевільний дивовижний.

brew install mtr
mtr 8.8.4.4

speedtest-cli

CLI-версія звичайної речі ookla speedtest.net. Керівник проекту заявляє, що це не є послідовним, але все ж зручно намагатися оцінити великі відмінності.

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 : Діагностика мережевого шляху та додатків

Автоматичний сервер діагностики для усунення неполадок кінцевих систем та мережевих проблем останньої милі. Після запуску акумулятора тестів надає подібну сторінку з підсумками результатів . Я рекомендую скористатися цим посиланням на переадресацію сервера NPAD, щоб знайти найближчий NPAD-сервер (вони все закінчені) та використовувати це ім'я хоста для своїх тестів.

  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

введіть тут опис зображення


Мої особисті результати:

Я витратив добрі години на все це, пробуючи різні речі (перехід з DD-WRT на прошивку Tomato) та читаючи. Виявляється, це був не мережевий шар, і це було гарне старе ВЧ-втручання, в основному від Bluetooth! У мене був комп'ютер, Bluetooth-миша та клавіатура в межах 5 футів маршрутизатора. (І старий роутер все ще на 2,4 ГГц, де вони стикаються.)

Для цього я отримав максимальну користь від тестування швидкості Wifi для Android , який регулярно запускався, коли я пересував речі в квартирі. Оскільки він повідомляє про оновлення кожні 200 м або близько того, він чітко повідомляв, коли втручання скидало мої пакети.

Я напевно рекомендую прочитати посібник із загальних джерел перешкод від Metageek. (Вони також роблять InSSIDer та інші інструменти аналізу Wi-Fi, які здаються непоганими.)

введіть тут опис зображення

Одним із інструментів у мене не був вимірювач фізичного спектру. Телефони та ноутбуки можуть виявляти лише AP-адреси Wifi, але не можуть перешкоджати перешкодам через Bluetooth або інші технології на основі РФ. Metageek має кілька приємних рішень у цьому просторі ( Wi-Spy та inSSIDer Office ), і, сподіваємось, ми бачимо, що з'явиться більше інструментів, таких як AirShark .


Це прекрасні інструменти, оновлюючи мої нотатки.
Джефф Клейтон

Ще один "швидкий і брудний" інструмент, який є неоціненним, оскільки його портативний - Wifi Analyzer для пристроїв Android.
davidgo

Ага. Я коротко згадав про аналізатор WiFi; це може бути найкращим інструментом для розуміння перешкод каналу AP, хоча в моєму випадку це не було проблемою. Однак, це дуже добре зроблено.
Пол Ірландський

Чудовий список, спасибі Інша річ, яку потрібно завжди намагатися - це побачити, що відбувається без wifi. Колись у мене виникло те, що я вважав проблемою з Wi-Fi, але підключення безпосередньо до кабелю, що живить Wi-Fi AP та запуск iPerf, виявило поганий кабель як справжнього винуватця!
Райан Длугош

1
Гмммм. Bluetooth навряд чи викличе подібні перешкоди, які ви описуєте, звичайна схема стрибка AFS дозволить уникнути типового 20 МГц Wi-Fi сигналу в 2,4 ГГц. Ви не працювали на каналах 40 МГц?
Альфват

4

Як зазначено в моєму коментарі вище: Інструменти, які зазвичай використовуються для діагностики проблем з Wi-Fi, насправді можуть викликати цю проблему. Під час сканування мереж Wi-Fi радіо повинен вийти з каналу, як правило, він повідомляє AP до буфера кадрів для нього, щоб він міг «спати», а потім перемикав канали на сканування.

Крім того, iOS та OS X з моменту введення AirDrop візьмуть вимкнений канал Wi-Fi для пошуку інших служб AirDrop і оскільки Yosemite періодично буде виходити з каналу для підтримки передачі даних.


1
Відмінний момент - я помітив цю проблему за допомогою InSSIDer раніше - приємно отримати її пояснення.
Нік

3

Тож у мене були й такі курси коливань Wi-Fi до маршрутизатора.

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

Я переключив маршрутизатор (з TL-WR743ND на DIR-815), спробував декілька Wi-Fi USB-адаптерів (в основному TP-LINK, хоча, думаю, у мене була проблема і з D-Link DWA-160), пішов від 2,5 ГГц до 5 ГГц і проскакував канали. Не пощастило, проблема зберігалася.

Поки я не помітив, що коли я роблю тест на швидкість роботи мережі або запускаю бітторент-клієнт, пінг все в порядку. Він коливається лише тоді, коли мережа працює в режимі очікування.

Це може бути проблема Windows 7 або щось із моїми адаптерами TP-LINK, але коли я трохи завантажуюсь через Wi-Fi, коливання зникає, і мережа працює в порядку.

Поки я зробив невелику програму Rust, щоб підтримувати свою мережу 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));}} 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.