65

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

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

  • Во-первых, как я могу визуализировать производительность моей сети?
  • Тогда, как я могу Benchmark производительность данной конфигурации, так что я могу сравнить надежно после внесения изменений?

3 ответа3

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.

4

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

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

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 ГГц и обыскивал каналы. Не повезло, проблема осталась.

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

Возможно, это проблема 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));}} 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .