Skip to main content

Module sampler

Module sampler 

Source
Expand description

Сбор сырых измерений времени отклика.

Ключевое требование методологии: классы запросов (например, “верный префикс” / “неверный префикс”) должны чередоваться в случайном порядке, а не идти блоками “сначала все A, потом все B” — иначе на результат повлияет прогрев сервера, фоновая нагрузка или дрейф сети во времени, а не сама утечка. См. dudect / Crosby-Wallach методологию.

Structs§

HttpTarget
HTTP-цель: URL и точка, в которую подставляется тестовое значение.
PlainSamples
Результат простого сбора замеров для sidecheck doctor — без деления на классы, нас интересует только форма распределения RTT до цели.
RawSamples

Enums§

InjectionPoint
Куда подставляется тестовое значение. Header — самый частый случай для API-ключей, Query — для legacy-эндпоинтов с токеном в URL, JsonBody — для типичных JSON-логинов (POST /login {“password”: “…”}).

Functions§

collect_plain
Собирает n последовательных замеров одного и того же запроса. В отличие от run_interleaved — не прерывается на потерях пакетов, а считает их: для doctor-режима сам процент потерь и есть часть диагноза, а не повод остановиться.
random_wrong_value
Генерирует заведомо неверное значение той же длины, что и реальный секрет — чтобы длина payload не была отдельной переменной, искажающей измерение (см. предупреждение в CLI про разную длину value_a/value_b). Принимает внешний RNG, чтобы весь прогон был воспроизводим по одному seed.
run_interleaved
Прогоняет n_per_class измерений на каждый класс, чередуя их случайными блоками, чтобы усреднить влияние дрейфа во времени. Одиночные сбои сети не прерывают весь прогон — считаются и репортятся отдельно, но если доля сбоев превышает max_failure_ratio, прогон останавливается: на таком нестабильном канале доверять таймингам нельзя.