Техническая документация NetQuickCheck

Источники данных, расчеты и методы мониторинга, используемые в NetQuickCheck, включая анализ беспроводной сети, трафик приложений, сетевые зонды и отчеты.

Обновлено

Источники данных и выбор интерфейса

NetQuickCheck объединяет системные измерения, активные сетевые проверки и расчётную статистику. Системные измерения дают сведения об интерфейсах, беспроводной связи и подключениях процессов. Активные проверки получают ответ цели на запрос. Статистика преобразует наблюдения в скорости, процентили и графики.

Основные источники данных
ДанныеМетод сбораИспользуется для
Сетевые интерфейсыИнтерфейс macOS и конфигурация сети, а также счетчики маршрутизацииСтатус интерфейса, адреса, маршруты, DNS, переданные байты и количество ошибок
Беспроводные сетиПоказания соединения CoreWLAN и результаты сканированияRSSI, шум, канал, ширина канала, сведения о точке доступа и частотный охват
Подключения процессовСтатистика nettop и сведения о процессахПриложение-владелец, удалённые адреса, состояния подключений, счётчики байтов и их изменения
Целевые ответыICMP, TCP, DNS, HTTP и передача тестовых данныхЗадержка, результаты DNS, статус службы, маршруты и пропускная способность

Задачи с выбранным интерфейсом привязывают к нему свои запросы. TCP, UDP и прямые HTTP-запросы используют привязку интерфейса Network.framework; ICMP-зонды используют аргумент интерфейса системной команды. Автоматическая маршрутизация позволяет macOS выбирать путь, а автоматические HTTP-запросы соответствуют политикам системного сеанса и прокси-сервера. Выбранный интерфейс сохраняется вместе с результатами для возможности сравнения Wi-Fi, Ethernet и других доступных интерфейсов.

Текущая сеть и быстрые проверки

Показания интерфейса и скорость передачи данных

Текущая сеть считывает состояние интерфейса, адреса, шлюз и DNS, а также показания беспроводной сети для подключенной сети Wi-Fi. Передаваемые байты поступают от счетчиков интерфейса маршрутизации 64-битной системы. Ошибки приема, ошибки отправки и сбросы очереди приема сохраняются отдельно.

Скорость приема (Б/с) = Увеличение количества полученных байтов между выборками ÷ Интервал выборки (секунды)
Скорость отправки (Б/с) = Увеличение количества отправленных байтов между выборками ÷ Интервал выборки (секунды)
Скорость передачи данных (Мбит/с) = Скорость в байтах/с × 8 ÷ 1 000 000

Скорость отражает средний объём передачи за интервал измерения. МиБ/с соответствует 1 048 576 байтам в секунду, а Мбит/с — миллиону бит в секунду. Счётчики интерфейсов и счётчики по приложениям учитывают разные наборы трафика.

Последовательность быстрой проверки

Быстрая проверка подтверждает локальное соединение, проверяет шлюз, запрашивает DNS, проверяет подключение к Интернету, запрашивает HTTPS, а затем проверяет исходящую информацию. Текущая реализация позволяет 8 секунд для всей проверки. Каждый активный шаг может использовать до 2 секунд оставшегося бюджета, а результаты обновляются по завершении каждого шага.

Шаг шлюза пытается установить TCP-соединение с портом шлюза 443. Как успешное соединение, так и явный отказ в соединении подтверждают ответ шлюза; исходный результат соединения также сохраняется. Шаги DNS, Интернета и HTTPS записывают свои собственные ответы, чтобы помочь изучить каждую часть пути подключения.

Сканирование Wi-Fi и метрики беспроводной сети

Беспроводное сканирование использует CoreWLAN для получения SSID ближайших точек доступа, BSSID, основного канала, частотного диапазона, ширины канала и уровня принимаемого сигнала. Доступный каталог каналов поступает из текущего беспроводного интерфейса. Элементы широковещательной информации добавляют возможности безопасности, стандарты Wi-Fi, коды стран и другие детали. Доступ к идентификаторам, таким как SSID и BSSID, соответствует правилам разрешения местоположения macOS.

RSSI, шум и соотношение сигнал/шум

RSSI и шум используют дБм, логарифмическую меру мощности относительно 1 милливатт. Значение RSSI ближе к 0 означает более сильный принимаемый сигнал. Когда оба показания действительны, приложение вычисляет соотношение сигнал/шум:

SNR (дБ) = RSSI (дБм) − Шум (дБм)

