En las redes informáticas , la limitación de velocidad se utiliza para controlar la velocidad de las solicitudes enviadas o recibidas por un controlador de interfaz de red . Se puede utilizar para evitar ataques DoS [1] y limitar el web scraping [2] .
Las investigaciones indican que las tasas de inundación de una máquina zombie superan las 20 solicitudes HTTP GET por segundo [3] , las tasas legítimas son mucho menores.
La limitación de velocidad se debe utilizar junto con el patrón de limitación para minimizar la cantidad de errores de limitación. [4]
Los dispositivos de hardware pueden limitar la tasa de solicitudes en la capa 4 o 5 del modelo OSI .
La limitación de velocidad puede ser inducida por la pila de protocolos de red del remitente debido a un paquete marcado ECN recibido y también por el programador de red de cualquier enrutador en el camino.
Si bien un dispositivo de hardware puede limitar la velocidad para un rango determinado de direcciones IP en la capa 4, corre el riesgo de bloquear una red con muchos usuarios que están enmascarados por NAT con una única dirección IP de un ISP .
La inspección profunda de paquetes se puede utilizar para filtrar en la capa de sesión, pero desarmará eficazmente los protocolos de cifrado como TLS y SSL entre el dispositivo y el servidor de protocolo (es decir, el servidor web).
Los servidores de protocolo que utilizan un modelo de solicitud/respuesta, como los servidores FTP o, por lo general, los servidores web, pueden utilizar una base de datos de clave-valor central en memoria , como Redis o Aerospike , para la gestión de sesiones. Se utiliza un algoritmo de limitación de velocidad para comprobar si la sesión del usuario (o la dirección IP) debe limitarse en función de la información de la memoria caché de la sesión.
En caso de que un cliente realice demasiadas solicitudes dentro de un período de tiempo determinado, los servidores HTTP pueden responder con el código de estado 429: Demasiadas solicitudes .
Sin embargo, en algunos casos (por ejemplo, servidores web), el algoritmo de gestión de sesiones y limitación de velocidad se debe integrar en la aplicación (usada para contenido dinámico) que se ejecuta en el servidor web, en lugar de en el servidor web en sí.
Cuando un servidor de protocolo o un dispositivo de red detecta que se ha alcanzado el límite de solicitudes configurado, descarga las nuevas solicitudes y no las responde. A veces, pueden añadirse a una cola para procesarse una vez que la tasa de entrada alcance un nivel aceptable, pero en los momentos de mayor demanda, la tasa de solicitudes puede incluso superar la capacidad de dichas colas y las solicitudes deben descartarse.
Los centros de datos utilizan ampliamente la limitación de velocidad para controlar la proporción de recursos que se asignan a diferentes usuarios y aplicaciones según su acuerdo de nivel de servicio. [5] En los centros de datos se aplican diversas técnicas de limitación de velocidad mediante software y hardware. Los centros de datos virtualizados también pueden aplicar la limitación de velocidad en la capa de hipervisor. Dos métricas de rendimiento importantes de los limitadores de velocidad en los centros de datos son la huella de recursos (memoria y uso de CPU), que determina la escalabilidad, y la precisión. Por lo general, existe una compensación, es decir, se puede lograr una mayor precisión dedicando más recursos a los limitadores de velocidad. Existe un considerable cuerpo de investigación centrado en mejorar el rendimiento de la limitación de velocidad en los centros de datos. [5]