La premisa:
Ubicación rural, no hay muchas opciones para conexiones a Internet de gran ancho de banda. El más rápido es Internet satelital, pero es costoso (tanto el equipo como el costo mensual, y tiene inconvenientes de latencia), por lo que a varios hogares les gustaría compartirlo.
Esto es sencillo en sí mismo: configure un enrutador con una subred para cada hogar (VLAN o puertos físicos), bloquee el tráfico entre ellos y configure el módem para enrutar a esas subredes o configure NAT doble.
El problema:
La forma en que normalmente funciona TCP significa que cada conexión TCP obtendrá más o menos 1 / n del ancho de banda disponible, donde n es el número de conexiones. Entonces, si un hogar / usuario crea muchas conexiones, obtendrán una mayor parte de la conexión general. Esto no es particularmente justo: con un enlace saturado, cada hogar debería tener una participación igual. Por otro lado, cuando nadie más está usando la conexión, debería ser posible usar todo el ancho de banda.
Por ejemplo, supongamos que hay 4 hogares que comparten una conexión inactiva de 12Mbit / s. Si uno de ellos está descargando / transmitiendo / lo que sea, deberían poder usar los 12Mbit / s completos (o lo suficientemente cerca). Si 2 hogares están utilizando la conexión, deberían obtener 6 Mbit / s cada uno, independientemente de si un hogar está descargando 1 archivo y el otro 11. (sin ninguna administración de ancho de banda, cada archivo se descargaría aproximadamente a 1 Mbit / s en ese caso) 3 hogares obtener 4Mbit / s cada uno y así sucesivamente.
Lo que he resuelto hasta ahora:
La mejor ubicación para implementar una política como esta (para aguas abajo) sería en el otro extremo de la tubería estrecha, es decir, en el ISP. Obviamente, eso no es posible en este caso, por lo que sería bueno poder aproximarlo de alguna manera. ¿Pero cómo? ¿Hay enrutadores estándar que admitan algo como esto? ¿Puedo configurar un cuadro de Linux o BSD para hacerlo? No tiene que ser a prueba de balas: un servidor TCP que se comporta mal o un servicio UDP agresivo podría eludir cualquier cosa que pueda hacer al final, pero debería funcionar para el caso común de la mayoría del tráfico que consiste en una gran cantidad de RFC Conexiones TCP.
Para que quede claro, estoy no hablando de dar prioridad a aplicaciones específicas, pero el tráfico en vez agregada a / desde dispositivos Ethernet particulares o rangos de direcciones IP. Darle una prioridad más alta a cierto tráfico que a otro tráfico parece estar bien soportado, pero la situación es menos clara cuando se trata de asignar igualmente el ancho de banda a las clases de tráfico.
Hay una gran cantidad de información mal escrita / irreflexivamente regurgitada / de otra manera desinformada sobre la conformación del tráfico en la web. La documentación sobre el hardware del enrutador es terriblemente inespecífica, por lo que parece estar dando vueltas en círculos.
Según tengo entendido, la forma de hacer que TCP se comporte de esta manera es, en efecto, simular una tubería un poco más estrecha de la que realmente está disponible y descartar artificialmente los paquetes para que retroceda. Así que creo que sería bastante sencillo darles a todos exactamente 3Mbit / s en el ejemplo anterior al descartar artificialmente cualquier paquete adicional. Esto realmente no usa la conexión de manera eficiente ya que la mayoría de las veces hay capacidad libre.
¿Hay alguna manera de hacer lo que te pido? ¿Estoy yendo mal? Estoy (o más bien los hogares en cuestión están) dispuestos a gastar dinero en esto, ya sea un enrutador / dispositivo comercial de precio moderado o una caja genérica para ejecutar una distribución Linux o BSD.
OpenWRT parece admitirlo, aunque nunca lo he usado yo mismo. Puede echar un vistazo a la página de Control de tráfico de red en su sitio web, y especialmente al segundo ejemplo: uso compartido de ancho de banda simple (también conocido como modelado de tráfico) con HTB . Esto implica llamadas simples a qdisc, por lo que cualquier caja de Linux podría hacerlo.
fuente
tc
reglas. El moderador de tráfico de Linux ciertamente parece prometedor.La configuración descrita en /superuser//a/1210164/257859 hace exactamente eso:
fuente