Как я диагностирую и визуализирую большое время пинга для маршрутизатора Wi-Fi?

65

Я наблюдаю неустойчивые и иногда очень долгие пингы с моим WiFi-роутером, который находится всего в одном прыжке. Пинг 192.168.1.1иногда дает задержки в 400-800 мс.

Есть много вещей, которые можно попробовать (прошивка, размещение маршрутизатора, канал AP и т. Д.), Но я бы хотел немного более методично решить эту проблему:

  • Во-первых, как я могу визуализировать производительность моей сети?
  • Тогда, как я могу Benchmark производительность данной конфигурации, так что я могу сравнить надежно после внесения изменений?
Пол Ирландский
источник
Какой маршрутизатор и / или программное обеспечение встроенного маршрутизатора вы используете, если он не является стандартной установкой?
Джефф Клэйтон
@JeffClayton Linksys WRT54GSv2 (старая школа) под управлением Томата (Шибби). Используется для запуска DD-WRT, но он содержит ошибки и сбивает с толку.
Пол Ириш
1
У вас есть реальная проблема или это чисто косметическая проблема? Маршрутизаторы WiFi обычно не предназначены для сверхбыстрых пинг-ответчиков, у них есть реальная работа.
Дэвид Шварц
1
@DavidSchwartz, мы должны быть в состоянии завершить полный переход на точку доступа Wi-Fi менее чем за 10 мс, нет? Если ваша задержка внутри Wi-Fi превышает 500 мс, то КАЖДЫЙ ПАКЕТ, который вы извлекаете из Интернета / интернета, также страдает этой задержкой. Это убийца
Пол Ирландский
1
@PaulIrish Все верно, но это никак не связано со временем пинга. Ping измеряет сумму задержки в сети плюс саму задержку ответа пинга. SoHo WiFi роутеры не предназначены для эффективного пингования, поэтому использование пинга для измерения задержки в сети не рекомендуется.
Дэвид Шварц

Ответы:

78

Этот ответ о сбое сервера содержит хорошее руководство высокого уровня о том, что делать, поэтому начните с этого. Этот последний шаг, однако, очень утомителен: по-видимому, вы (я имею в виду, я) не хотите вкладывать средства в выделенное оборудование для этого ...

Ниже приведены несколько хороших инструментов, сначала для понимания работоспособности подключения в локальной сети Wi-Fi, а затем к конечной точке Интернета.

Инструменты Wifi

NetSpot (для Mac)

Он отслеживает локальные точки доступа WiFI и предоставляет базовые данные, такие как SNR, Channel, Signal Strength. Он также может провести базовое обследование места для физического пространства с указанием сильных сторон и помех. В режиме обнаружения точки доступа вы также можете составить график уровня сигнала с течением времени, что позволяет тестировать места размещения и настраивать возможности помех. введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь

Тест скорости Wi-Fi для Android

Очень полезно. Вы запустите на своем компьютере простой сервер Python, и приложение сможет протестировать несколько сценариев, предоставляя вам обратную связь по скорости в реальном времени.

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

Wifi Analyzer , еще одно замечательное приложение для Android, имеет несколько ценных представлений о том, какие AP-каналы Wi-Fi активны. Может быть, лучший бесплатный инструмент для выбора канала 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 (пинг и трассировка вместе)

Пингует все ваши следы. Предоставляет данные тренда. Сумасшедший офигенно.

brew install mtr
mtr 8.8.4.4

SpeedTest-кли

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.4Ghz, где они сталкиваются.)

Для этого я получил максимальную отдачу от теста скорости Wi-Fi для Android , который регулярно проводился, пока я перемещал вещи в квартире. Поскольку он сообщает об обновлениях каждые 200 мс или около того, он четко сообщал, когда помехи отбрасывали мои пакеты.

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

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

Одним из инструментов, которого у меня не было, был прибор для анализа физического спектра. Телефоны и ноутбуки могут обнаруживать только точки доступа Wi-Fi, но не могут распознавать помехи от Bluetooth или других радиочастотных технологий. У Metageek есть несколько хороших решений в этой области ( Wi-Spy и inSSIDer Office ), и мы надеемся, что появятся другие инструменты, такие как AirShark .

Пол Ирландский
источник
Это красивые инструменты, обновляющие мои заметки.
Джефф Клэйтон
Еще один «быстрый и грязный» инструмент, который бесценен, потому что его переносной - это Wifi Analyzer для устройств Android.
Давидго
Айя. Я кратко упомянул WiFi анализатор; это может быть лучшим инструментом для понимания помех канала AP, хотя в моем случае это не было проблемой. Тем не менее, это действительно хорошо сделано.
Пол Ирландский
Отличный список, спасибо. Другая вещь, которую всегда стоит попробовать, это посмотреть, что происходит без Wi-Fi. Однажды у меня возникла проблема с Wi-Fi, но подключение напрямую к кабелю, питающему точку доступа Wi-Fi, и запуск iPerf показали, что Bad Cable - настоящий преступник!
Райан Dlugosz
1
Хммм. Скорее всего, Bluetooth не будет вызывать помехи, которые вы описываете, поскольку обычная схема переключения AFS позволит избежать обычного сигнала Wi-Fi с частотой 20 МГц в диапазоне 2,4 ГГц. Вы не использовали каналы 40 МГц, не так ли?
alfwatt
4

Как отмечено в моем комментарии выше: инструменты, обычно используемые для диагностики проблем Wi-Fi, могут на самом деле вызывать эту проблему. При сканировании сетей Wi-Fi радиостанция должна отключаться от канала, как правило, она указывает точке доступа буферизовать кадры для нее, чтобы она могла «заснуть», а затем переключает каналы для сканирования.

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

alfwatt
источник
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), попробовал несколько USB-адаптеров Wi-Fi (в основном TP-LINK, хотя, думаю, у меня тоже была проблема с D-Link DWA-160), перешел с 2,5 ГГц на 5 ГГц и обыскивал каналы. Не повезло, проблема осталась.

Пока я не заметил, что когда я делаю тест скорости сети или запускаю bittorrent-клиент, пинг в порядке. Это только колеблется, когда сеть простаивает.

Может быть проблема с 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));}} 
ArtemGr
источник