В компьютерных сетях ограничение скорости используется для управления скоростью запросов, отправляемых или получаемых контроллером сетевого интерфейса . Его можно использовать для предотвращения DoS-атак [1] и ограничения веб-скрапинга . [2]
Исследования показывают, что скорость флуда для одной машины-зомби превышает 20 HTTP GET-запросов в секунду, [3] законные показатели намного меньше.
Аппаратные устройства могут ограничивать скорость запросов на уровне 4 или 5 модели OSI .
Ограничение скорости может быть вызвано стеком сетевых протоколов отправителя из-за полученного пакета с маркировкой ECN , а также сетевым планировщиком любого маршрутизатора на пути.
Хотя аппаратное устройство может ограничить скорость для заданного диапазона IP-адресов на уровне 4, оно рискует заблокировать сеть со многими пользователями, которые замаскированы NAT с одним IP-адресом интернет - провайдера .
Глубокую проверку пакетов можно использовать для фильтрации на уровне сеанса, но она эффективно отключит протоколы шифрования, такие как TLS и SSL, между устройством и сервером протоколов (т. е. веб-сервером).
Серверы протоколов, использующие модель запроса/ответа, такие как FTP-серверы или обычно веб-серверы, могут использовать центральную базу данных «ключ-значение» в памяти , например Redis или Aerospike , для управления сеансами. Алгоритм ограничения скорости используется для проверки необходимости ограничения сеанса пользователя (или IP-адреса) на основе информации в кэше сеанса.
Если клиент сделал слишком много запросов в течение определенного периода времени, HTTP- серверы могут ответить кодом состояния 429: Too Many Requests .
Однако в некоторых случаях (например, веб-серверы) алгоритм управления сеансами и ограничения скорости должен быть встроен в приложение (используемое для динамического контента), работающее на веб-сервере, а не в сам веб-сервер.
Когда сервер протокола или сетевое устройство замечают, что настроенный лимит запросов достигнут, он выгружает новые запросы и не отвечает на них. Иногда их можно добавить в очередь для обработки, как только скорость ввода достигнет приемлемого уровня, но в часы пик скорость запросов может даже превышать пропускную способность таких очередей, и запросы приходится отбрасывать.
Центры обработки данных широко используют ограничение скорости для контроля доли ресурсов, предоставляемых различным арендаторам и приложениям в соответствии с их соглашением об уровне обслуживания. [4] В центрах обработки данных применяются различные методы ограничения скорости с использованием программного и аппаратного обеспечения. Виртуализированные центры обработки данных также могут применять ограничение скорости на уровне гипервизора. Двумя важными показателями производительности ограничителей скорости в центрах обработки данных являются объем ресурсов (загрузка памяти и ЦП), который определяет масштабируемость и точность. Обычно существует компромисс: более высокая точность может быть достигнута за счет выделения большего количества ресурсов ограничителям скорости. Значительный объем исследований с упором на повышение производительности ограничения скорости в центрах обработки данных. [4]