web-dev-qa-db-fra.com

Options pour la gestion de la bande passante sur une connexion Internet partagée

la prémisse:

Emplacement rural, pas nombreuses options pour les connexions Internet à grande bande passante. Le plus rapide de loin est de loin Internet satellite, mais c'est cher (équipement et coût mensuel, et a des inconvénients de la latence), de sorte que plusieurs ménages souhaitez le partager.

Ceci est simple en soi - configurez un routeur avec un sous-réseau pour chaque ménage (VLAN ou ports physiques), bloquez le trafic entre eux et configurez le modem pour suivre ces sous-réseaux ou configurer Double NAT.

Le problème:

La façon dont TCP fonctionne normalement signifie que chaque connexion TCP _ sera plus ou moins obtenez 1/N de la bande passante disponible, où n est le nombre de connexions. Donc, si un ménage/utilisateur crée beaucoup de connexions, ils obtiendront une plus grande part de la connexion globale. Ce n'est pas particulièrement juste - avec un lien saturé, chacun ménage devrait avoir une part égale. D'autre part, lorsque personne d'autre utilise la connexion, il devrait être possible d'utiliser la largeur de bande complète.

Par exemple, disons qu'il y a 4 ménages partageant une connexion DOWN 12MBIT/S. Si l'un d'entre eux télécharge/streaming/peu importe, ils devraient pouvoir utiliser la totalité 12Mbit/s (ou assez proche). Si 2 ménages utilisent la connexion, ils devraient obtenir 6Mbit/s chacun, peu importe si un ménage télécharge 1 fichier et l'autre 11. (sans aucune gestion de bande passante, chaque fichier téléchargerait à peu près 1Mbit/s dans ce cas) 3 ménages Obtenez 4Mbit/s chacun et ainsi de suite.

ce que j'ai travaillé jusqu'à présent:

Le meilleur emplacement pour mettre en œuvre une stratégie comme celle-ci (pour le aval) serait à l'autre extrémité du tuyau étroit, c'est-à-dire à la FAI. De toute évidence, ce n'est pas possible dans ce cas, il serait donc bon de pouvoir se rapprocher d'une manière ou d'une autre. Mais comment? Y a-t-il des routeurs hors des étagères qui soutiennent quelque chose comme ça? Puis-je configurer une boîte Linux ou BSD pour le faire? Il ne doit pas nécessairement être à la preuve de la balle - une mauvaise conduite TCP _ serveur ou service UDP agressif pourrait probablement contourner tout ce que je peux faire à ma fin - mais cela devrait fonctionner pour le cas commun de la majeure partie du trafic consistant de nombreuses connexions conformes à la conformité RFC TCP.

Pour être clair, je suis pas Parler de la priorité aux applications spécifiques, mais plutôt un trafic agrégé de/des périphériques Ethernet particuliers ou des gammes d'adresses IP. Donner du trafic une priorité plus élevée que d'autres trafics semble être bien soutenu, mais la situation est moins claire lorsque vous essayez d'allouer également la bande passante aux classes de trafic.

Il y a beaucoup d'informations mal informées/non infligées/non infligées sur la mise en forme de trafic sur le Web. La documentation sur le matériel de routeur est terriblement non spécifique. Je semble donc courir dans des cercles.

Si je comprends bien, la façon d'obtenir TCP _ _ Pour se comporter de cette façon, c'est d'en vigueur simuler un tuyau légèrement plus étroit que ce qui est vraiment disponible et goutte artificiellement des paquets pour l'obtenir. Je pense donc que ce serait assez simple de donner à chacun exactement 3Mbit/s dans l'exemple ci-dessus en laissant tomber artificiellement des paquets supplémentaires. Cela n'utilise pas vraiment la connexion efficacement comme la plupart du temps, il y a une capacité de réserve.

Y a-t-il un moyen de faire ce que je demande? Est-ce que je vais à ce sujet faux? Je suis (ou plutôt les ménages des questions sont) désireux de dépenser de l'argent sur cette question - qu'il s'agisse d'un routeur/appareil hors tension modérément offert ou d'une boîte générique pour exécuter une distribution Linux ou BSD.

13
pmdj

Si je devais construire quelque chose pour résoudre ce problème, je l'installerais:

Nous allons ici prendre votre exemple de 4 ordinateurs partageant un lien. Le réseau serait façonné comme ceci:

{ ISP }=========[ SOHO router] ===LAN1=== [eth0 |Linux Box| eth1] ===LAN2=== Home Desktops/Laptops

Disons que vous utilisez l'adressage IP statique dans LAN2:

Linux Box 192.168.1.1
Home 1    192.168.1.11
Home 2    192.168.1.12
Home 3    192.168.1.13
Home 4    192.168.1.14

Je voudrais d'abord écrire un petit script pour détecter quels clients sont en train de les piquer et de rédiger un résultat quelque part. "Ceci est laissé comme un exercice pour le lecteur" Calculer le nombre total d'hôtes connectés (1-4)

Assurez-vous de gérer le cas d'aucun hôte en ligne.

Divisez la bande passante totale mais le nombre d'hôtes connectés. (12 Mo pour 1, 6 Mo pour 2, 4 Mo pour 3, 3 Mo pour 4)

Utilisez ensuite TC avec l'algorithme HTB pour limiter la largeur de bande de chaque adresse sur le périphérique latéral WAN. Tout d'abord, créez la classe racine:

DEV="eth0"
TC="/sbin/tc"
TOT_BW=12
$TC qdisc add dev $DEV root handle 1: htb default 99

Ensuite, ajoutez une classe pour chaque "client" (ici, par exemple, 3 clients)

NB_CLT=3
CLT_BW=$(($TOT_BW/$NB_CLT))mbit
for i in seq $NB_CLT
do
    $TC class add def $DEV parent 1: classid 1:$i htb rate $CLT_BW ceil $CLT_BW burst 15k cburst 1500
    $TC filter add dev $DEV protocol ip parent 1:0 prio 1 flowid 1:$i u32 \
     match ip dst 192.168.1.1$i/32 \
     match ip src [Router IP in LAN1]/32
done

(Au-dessus du script est totalement non testé et ne pas taper - sans erreur)

Maintenant, vous devez toujours bien script qui doit être exécuté chaque minute et renouveler des godets/filtres à chaque fois qu'un nouvel hôte monte ou descend.

J'espère que cela vous dirigera dans la bonne direction, bonne chance.

solution alternative

Installez un logiciel QoS local sur tous les hôtes pour restreindre leur bande passante. I Utilisation personnelle Netlimiter (non-free)

4
mveroone

OpenWrt semble le soutenir, bien que je ne l'ai jamais utilisée moi-même. Vous pouvez jeter un coup d'œil à la page Contrôle du trafic résea sur leur site Web, et en particulier le deuxième exemple: partage simple de bande passante simple (aka la forme de trafic) avec HTB . Cela implique de simples appels à QDISC, afin que toute boîte Linux puisse le faire.

2
user2313067

La configuration décrite dans https://superuser.com/a/1210164/257859 Fait exactement que:

[...] Les files d'attente distribuent que BW limitée uniformément entre tous les clients LAN (LAN IPS pour être précis).

0
ndemou