Le Shaper Wonder est un script très spécial de mise en forme de réseau avec un grand nombre de fonctionnalités. Fonctionne sur Linux 2.4 et supérieur.
Buts
Je tentais de créer le Saint Graal:
* Maintenir une faible latence pour le trafic interfactive à tout moment.
Cela signifie que le téléchargement ou le téléchargement de fichiers ne doivent pas perturber SSH ou même telnet. Ce sont des choses les plus importantes, même latence de 200ms est lent à travailler plus.
* Autoriser 'surf' à des vitesses raisonnables tout en haut ou téléchargement
Même si http est le trafic «en vrac», autre trafic ne devrait pas le noyer trop.
* Assurez-vous que les téléchargements ne nuisent pas de téléchargements, et dans l'autre sens
Ceci est un phénomène beaucoup observé où le trafic en amont détruit tout simplement la vitesse de téléchargement. Il se trouve que tout cela est possible, au prix d'un petit peu de bande passante. La raison pour laquelle ajouts, des téléchargements et ssh eachother mal est la présence de grandes files d'attente dans de nombreux dispositifs d'accès domestiques comme les modems câble ou DSL.
Pourquoi ça ne marche pas bien par défaut
FAI savent qu'ils sont étalonnées uniquement sur comment les gens peuvent télécharger rapides. Outre la bande passante disponible, la vitesse de téléchargement est fortement influencée par la perte de paquets, ce qui entrave sérieusement les performances TCP / IP. Grandes files d'attente peuvent aider à prévenir packetloss, et d'accélérer les téléchargements. Donc FAI configurent grandes files d'attente.
Ces grandes files d'attente endommagent cependant l'interactivité. Une frappe doit d'abord parcourir la file d'attente en amont, qui peut être secondes (!) De long et accédez à votre hôte distant. Il est alors affichée, ce qui conduit à un paquet de retour qui doit alors parcourir la file aval, situé à votre FAI, avant qu'il apparaisse sur votre écran.
Ce guide pratique vous apprend à modifier et traiter la file d'attente de plusieurs façons, mais, malheureusement, toutes les files d'attente ne sont pas accessibles pour nous. La file d'attente plus au niveau du FAI est complètement hors-limites, alors que la file d'attente amont vit probablement à l'intérieur de votre modem câble ou DSL dispositif. Vous pouvez ou ne pas être en mesure de le configurer. Très probablement pas.
Alors, que faire? Comme nous ne pouvons pas contrôler ou l'autre de ces files d'attente, ils doivent être éliminés, et a déménagé à votre routeur Linux. Heureusement, cela est possible.
Limiter la vitesse de téléchargement peu
En limitant notre vitesse à un peu moins d'upload que le taux réellement disponible, pas de files d'attente sont construits dans notre modem. La file d'attente est maintenant déménagé à Linux.
Limiter la vitesse de téléchargement
Ce chiffre est légèrement plus difficile que nous ne pouvons pas vraiment influencer quelle vitesse l'Internet nous navires données. Nous pouvons cependant abandonner les paquets qui arrivent trop vite, ce qui provoque TCP / IP de ralentir pour seulement le taux que nous voulons. Parce que nous ne voulons pas supprimer inutilement du trafic, nous configurons une taille «éclater», nous permettons à une vitesse supérieure.
Maintenant, une fois que nous l'avons fait, nous avons éliminé totalement la file d'attente aval (sauf pour de courtes rafales), et d'acquérir la capacité de gérer la file d'attente en amont avec toute la puissance Linux.
Laissez le trafic interactif sauter la file d'attente
Qu'est-ce qui reste à faire est de vous assurer que le trafic interactif saute à l'avant de la file d'attente en amont. Pour vous assurer que les téléchargements ne font pas mal de téléchargements, nous nous déplaçons également les paquets ACK à l'avant de la file d'attente. Ceci est ce qui provoque normalement l'énorme ralentissement observé lors de la génération de trafic en vrac dans les deux sens. Les paquets ACK du trafic descendant concurrence avec le trafic en amont et être retardés dans le processus.
Nous nous déplaçons également d'autres petits paquets à l'avant de la file d'attente - cela aide les systèmes d'exploitation qui ne sont pas définies bits TOS, comme tout à partir de Microsoft.
Permettre à l'utilisateur de spécifier faible trafic prioritaire (nouveau en 1.1!)
Parfois, vous remarquerez peut-être le trafic sortant de faible priorité ralentissement important trafic. Dans ce cas, les options suivantes peuvent vous aider:
NOPRIOHOSTSRC
Réglez ce à des hôtes ou masques de réseau de votre réseau qui devraient avoir une faible priorité
NOPRIOHOSTDST
Réglez ce à des hôtes ou masques de réseau sur l'Internet qui devrait avoir une faible priorité
NOPRIOPORTSRC
Réglez-le sur les ports source qui devraient avoir une faible priorité. Si vous avez un serveur web sans importance sur votre trafic, réglez ce à 80
NOPRIOPORTDST
Réglez-le sur les ports de destination qui devraient avoir une faible priorité.
Voir le début de wshaper et wshaper.htb
Résultats
Si nous faisons tout ce que nous obtenir les mesures suivantes à l'aide d'une excellente connexion ADSL à partir xs4all aux Pays-Bas:
Latence de base:
aller-retour min / avg / max = 14.4 / 17.1 / 21.7 ms
Sans le conditionneur de trafic, tout en téléchargeant:
aller-retour min / avg / max = 560,9 / 573,6 / 586,4 ms
Sans le conditionneur de trafic, lors du téléchargement:
aller-retour min / avg / max = 2041,4 / 2332,1 / 2427,6 ms
Avec conditionneur, lors de téléchargement de 220kbit /:
aller-retour min / avg / max = 15,7 / 51,8 / 79,9 ms
Avec conditionneur, lors de téléchargement de 850kbit /:
aller-retour min / avg / max = 20,4 / 46,9 / 74,0 ms
Lors du téléchargement, téléchargements procèdent à ~ 80% de la vitesse disponible. Envois à environ 90%. Latence saute alors à 850 ms, toujours à comprendre pourquoi.
Qu'est-ce que vous pouvez attendre de ce script dépend beaucoup de votre vitesse de liaison montante réelle. Lors du téléchargement à pleine vitesse, il y aura toujours un paquet devant votre frappe. Telle est la limite inférieure à la latence, vous pouvez obtenir - divisez votre MTU par votre vitesse en amont pour calculer. Les valeurs typiques seront un peu plus élevés que cela. Réduisez votre MTU pour de meilleurs effets!
Une petite table:
vitesse d'Uplink | latence attendue en raison de télécharger
--------------------------------------------------
32 | 234ms
64 | 117ms
128 | 58ms
256 | 29ms
Donc, pour calculer votre temps de latence efficace, prendre une mesure de référence (ping sur un lien déchargé), et rechercher le numéro dans le tableau, et l'ajouter. Cela représente environ le meilleur que vous pouvez vous attendre. Ce nombre vient d'un calcul qui suppose que votre frappe amont aura au plus la moitié d'un paquet complet de taille devant elle.
Cela revient à:
MTU * 0,5 * 10
-------------- + Baseline_latency
kbit
Le facteur 10 est pas tout à fait correct, mais fonctionne bien dans la pratique.
Votre noyau
Si vous utilisez une distribution récente, tout devrait être ok. Vous devez 2.4 avec QoS des options activées.
Si vous compilez votre propre noyau, il doit avoir certaines options activées. Plus particulièrement, dans le menu Options réseau, QoS et / ou équitable Queueing, tourner au moins CBQ, PRIO, SFQ, Ingress, la circulation de la police, QoS, estimateur Taux, QoS classificateur, U32 classificateur, fwmark classificateur.
Dans la pratique, je (et la plupart des distributions) viens de tourner sur tout.
Les scripts
Le script est disponible en deux versions, une qui travaille sur les noyaux standard et est implémenté en utilisant CBQ. L'autre utilise l'excellent gestionnaire de file d'HTB qui ne soit pas dans le noyau par défaut. La version CBQ est plus testé que le HTB un!
Voir «wshaper» et «wshaper.htb '.
Réglage
Ces scripts ont besoin de connaître le taux «réel» de votre connexion FAI. Il est difficile de déterminer d'avance que les différents FAI utilisent différents types de bits il apparaît. Les gens disent succès en utilisant la technique suivante:
Estimer vos deux amont et en aval à la moitié du taux indiqué par votre FAI. Maintenant, vérifier si le script fonctionne - vérifier l'interactivité pendant le chargement et pendant le téléchargement. Cela devrait fournir la latence calculée comme ci-dessus. Sinon, vérifiez si le script exécuté sans erreurs.
Maintenant augmenter lentement les numéros en amont et en aval dans le script jusqu'à ce que le temps de latence revient. De cette façon, vous pouvez trouver les valeurs optimales pour votre connexion. Si vous êtes heureux, s'il vous plaît me rendre compte que je puisse faire une liste de numéros qui fonctionnent bien. S'il vous plaît laissez-moi savoir quel FAI vous utilisez et le nom de votre abonnement, et ses spécifications réputés, donc je peux vous énumérer ici et sauver d'autres la peine.
Installation
Si vous vous connectez, vous pouvez copier le script à /etc/ppp/ip-up.d et il sera exécuté à chaque connexion.
Si vous souhaitez supprimer le shaper partir d'une interface, exécutez 'arrêt wshaper'. Pour voir les informations d'état, exécutez 'wshaper état'.
PROBLEMES CONNUS
Si vous obtenez des erreurs, ajouter un -x à la première ligne, comme suit:
#! / Bin / bash -x
Et réessayez. Cela va vous montrer quelle ligne donne une erreur. Avant de me contacter, assurez-vous que vous utilisez une version récente de iproute!
Les versions récentes peuvent être trouvés chez votre distributeur de Linux, ou si vous préférez la compilation, ici:
ftp://ftp.inr.ac.ru/ip-routing/iproute2-current.tar.gz
Détails logiciels:
Version: 1.1a
Date de transfert: 2 Jun 15
Licence: Gratuit
Popularité: 55
Commentaires non trouvées