La premessa:
Posizione rurale, non molte opzioni per connessioni Internet a larghezza di banda elevata. Il più veloce è di gran lunga l'internet via satellite, ma è costoso (sia le apparecchiature che i costi mensili, e ha degli svantaggi di latenza), quindi più famiglie vorrebbero condividerla.
Questo è di per sé semplice: imposta un router con una sottorete per ogni famiglia (VLAN o porte fisiche), blocca il traffico tra di loro e configura il modem per instradare verso quelle sottoreti o configurare un doppio NAT.
Il problema:
Il modo in cui TCP normalmente funziona significa che ogni connessione TCP otterrà più o meno 1 / n della larghezza di banda disponibile, dove n è il numero di connessioni. Quindi, se una famiglia / utente crea molte connessioni, otterrà una quota maggiore della connessione complessiva. Questo non è particolarmente giusto - con un collegamento saturo, ogni famiglia dovrebbe ottenere una quota uguale. D'altra parte, quando nessun altro utilizza la connessione, dovrebbe essere possibile utilizzare l'intera larghezza di banda.
Ad esempio, supponiamo che ci siano 4 famiglie che condividono una connessione down da 12 Mbit / s. Se uno di essi sta scaricando / streaming / qualunque cosa, dovrebbe essere in grado di utilizzare l'intero 12Mbit / s (o abbastanza vicino). Se 2 famiglie utilizzano la connessione, dovrebbero ottenere 6 Mbit / s ciascuna, indipendentemente dal fatto che una famiglia stia scaricando 1 file e l'altra 11. (senza alcuna gestione della larghezza di banda, ogni file verrà scaricato a circa 1 Mbit / s in quel caso) 3 famiglie ottenere 4Mbit / s ciascuno e così via.
Quello che ho elaborato finora:
La posizione migliore per attuare una politica come questa (per il downstream) sarebbe all'altra estremità del tubo stretto, cioè all'ISP. Ovviamente, in questo caso non è possibile, quindi sarebbe bene poterlo approssimare in qualche modo. Ma come? Esistono router standard che supportano qualcosa del genere? Posso configurare una scatola Linux o BSD per farlo? Non deve essere a prova di proiettile - un server TCP che si comporta male o un servizio UDP aggressivo potrebbe presumibilmente eludere qualsiasi cosa io possa fare da parte mia - ma dovrebbe funzionare per il caso comune della maggior parte del traffico costituito da un sacco di conformità RFC Connessioni TCP.
Per essere chiari, io non parlando di priorità specifiche applicazioni, ma il traffico piuttosto aggregata per / da particolari dispositivi Ethernet o intervalli di indirizzi IP. Dare un po 'di priorità al traffico rispetto a un altro traffico sembra essere ben supportato, ma la situazione è meno chiara quando si cerca di allocare equamente la larghezza di banda a classi di traffico.
Ci sono molte informazioni mal scritte / rigurgitate inconsapevolmente / altrimenti non informate sul traffico che modella sul web. La documentazione sull'hardware del router è terribilmente aspecifica, quindi mi sembra di girare in tondo.
A quanto ho capito, il modo per far sì che TCP si comporti in questo modo è in effetti simulare una pipe leggermente più stretta di quanto sia realmente disponibile e far cadere artificialmente i pacchetti per farlo tornare indietro. Quindi penso che sarebbe abbastanza semplice dare a tutti esattamente 3Mbit / s nell'esempio sopra facendo cadere artificialmente eventuali pacchetti extra. Questo non utilizza davvero la connessione in modo efficiente poiché la maggior parte delle volte c'è capacità disponibile.
C'è un modo per fare quello che sto chiedendo? Sto sbagliando? Sono (o meglio le famiglie in questione) disposte a spendere soldi per questo, che si tratti di un router / appliance standard o di un box generico per eseguire una distribuzione Linux o BSD.