Например, RSSI −55 дБм и шум −92 дБм дают отношение сигнал/шум 37 дБ. Текущий расчет принимает показания от −127 до −1 дБм. Если какое-либо из показаний отсутствует, SNR остается пустым.

Мониторинг беспроводного сигнала имеет два источника выборки. Локальный режим периодически считывает подключенную сеть Wi-Fi; режим поблизости неоднократно сканирует выбранные точки доступа. Диаграммы сохраняют время каждого считывания, а идентификаторы точек доступа различают разные беспроводные сигналы.

Использование канала вещания

Когда точка доступа передает действительный информационный элемент BSS Load, приложение преобразует свое поле использования канала из 0–255 в процентное значение: значение поля × 100 ÷ 255. При этом сохраняется значение широковещательного значения. Диаграмма перекрытия каналов использует модель покрытия частот и мощности, описанную ниже.

Охват канала и оценка

Преобразование каналов в диапазоны частот

Оценка канала строит частотные диапазоны на основе полосы, основного канала и ширины канала. Для каналов 1–13 2,4 ГГц центральная частота в МГц равна 2407 + 5 × номер канала; канал 14 отображается отдельно на 2484 МГц. Для 5 ГГц это 5000 + 5 × номер канала. Диапазон 20 МГц простирается на 10 МГц в обе стороны от центра; более широкие каналы объединяют блоки подканалов, поддерживаемые каталогом.

Кандидаты генерируются по частотному диапазону и ширине канала, и каждый подканал кандидата должен существовать в текущем каталоге. Приложение оценивает комбинации 20 и 40 МГц на частоте 2,4 ГГц, а также комбинации 20, 40, 80 и 160 МГц на частоте 5 и 6 ГГц. Записи сканирования объединяются по диапазонам и BSSID. Если BSSID отсутствует, идентификатор записи сканирования служит резервным идентификатором, чтобы избежать повторного учета одной и той же точки доступа.

Если информация о ширине канала или направлении неполная, приложение сохраняет подтвержденное и возможное покрытие отдельно. Диапазоны, общие для всех возможных позиций, являются подтвержденным покрытием; остальные остаются возможным покрытием. Каждая точка доступа учитывается один раз.

Расчет мощности перекрытия на основе логарифмических показаний сигнала

Уровень сигнала преобразуется из дБм в относительную линейную мощность, а затем взвешивается по доле перекрытия частот. Для точки доступа i и кандидата c:

Pᵢ = 10 ^ ((RSSIᵢ + 100) ÷ 10)
wᵢ,c = Суммарная ширина перекрытия ÷ Суммарная ширина моделируемых диапазонов точки доступа
Poverlap,c = Σ (Pᵢ × wᵢ,c)

Слагаемое +100 задаёт общий относительный уровень отсчёта мощности. Если ширина канала неопределенна и перекрывает диапазон кандидатов, вес консервативно устанавливается равным 1. Таким образом, вклад вносят как мощность сигнала, так и ширина покрытия. Разница RSSI в 10 дБ соответствует десятикратной линейной разнице мощности.

Рейтинг кандидатов

Когда текущая точка доступа может быть идентифицирована, она исключается, так что ранжирование оценивает окружающие сигналы. Текущий рейтинг отфильтровывает кандидатов DFS. В диапазоне 2,4 ГГц при ширине канала 20 МГц предпочтительна группа каналов 1, 6 и 11, после чего следует сравнение точек доступа с отсутствующим RSSI, расчетной мощностью помех, общим количеством точек доступа и последовательностью каналов.

Когда каждый кандидат имеет сопоставимые показатели шума, шум также преобразуется в линейную мощность и учитывается. В противном случае кандидаты сравниваются только с использованием мощности перекрывающегося сигнала. Каждый подканал-кандидат использует середину своих отсортированных действительных показаний шума; полный кандидат принимает большее из этих значений шума.

В одном частотном диапазоне при одинаковой ширине канала текущая конфигурация является предпочтительной, если она разделяет группу приоритетов и количество точек доступа лучшего кандидата с отсутствующим RSSI, а ее расчетная мощность не более чем в два раза превышает мощность лучшего кандидата. Двукратная линейная разница мощности составляет около 3 дБ. Это уменьшает изменения в рейтинге, вызванные небольшими различиями.

Отображение кривых перекрытия

Кривые перекрытия рассчитывают взвешенную мощность в окне шириной 20 МГц вокруг центра каждого канала, а затем используют логарифмическое сжатие, чтобы сопоставить ее с относительным диапазоном отображения 0–1:

