Forum Linux.debian/ubuntu partager la bande passante d'une connection internet mutualisée ?

Posté par  .
Étiquettes :
2
24
oct.
2010
Bonjour,

Je cherche à configurer un routeur linux (PC debian squeeze) pour que la bande passante internet qu'il distribue à plein d'utilisateurs soit à peu près partagée.(pour l'instant il est configuré en routeur NAT avec un proxy transparent, donc les gentils utilisateurs subissent les moins gentils)

J'ai lu un peu de documentation sur 'tc', sur les qdiscs HTB,CQB.... et je me pose des questions assez générales:

1) beaucoup de documentations parlent de linux 2.4 ? Est-ce que 'tc' (qui visiblement est la partie utilisateur du bidule dans le noyau) est toujours ce qui se fait de mieux dans ce domaine ?

2) j'ai l'impression que CQB est plus ou moins en retrait par rapport à HSCB et HTB (plus récent) ?

3) mon premier objectif serait de comptabiliser la 'consommation internet' d'une IP et de "pénaliser" (le tout automatiquement) les très gros téléchargeurs pendant les heures de pointe...

exemple: A télécharge à 100% de la BP totale de 4 à 6h du matin, puis B,C,D,E,F se réveillent mais A n'arrête pas pour autant son téléchargement, donc ce serait bien que B,C,D,E,F se partagent presque l'intégralité de la bande passante au détriment de A (disons au moins jusqu'à ce que B,C,D,E,F aient téléchargé la même quantité .... )

est-ce trop naïf ? est-ce jouable ?

merci d'avance

Merci pour vos conseils
  • # qq réponses

    Posté par  (site web personnel) . Évalué à 2.

    1) tc n'est pas ce qui se fait de mieux ... c'est la commande de base inévitable qui sert à configuer les ordonnanceurs.

    2) Je ne connais pas trop cbq. Hscb et htb te permettent de mettre des contraintes styles b,c,d,e,f ont 20% de la bande passante garantie et a 0% bien sûr :).

    3) à l'aide des compteurs iptables et de scripts, tu dois pouvoir reconfigurer tes ordonnanceurs.

    4) Tu as un gros problème ... un proxy transparent. Il faut que tu fasse la police à l'entrée de ton proxy (imq de mémoire ...)
    • [^] # Re: qq réponses

      Posté par  . Évalué à 1.

      Merci pour tes reponses.

      concernant 4) je n'ai pas compris ta remarque ? c'est quoi le probleme de proxy transparent, c'est legal ou technique ?
      • [^] # Re: qq réponses

        Posté par  (site web personnel) . Évalué à 2.

        La réponse est technique

        Tu n'a aucun pouvoir sur les paquets qui arrivent : Ils arrivent et ton noyau les traites. Que tu droppes des paquets en entrée ou non, ne change rien à la bande passante utilisée sur ce lien puisque tu ne contrôles pas leur émission.

        C'est pour ça qu'on attache des ordonnanceurs en général en sortie d'interface, car tu contrôles l'émission des paquets sur ce lien.

        Néanmoins, tu peux dropper en entrée à l'aide d'interface réseau virtuelle (imq/) qui sert uniquement à attacher tes ordonnanceurs (qui agissent sur la sortie d'une interface réseau). L'interface agit comme un tampon, mais le mal est déjà fait car les paquets ont déjà transité sur ton réseau interne.

        En clair, l'ordonnancement en entrée a un mauvais rendement et la norme est de mettre des ordonnanceurs en sortie :)

        Pourquoi je t'en parles ? Parce que si tu as un proxy transparent (je suppose squid/dnsmasq avec du nat), toutes tes connexions sortent sur Internet avec la même adresse IP.

        Tu ne pourras donc pas discriminer les flux en sorties suivant l'utilisateur, d'où la nécessité de filtrer en entrée avec imq.
        • [^] # Re: qq réponses

          Posté par  . Évalué à 1.

          merci pour la précision,

          visiblement, t'as du dire une bétise parceque ton commentaire à été massacré sans autre explication. Les tontons flingueurs surement.... avec silencieux....

          je tente une explication sans être 100% certain:

          le proxy ne change pas grand chose à la donne, la qualité de service est là pour aider à un bon partage de la bande passante, hors le proxy c'est uniquement un logiciel qui met en cache certaines des données d'un certain type d'utilisation de cette bande passante (le web)

          Tes remarques sur le fait qu'on ne controle pas ce qui arrive en entrée, je les ai lues plusieurs fois sur les HOWTO de QOS mais dans tous les cas, le proxy me semble innocent...... d'où mon incompréhension.........

          bon, j'enfile mon gilet pare-`-1` et je met mon doigt sur ma souris en attendant :-)
          • [^] # Re: qq réponses

            Posté par  (site web personnel) . Évalué à -1.

            Le système de notation de Linuxfr est mal foutu ... je poste rarement et mes posts se retrouvent en note négative lorsque je les publie (pourtant, je crois que j'ai très peu de commentaires négatif). C'est aussi légitime que notre président actuel.

            Bref Linuxfr comme forum, c'est pas la panacée. Les notes servent à rien, les utilisateurs ne notent pas suivant le contenu des posts.

            (En plus, j'avais posté un 2eme commentaire hier, sur ta file, qui est visiblement passé à la trappe)

            Si j'ai dit une bêtise, j'aimerais qu'un contradicteur se manifeste ...

            Que fait ton proxy ? Il choppe toutes les requêtes http. Si la requête n'est pas dans le cache, il va chercher lui-même (avec sa propre adresse ip et son propre adresse source) la page (du côté de l'interface wan), perdant ainsi l'origine de la source. Si tu veux inclure le web dans ta qos, il pose problème pour différencier tes utilisateurs car les règles se mettent sur l'interface de sortie en général comme je l'ai déjà dit et tout ce que tu verras ici, c'est les requêtes d'un même et unique utilisateur : ton proxy.

            Comme tu ne peux pas différencier tes flux web en sortie, tu es obligé de le faire en entrée.
  • # Commentaire supprimé

    Posté par  . Évalué à 2.

    Ce commentaire a été supprimé par l’équipe de modération.

    • [^] # Re: iptables + tc

      Posté par  . Évalué à 2.

      merci pour ta reponse,

      a priori je ne sais pas qui telecharge le plus. et puis visiblement d'autres ont commente que ma strategie etait trop naive...... mais je vais garder tes exemples dans mon sac d'outils.
      • [^] # Commentaire supprimé

        Posté par  . Évalué à 3.

        Ce commentaire a été supprimé par l’équipe de modération.

  • # QoS

    Posté par  (site web personnel) . Évalué à 1.

    Tu l'as sans doute déjà fait, ma active la QoS, ça peut faire une très grosse différence en terme de perception de la fluidité!

    Mathias
    PS: je l'utilise via un router Linksys WRT54GL tournant sous ddwrt, c'est vraiment un gros plus pour le confort d'utilisation
    • [^] # Re: QoS

      Posté par  . Évalué à 1.

      merci pour ta reponse,

      j'ai moi aussi un routeur WRT54GL, je vais regarder si j'arrive a comprendre ce qu'il fait precisement lors j'active la QOS (par contre je suis sous openwrt). Ce sera une source d'inspiration pour fabriquer mon routeur.
  • # Une réponse

    Posté par  . Évalué à 3.

    1) Aucune idée, si y’a mieux je suis demandeur aussi. :) Si on est en IPv4 l’astuce avec iptable marche bien, par contre je ne crois pas que ce soit possible avec IPv6 (mais je n’ai jamais essayé non plus).

    2) CQB semble plus difficile à paramétrer surtout, alors qu’HTB est ultra simple. Donc forcément…

    3) trop naïf : oui, car ça va pénaliser ceux qui font attention de télé-charger en « heures creuses »… si c’est à faire il faudra peut-être veiller à associer un poids plus important aux téléchargements en « heures pleines », ie. ne pénaliser que si la bande passante est demandée. en tout cas avec tc c’est faisable, avec un script qui tourne et se réveille de temps à autre : tc -s class/qdisc show (de mémoire) permet de voir la quantité échangée depuis le début de la configuration (donc par différence de savoir la quantité télé-chargée entre deux dates, et la vitesse moyenne), et ce dans chaque class/qdisc. Ça demande un peu de boulot. D’où le point 1 :(.
    • [^] # Re: Une réponse

      Posté par  . Évalué à 1.

      merci pour ta reponse,

      bon point pour 3)

      finalement il faudrait que ce soit encore plus fin que l'addresse IP, peut-etre par connection ? ce serait super de pouvoir penaliser uniquement le flux (genre telecharment d'une enorme ISO).... apres tout, il ne serait effectivement pas interdit de telecharger massivement la nuit et de faire du web le jour.... Le probleme c'est que c'est delicat de faire le tri entre les appli, du coup, je me disais que le vrai critere c'etait le volume deja transfere.....
      • [^] # Re: Une réponse

        Posté par  (site web personnel) . Évalué à 3.

        Mon tour de m'essayer à un commentaire naïf... :-)

        Au lieux de comptabiliser la somme du trafic sur 24 heures (qui est plus ou moins ce que tu proposes), ne vaut-il pas plutôt simplement partager la bande passante disponible? C'est à dire, au lieux de dire "A a téléchargé 1G cette nuit, donc B à doit à 1G tout de suite", simplement dire "A à droit à (bande passante disponible)/(nombre d'utilisateurs)", éventuellement moyenné sur les dernières 15 minutes (mais une telle répartition doit bein être déjà disponible quelque par comme configuration standard!).

        Ceci revient à favoriser les gros usages de bande passante pendant les heures creuses (car il n'y a pas de compétition, donc beaucoup de débit disponible) et à pénaliser quelqu'un qui consommerais beaucoup quand tout le monde à besoin de la bande passante. Évidement, si il y a derrière une tarification à la quantité échangée, cela ne sert à rien (mais je doute que se soit le cas!)

        Mathias
        PS: c'est tellement naïf que je me dis que c'est ce qui doit être le comportement par défaut de partout, mais bon...
        • [^] # Re: Une réponse

          Posté par  . Évalué à 1.

          oui en fait, mon truc c'était trop compliqué, ceux qui font de l'internet la nuit consomment quelquechose qui ne coûte rien et qui n'emmerde personne donc inutile de les freiner au petit matin.....

          par contre, il me vient des idées de contournement de tous ces dispositifs:

          si j'étais utilisateur d'un réseau avec QOS basé sur l'IP ou la MAC, ne me suffirait-il pas de déclarer 42 interfaces virtuelles sur mon PC et de faire un demande d'addresse IP de plus puis de lancer je-ne-sais-comment (on appelle ça une expérience de pensée en physique) mes 42 applis consommatrices de bande passante ?
      • [^] # Re: Une réponse

        Posté par  (site web personnel) . Évalué à 0.

        Tu as plusieurs paramètres où tu peux agir:

        - "l'utilisateur" : par exemple l'IP -> htb ou hsfc en gros :)
        - les flux générés par cet utilisateurs : le quintuple classique (ip src,dst, port src, dst, proto)

        Le principe d'htb, c'est de faire un arbre pour définir tes contraintes ( par exemple la racine avec tous les utilisateurs qui ont le même minimum garanti). C'est le niveau "utilisateur"

        Après, à chaque feuille de ton htb tu peux attacher une queue (qdisc) qui pénalise les connexions longues : par exemple sfq.
  • # Shorewall

    Posté par  . Évalué à 1.

    Pour faire ce genre de choses, et bien d’autres, j’utilise le firewall "Shorewall" [http://en.wikipedia.org/wiki/Shorewall].

    La page suivante décrit les possibilités de "Shorewall" en termes de qualité de service.
  • # j'arrive peut être après la bataille

    Posté par  . Évalué à 4.

    Mais pour répondre à la première problèmatique (ie pénaliser ceux qui téléchargent trop)
    Ce qui est fait traditionnellement, c'est

    1°) Définir si des flux sont prioritaires (ACK par exemple, flux ssh ou d'administration).
    Ceux là ont une priorité élevée (utilisation de "prio").

    2°) Ensuite, sur une priorité moins élevée :
    a- allouer à tout le monde une réservation qui correspond à (n+m)/(bp_cx-K)
    ou n est le nombre de connexion
    m le nombre de canaux de garde (ie réservé pour une utilisation future etc...)
    bp_cx la bande passante de ta connexion
    K la bande passante utilisé par les flux prioritaires
    b- permettre à tout le monde d'utiliser la bande passante non utilisée.

    Tu peux utiliser HTB pour le faire, ou d'autres files (sfq, RED, ...). Chacune a ses particularité et dépend du contexte d'utilisation.
    Dans un cadre général, HTB est largement suffisant.

    Ainsi : certains flux sont sur de passer.
    tout le monde est sur d'avoir un minimum de bande passante.
    Celui qui a lancé le téléchargement n'utilise que ce qui n'est pas réservé.
    Si deux utilisateurs dépassent leur réservation, ca sera en round robin/...


    Ensuite en ce qui concerne le drop de paquet sur l'interface d'entrée : cela n'a pas d'effet en "général", mais en "particulier" sur un flux tcp, cela à bel et bien un effet.
    Les fenêtres de transmissions vont être diminuée, etc...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.