Je me rends compte que de nombreuses questions similaires ont déjà été posées, mais jusqu'à présent, je n'ai pas encore trouvé de solution à mon problème.
J'ai un serveur Linux virtuel (exécutant Debian Squeeze) que j'utilise pour tester les vitesses des sites Web afin de mesurer l'augmentation et la diminution du temps de chargement desdits sites Web. J'essaie de limiter la bande passante et la latence de ce serveur afin d'être en mesure de se rapprocher des temps de chargement réels sur les sites Web, mais j'ai jusqu'à présent échoué.
Ce que je veux en particulier, c'est ce qui suit:
- Pour définir une latence entrante et sortante de 50 ms.
- Pour définir une limite de bande passante entrante de 512 kbps.
- Pour définir une limite de bande passante sortante de 4096 kbps.
J'ai lu sur netem et utilisé la tc
commande, mais c'est toujours un peu au-dessus de ma tête. J'ai réussi à assembler cette commande pour contrôler la latence qui semble fonctionner, mais je ne suis même pas sûr si cela ne gère que la latence sortante ou les deux:
tc qdisc add dev eth0 root netem delay 50ms
Des gourous du réseau qui pourraient m'aider?
Éditer:
Après de nouvelles recherches, j'ai atteint la moitié de mon objectif, en utilisant cette commande, tout le trafic sortant se comporte comme je le souhaite:
tc qdisc add dev eth0 root tbf rate 4.0mbit latency 50ms burst 50kb mtu 10000
Cependant, je n'ai toujours pas été en mesure de limiter correctement le trafic entrant. J'ai appris que je suis censé utiliser un "filtre Ingress Policer". J'ai essayé de faire exactement cela avec la commande ci-dessous, en jouant avec différentes valeurs, mais pas de chance.
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match ip src 0.0.0.0/0 flowid :1 police rate 1.0mbit mtu 10000 burst 10k drop
La bande passante est cependant affectée par la commande, les valeurs ci-dessus font démarrer la vitesse à 2 Mo / s et, à mesure qu'un transfert progresse, descendant lentement à environ 80 à 90 Ko / s, qu'elle atteint après environ 30 secondes de transfert.
Des idées sur ce que je fais mal?
la source
netem delay 50ms
ne limite pas la latence. Il augmente la latence par50ms
rapport à ce qu'elle aurait été autrement.Réponses:
Je me suis finalement contenté de définir la bande passante / latence sortante sur le serveur, puis de faire de même sur le client, pour atteindre effectivement le même résultat.
Ce sont les commandes que j'ai exécutées sur le serveur et le client respectivement pour atteindre mes objectifs:
Serveur: 4 Mbit 50 ms
Client: 512 kbit 50 ms
la source
Quelque 80-90 kByte / s est à quoi s'attendre de
Vous demandez que les données entrantes soient jetées lorsqu'elles arrivent à 1 mBit / s, soit environ 125 kByte / s. Le serveur distant chutera alors considérablement plus bas que cela (peut-être la moitié, pas sûr). Après cela, tous les paquets transitent, donc l'extrémité distante prend lentement de la vitesse jusqu'à ce que 125 kByte / s soient à nouveau atteints. Vous obtenez une moyenne débit considérablement inférieur à 125 koctets / s, ce qui est typique de la mise en forme d'entrée.
Je suis un peu surpris que la vitesse atteigne 2 Mo / s avec le filtre de stratégie d'entrée déjà en place. Où avez-vous mesuré - sur le client en aval (programme) ou sur un routeur en amont? Ou peut-être que vous avez commencé la connexion pour la première fois et que vous avez ensuite activé le filtre de stratégie d'entrée en place?
la source