Отображаемая интенсивность = min(1, max(0, log₁₀(1 + Poverlap) ÷ 7))

Эта вертикальная ось представляет относительную интенсивность перекрытия, полученную на основе показаний сканирования. Если в перекрывающейся точке доступа отсутствует действительный RSSI, эта позиция остается пустой, и кривая разделяется. Подтвержденное и возможное покрытие остаются отдельными.

Обнаружение устройств в локальной сети

Обнаружение устройств сочетает в себе зонды служб Bonjour, WS-Discovery, SSDP и TCP. Bonjour предоставляет рекламируемые экземпляры служб. WS-Discovery и SSDP добавляют ответы от совместимых устройств. TCP-зонды проверяют ответы службы по адресам в текущем диапазоне сканирования.

Текущие порты TCP-зондов — 80, 443, 445, 22, 631 и 9100, охватывающие общие веб-службы, общий доступ к файлам, удаленный доступ и услуги печати. Запросы используют выбранный интерфейс. Наблюдения сохраняют свой источник, адрес и фактическую реакцию.

При обнаружении устройств наблюдения из разных источников объединяются пакетами. Названия, типы и службы сопоставляются по адресам устройств и данным служб. Недоступные интерфейсы, отказы в доступе, тайм-ауты и ответы служб фиксируются отдельно. При отмене или перезапуске сканирования поздние обратные вызовы предыдущего сканирования изолируются и не влияют на новые результаты.

Трафик приложений и определение владельца подключения

Поиск приложений из таблицы подключений системы

Трафик приложений считывает процессы, протоколы, локальные и удаленные конечные точки, интерфейсы, состояния соединений и количество байтов из nettop. Приложение объединяет информацию о запущенном приложении, связи родительских процессов и пути к исполняемым файлам для связи вспомогательных процессов с приложением-владельцем.

Для определения приложения-владельца сначала проверяется сам процесс, затем цепочка родительских процессов — до 16 уровней. Если соответствие не найдено, используется путь к пакету приложения, содержащему исполняемый файл. Время запуска включается в идентификатор процесса, чтобы различать повторно использованные PID.

Расчёт изменений по подключениям и суммирование по приложениям

Последовательные измерения сопоставляют подключения по процессу, протоколу, локальным и удалённым адресам и портам, а также интерфейсу. Скорость рассчитывается, только если оба счётчика байтов относятся к одному сопоставимому подключению, затем суммируется по приложениям.

Скорость приёма данных подключения = (Текущие полученные байты − Предыдущие полученные байты) ÷ Интервал времени
Скорость отправки данных подключения = (Текущие отправленные байты − Предыдущие отправленные байты) ÷ Интервал времени
Скорость приложения = Сумма допустимых скоростей подключений приложения и связанных процессов

Новые соединения сначала устанавливают базовый уровень. Сброс счетчика, изменение интерфейса или разрыв выборки более 15 секунд требуют новых сопоставимых выборок. Если система возвращает несколько идентичных строк, которые не могут быть однозначно сопоставлены, приложение сохраняет эти строки и оставляет их скорости пустыми, чтобы неоднозначность сопоставления не выглядела как всплеск трафика.

Удаленные подключения и наблюдения ICMP

Мониторинг подключений приложений сохраняет время первого и последнего обнаружения, изменения состояния и разницу в трафике, а также независимо исследует обнаруженные удаленные IP-адреса с помощью ICMP. Трафик, активность соединений и результаты ICMP выравниваются по времени. Показания задержки берутся из ICMP-ответа целевого IP-адреса.

Ping и TCP-зонды

ICMP Echo и процент неполученных ответов

Ping разрешает и фиксирует целевой адрес для зонда, а затем отправляет запрос IPv4 ICMP Echo или IPv6 ICMPv6 Echo. Непрерывный мониторинг повторяется в соответствии с конфигурацией, записывая фактические отправки, ответы, пропущенные ответы и время прохождения туда и обратно.

Коэффициент отсутствия ответов = количество зондов без ответа ÷ количество фактически отправленных зондов × 100 %.

При подсчете используется количество отправок, подтвержденных выходными данными системы. Сбои разрешения, отказ в разрешении и запросы, которые не удалось отправить, сохраняют свой особый статус и не входят в знаменатель отправленной проверки. В статистике задержки используются действительные RTT ответа.

TCP-портовые соединения

После определения цели мониторинг TCP-порта пытается подключиться к выбранному порту и использует монотонные часы для измерения времени до успеха или ошибки. Разрешение DNS завершается первым, а время TCP-соединения измеряется отдельно. Успех, отказ в соединении, тайм-аут и другие системные ошибки сохраняются отдельно, чтобы показать, как один и тот же сервисный порт ведет себя с течением времени.

