Supongamos que una oficina de personas quiere limitar las descargas HTTP a un ancho de banda máximo del 40% de su velocidad de conexión a Internet para que no bloquee otro tráfico.
Decimos "no es compatible con su firewall", y dicen la línea inevitable "solíamos poder hacerlo con nuestro Netgear / DLink / DrayTek".
Pensando en ello, una descarga es así:
HTTP GET request
Server sends file data as TCP packets
Client acknowledges receipt of TCP packets
Repeat until download finished.
La velocidad está determinada por la rapidez con la que el servidor le envía los datos y la rapidez con la que los reconoce.
Entonces, para limitar la velocidad de descarga, tiene dos opciones:
1) Indique al servidor que le envíe datos más lentamente, y no creo que haya ninguna función de protocolo para solicitarlo en TCP o HTTP.
2) Reconozca los paquetes más lentamente al limitar su velocidad de carga y también arruinar su velocidad de carga.
¿Cómo hacen los dispositivos para limitar esto? ¿Hay una forma estándar?
fuente
Respuestas:
El propio TCP implementa el control de congestión.
Estos limitadores de velocidad simplemente arrojarán paquetes por encima del límite. TCP maneja esto, asegurando que todos los paquetes lleguen y todos lleguen en orden; el cliente no ACK para los paquetes descartados, y el servidor los reenvía.
La pila TCP del servidor reenviará los paquetes, y también volverá a marcar un poco en su velocidad de envío porque calcula que hay congestión entre él y el cliente. Se volverá a acelerar hasta que el limitador de velocidad deje caer paquetes nuevamente, y así sucesivamente.
fuente
La mejor descripción que he escuchado sobre el método de aceleración inherente de TCP fue un podcast reciente de Security Now . Para citar a Steve Gibson:
fuente
3) Su enrutador / dispositivo de firewall coloca los datos entrantes en un depósito de QoS y solo vacía ese depósito a la velocidad que solicitó. Los datos entrantes se adaptarán a esa velocidad ya que las computadoras dentro solo verán el acuse de recibo a esa velocidad. Además, el paquete descartado ocasional (a propósito) funciona realmente bien para ralentizar una conexión.
Cuando intente encontrar un dispositivo que maneje esto, busque QoS (Calidad de servicio) en la configuración / documentación. Los cuadros de Linux (o BSD) también son útiles para esto.
fuente
Utiliza un firewall o dispositivo que admite la limitación de QoS (calidad de servicio).
Podría construir un sistema Linux para que actúe como puerta de enlace de la oficina y hacer que use el modelado de tráfico para lograr esto. Solo necesita múltiples NIC instaladas y luego cada máquina apunta a una puerta de enlace.
Como beneficio adicional, puede configurar un servidor proxy en él para ayudar a facilitar el tráfico también. Algo parecido al calamar. Puede haber distribuciones de dispositivos de enrutamiento llave en mano que también pueden hacer esto.
fuente
El protocolo HTTP no proporciona facilidades para limitar el ancho de banda utilizado, e incluso si lo hiciera, sería una configuración del lado del cliente, sobre la cual los administradores de red no podrían tener ningún control.
La limitación de ancho de banda (también conocida como "Calidad de servicio") generalmente se administra en enrutadores / firewalls, que manejan todo el tráfico entrante y saliente hacia / desde una red; los que admiten esto generalmente le permiten configurar políticas como "permitir que cualquier computadora cliente use como máximo el 10% de todo el ancho de banda disponible", o "otorgar prioridad SMTP sobre FTP para que los correos electrónicos puedan fluir incluso cuando alguien está haciendo una descarga pesada ".
Cómo se logra exactamente esto depende del enrutador / firewall utilizado, pero la forma más básica es simplemente desechar los paquetes que exceden los límites configurados; TCP se asegurará de que se retransmitan y eventualmente podrá pasar por el cuello de botella.
fuente