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