DNS-запросы и проверка ответов

Мониторинг DNS запрашивает у выбранного сервера записи нужного типа: A, AAAA, CNAME, MX, TXT, NS, SOA или PTR. Системное разрешение имён и запросы к заданному серверу используют разные пути. При автоматической маршрутизации используется системное разрешение имён или dig, в зависимости от запроса. Запросы через выбранный интерфейс передаются по UDP через порт 53.

Прямые запросы генерируют идентификатор транзакции и формируют имя, тип и класс IN вопроса. Перед анализом кодов ответов, записей ресурсов и TTL ответы проверяются на длину пакета, идентификатор транзакции, флаг ответа, количество вопросов, имя, тип и класс. Анализатор пакетов расширяет сжатые указатели доменных имен.

NOERROR с записями выбранного типа, NOERROR без этих записей, NXDOMAIN, усеченные пакеты и сбои транспорта записываются отдельно. Запросы PTR сначала преобразуют адрес IPv4 или IPv6 в имя обратного поиска. Тайминг охватывает анализ запросов и ответов, а результаты сохраняют фактическое содержимое сервера и записи.

HTTP-ответ и время этапа

Мониторинг веб-сайта отправляет запросы HTTP или HTTPS HEAD и записывает возвращенный код состояния, конечный URL-адрес и продолжительность. Автоматическая маршрутизация использует метрики транзакций URLSession. При явном интерфейсе или пути разрешения прямая реализация HTTP использует отчеты о соединениях Network.framework и временные метки запросов.

Длительность этапов запроса
ЭтапНачалоКонец
DNSНачинается разрешение целевого имениРазрешение заканчивается
TCPНачинается попытка подключенияTCP-соединение установлено; TLS рассчитывается отдельно
TLSНачало TLS-рукопожатияЗавершение TLS-рукопожатия
Отправка запросаНачинается передача запросаПередача запроса завершена
Ожидание первого байтаПередача запроса завершенаПолучен первый байт ответа
Получение ответаПолучен первый байт ответаПрием ответа HEAD завершен

Продолжительность этапа — это разница между временными метками окончания и начала. Повторно используемое соединение может не иметь нового этапа DNS, TCP или TLS; этапы без действительных временных меток остаются пустыми. Перенаправления сохраняют время для каждого запроса. Общая продолжительность проверки измеряется отдельно, поскольку она также включает в себя разрешение, перенаправления, планирование и другие фактические накладные расходы.

HTTPS использует проверку доверия системных сертификатов и извлекает субъект, эмитента, период действия и отпечаток SHA-256 из действительных сертификатов. Коды состояния HTTP описывают ответ сервера; ошибки транспорта описывают процесс соединения. Оба хранятся отдельно.

Сетевой маршрут и проверка промежуточных узлов

Мониторинг сетевого пути определяет и фиксирует целевой адрес, а затем отправляет зонды ICMP с IPv4 TTL или IPv6 Hop Limit, увеличивающимся с 1. Промежуточные маршрутизаторы могут возвращать ответы с превышением времени, в то время как пункт назначения может возвращать эхо-ответ. Приложение использует эти ответы для организации адресов переходов и доступного времени.

В каждом цикле проверяется до 16 переходов. Если промежуточный узел не отвечает, проверка следующих продолжается. Ответ цели завершает цикл. Результаты о недоступности или отказе по политике сохраняются. Если адрес узла известен, но допустимое время ответа отсутствует, адрес сохраняется, а время остаётся пустым.

Пропускная способность и отзывчивость под нагрузкой

Текущая сеть: Apple networkQuality

На странице «Текущая сеть» запускается macOS networkQuality. Приложение считывает скорость приёма и отправки данных, задержку без нагрузки и отзывчивость под нагрузкой в RPM. RPM — число сетевых обменов туда и обратно в минуту, измеренное инструментом Apple; приложение сохраняет полученное значение. Исходные скорости в битах в секунду делятся на 1 000 000 для отображения в Мбит/с.

Когда выбран интерфейс, команда проверки скорости включает аргумент интерфейса и проверяет имя интерфейса, возвращаемое в результате. Если система предоставляет только некоторые показатели, эти поля сохраняются, а остальные остаются пустыми.

Монитор: тесты скорости через сервер и систему

