2009-06-18 8 views
1

Je voudrais contrôler le volume/la vitesse de téléchargement de mon côté - et du côté du serveur (pour être poli). ... C'est pas à propos de "mon propre gestionnaire de téléchargement". Imaginons: j'autorise mon fils à télécharger au maximum 500 Mo/jour à partir d'utube, et encore, il lance une session pour télécharger un film HD 10Gb. (Pas nécessairement ab contrôle parental, mais techniquement c'est un bon exemple).Contrôler (ralentir) le téléchargement côté serveur

La question que j'ai est: comment limiter. Je veux écrire un pilote qui contrôlerait cela au niveau TCP (IP?). Est-il possible de passer au niveau TCP?

Je sais que je peux le gérer localement (en rétrécissant par exemple la fenêtre TCP que je publie sur le serveur, ou en fermant simplement la connexion après XXX octets). Mais ce que je veux vraiment, c'est dire poliment à l'utube (par exemple): (après que la connexion ait été établie et le téléchargement est en cours): n'essayez pas d'essayer de presser ce film en petits segments, et créer beaucoup de congestion sur le n/w - nous avons terminé. Je voudrais éviter le n/w inutile de quelque côté que ce soit; Au fond je voudrais pouvoir (au niveau TCP) dire à l'autre bout: C'est ça, on en a fini pour aujourd'hui. S'il vous plaît ne pas réessayer de livrer le film entier, je ne suis pas intéressé à regarder le reste (aujourd'hui). (Ainsi, utube cesserait de polluer la bande passante instantanément).

Peut-être vous embrouiller plus - mais nous espérons pour clarifier les choses, - est ici un extrait du « guide définitif à la programmation du réseau Linux », p.31: (Parler de la 6 bits partie de l'en-tête TCP: URG, ACK, PSH, RST, SYS, FIN): "" ... des situations se produisent lorsque les données doivent être transmises hors bande. ... Ceci est la question de savoir si le bit URG entre en jeu. Considérons une connexion utilisateur souhaite abandonner, tels que ... »(etc.)

C'est probablement ce que je cherche. envoyer le utube le « URG » avec « ARRETER » La seule chose qui ne sait pas à moi de ce texte est la « abort ». est-ce « RST »? ou quoi?

S'il vous plaît me pousser un peu dans une bonne direction.

+0

Quel est ce « utube »? –

+0

vous pouvez aussi tenter votre chance sur www.serverfault.com. – akf

Répondre

0

Vous pouvez utiliser l'infrastructure QoS existants faire du trafic dans votre machine Linux

La meilleure façon de le faire est de pour utiliser la commande iproute's tc (ou tcng) pour créer différentes files d'attente et définir des limites pour chaque ET pour utiliser iptables pour classer les paquets dans l'une des files d'attente existantes. Cela vous donnera plus de flexibilité et moins de code à écrire :-) (Ce qui peut être ou ne pas être ce que vous voulez). J'ai trouvé un tool que supposedly rend tout ce processus plus facile.

Exemples here et here.

Vous pouvez également jeter un oeil à Shaperd voir exemple de code (si un peu vieux) qui utilise libipq, qui permet de faire la queue paquet dans l'espace utilisateur (qui a depuis été remplacé par libnetfilter_queue).

Si vous n'utilisez pas Linux, mais Windows, vous pouvez regarder le QoS API ou au logiciel existant qui va le faire pour vous, comme Traffic Shaper

+0

Vinko, c'est très instructif, je creuse dedans. MERCI !!! – bzdjamboo

Questions connexes