В каждом цикле монитор измеряет скорость приёма и передачи данных через выбранный сервер Cloudflare или LibreSpeed, затем запускает Apple networkQuality. Для каждого метода сохраняются источник, время и фактические результаты. При загрузке принимаются тестовые данные сервера; при отправке используются временные данные, созданные приложением. Средняя пропускная способность рассчитывается по фактически переданным байтам и длительности соответствующего этапа:

Пропускная способность (Мбит/с) = Фактически передано байт × 8 ÷ Затраченное время (секунды) ÷ 1 000 000

Запросы используют явные тестовые полезные данные, таймауты и политики кэширования, сохраняя ход передачи, количество целевых байтов и фактические переданные байты отдельно. По результатам этапов различают завершенные, частичные и неудавшиеся передачи. Записи сохраняют сервер и интерфейс для поддержки сравнений в тех же условиях.

Непрерывный мониторинг, графики и статистика

Независимая выборка на общей временной шкале

Монитор включает в себя десять типов инструментов: Ping, TCP, DNS, веб-сайты, сетевые пути, тесты скорости, беспроводной сигнал, трафик интерфейса, трафик приложений и подключения приложений. Каждая задача сохраняет свою собственную цель, параметры и время измерений. Общее временное окно объединяет наблюдения для сравнения задержек, показаний беспроводной сети, трафика и реакции служб с течением времени.

Активные зонды и передача полосы пропускания запрашивают отдельные квоты ресурсов. Текущий бюджет по умолчанию допускает 8 одновременных операций проверки и 2 одновременных передачи. Операции, выходящие за рамки бюджета, ждут, пока не будет освобождена квота. Отмена ожидает завершения фактической операции, прежде чем освободить ее квоту. Квоты применяются к каждому отдельному зонду или передаче; повторяющиеся задачи снова запрашивают их для следующего раунда.

Сегменты диаграммы и относительные изменения

Диаграммы соединяют точки по времени выборки и идентичности сегментов, разделяя перерывы и показывая сбои индивидуально. Интерполяция на границах видового экрана используется только для рисования; статистика использует фактические наблюдения.

Если включены маркеры пиков относительной задержки, приложение берет медианное значение m из предыдущих 5 выборок в одном и том же сегменте. Отмечается задержка, превышающая max(3 × m, m + 5 мс). Маркеры изменения беспроводного сигнала сравнивают показания с недавним медианным значением и отмечают разницу не менее 8 дБ. Эти правила определяют изменения относительно недавнего базового уровня.

Медиана, P95 и вариация

Для статистики выбираются допустимые конечные значения во временном окне и сортируются по возрастанию. При нечётном количестве медиана — центральное значение, при чётном — среднее арифметическое двух центральных значений. Без допустимых значений статистика остаётся пустой. P95 использует метод ближайшего ранга:

P95 = Значение в позиции ceil(0.95 × n) среди отсортированных по возрастанию измерений
Доля отсутствующих ответов ICMP = Запросы без ответа ÷ Фактически отправленные запросы
Изменение задержки ICMP = Сумма абсолютных разностей RTT между допустимыми соседними ответами ÷ Количество допустимых соседних пар

Сеансы ICMP подключения к приложению накапливают процентили с помощью гистограммы с точностью 0,1 мс, независимо от окна хранения необработанной истории. Действительные ответы от 0 до 2000 мс входят в сегменты гистограммы. Большие значения входят в счетчик переполнения и способствуют максимуму; процентили, попадающие в диапазон переполнения, остаются пустыми. Изменение задержки объединяет только пары действительных соседних ответов в одном сегменте с интервалом не более 2,5 секунды.

Записи мониторинга и экспорт отчётов

В записях мониторинга сохраняются параметры задачи, целевые показатели, время выборки, фактические результаты и подтверждающие данные. Диаграммы показывают изменения с течением времени, а отчеты организуют наблюдения для чтения или дальнейшей обработки.

HTML
Читабельный отчет с кратким описанием задач, результатами и подробностями.
CSV
Данные организованы в такие столбцы, как время, категория, объект, цель, метод, статус, значение, единица измерения и подробности для анализа в электронной таблице.
JSON
Структурированные записи, конфигурация и результаты для дальнейшей обработки.

Длительные сеансы подключения приложений используют сегментированные архивы. При экспорте сначала фиксируется диапазон чтения архива, затем выполняется потоковая передача архивных данных и текущего хвоста в памяти, поэтому при одном экспорте используются согласованные границы данных. Отсутствующие значения, сбои и отмены сохраняют свои собственные состояния для обеспечения единообразной интерпретации во время проверки.