Rate limiting (old way and new) - Networking

This is a discussion on Rate limiting (old way and new) - Networking ; Under the old way (using a "shaper#" pseudo-network-device), all one had to do was to attach it, set the desired speed/maximum bandwidth, then route the desired destination address(es) through it. The new way uses the "tc" program from the iproute2 ...

+ Reply to Thread
Results 1 to 4 of 4

Thread: Rate limiting (old way and new)

  1. Rate limiting (old way and new)

    Under the old way (using a "shaper#" pseudo-network-device), all one had to
    do was to attach it, set the desired speed/maximum bandwidth, then route the
    desired destination address(es) through it. The new way uses the "tc"
    program from the iproute2 package. I have searched for examples on how to
    do this with "tc" and have found some, but am still unclear. The manual
    page for "tc" doesn't seem to list all the permutations (or options) of the
    command, nor does it really explain what the different queueing disciplines
    are. I also don't fully follow what the "classes" are and why they're
    needed. The filter subsystem makes sense but also isn't fully explained. I
    would have liked to have found an example of the old, depreciated "shaper0"
    interface and its comparable "tc" setup but such has eluded me.

    Where's a GOOD resource that explains ALL the workings of "tc"?

    The resources I printed so far are:
    http://linux.die.net/man/8/tc-tbf
    http://www.linuxdocs.org/HOWTOs/Adv-...-HOWTO-14.html
    http://www.topwebhosts.org/tools/traffic-control.php
    http://www.linux.org/docs/ldp/howto/...it.single.html

    None of these explain why I need to state the bandwidth for the main device
    in the qdisc line. If the value is really used, I have an added
    complication of that I cannot necessarily determine the value that will be
    used for an ethernet interface (it's a 100Mbit, but the colocation provider
    sometimes attaches a slower ethernet segment (10Mbit or effective 20Mbit as
    10 full-duplex)). I could just follow the examples, but they're meaningless
    unless I understand what they're doing.



  2. Re: Rate limiting (old way and new)

    On Mon, 03 Mar 2008 12:42:21 -0800, D. Stussy wrote:


    Quick and dirty answer as I don't know what exactly you want
    to shape and which parms you want to tune, and sorry but I have
    not much time to devine why you didn't find the "lartc" documents
    clear enough ;-)
    anyway:

    > Under the old way (using a "shaper#" pseudo-network-device), all one had
    > to do was to attach it, set the desired speed/maximum bandwidth, then
    > route the desired destination address(es) through it. The new way uses
    > the "tc" program from the iproute2 package.


    This was the previous "new" way, you may prefer to try
    the "new" new way which uses the 'hashlimit' module and its
    relatives. Sincerely I used the 'tc' way for a lot of different
    trix and am almost done transfering the most of them rules to
    use the new modules. The 'tc' is a really good tool but the
    "recent (somehow)" modules are easier to describe to outsourcers ;-)

  3. Re: Rate limiting (old way and new)

    On Mon, 3 Mar 2008 12:42:21 -0800, "D. Stussy"
    wrote:

    >Under the old way (using a "shaper#" pseudo-network-device), all one had to
    >do was to attach it, set the desired speed/maximum bandwidth, then route the
    >desired destination address(es) through it. The new way uses the "tc"
    >program from the iproute2 package. I have searched for examples on how to
    >do this with "tc" and have found some, but am still unclear. The manual
    >page for "tc" doesn't seem to list all the permutations (or options) of the
    >command, nor does it really explain what the different queueing disciplines
    >are. I also don't fully follow what the "classes" are and why they're
    >needed. The filter subsystem makes sense but also isn't fully explained. I
    >would have liked to have found an example of the old, depreciated "shaper0"
    >interface and its comparable "tc" setup but such has eluded me.
    >
    >Where's a GOOD resource that explains ALL the workings of "tc"?


    My opinion: Where is good documentation for anything in Linux?
    Programmers are poor authors and good authors usually have no clue
    what a program really does.

    >The resources I printed so far are:
    >http://linux.die.net/man/8/tc-tbf
    >http://www.linuxdocs.org/HOWTOs/Adv-...-HOWTO-14.html
    >http://www.topwebhosts.org/tools/traffic-control.php
    >http://www.linux.org/docs/ldp/howto/...it.single.html
    >
    >None of these explain why I need to state the bandwidth for the main device
    >in the qdisc line. If the value is really used, I have an added
    >complication of that I cannot necessarily determine the value that will be
    >used for an ethernet interface (it's a 100Mbit, but the colocation provider
    >sometimes attaches a slower ethernet segment (10Mbit or effective 20Mbit as
    >10 full-duplex)). I could just follow the examples, but they're meaningless
    >unless I understand what they're doing.


    I think you're looking in the wrong place. For simple rate limiting,
    check iptables.

    TC has no decent docs. You have found what there is. Your situtation
    prevents the use of a queueing discipline because these only work when
    the available bitrate has an absolute maximum that never varies.
    --
    buck


  4. Re: Rate limiting (old way and new)

    "buck" wrote in message
    news:hbqts39fi7p60sgcq7sfu472hfn0pbmhbu@4ax.com...
    > On Mon, 3 Mar 2008 12:42:21 -0800, "D. Stussy"

    wrote:
    > >Under the old way (using a "shaper#" pseudo-network-device), all one had

    to
    > >do was to attach it, set the desired speed/maximum bandwidth, then route

    the
    > >desired destination address(es) through it. The new way uses the "tc"
    > >program from the iproute2 package. I have searched for examples on how

    to
    > >do this with "tc" and have found some, but am still unclear. The manual
    > >page for "tc" doesn't seem to list all the permutations (or options) of

    the
    > >command, nor does it really explain what the different queueing

    disciplines
    > >are. I also don't fully follow what the "classes" are and why they're
    > >needed. The filter subsystem makes sense but also isn't fully explained.

    I
    > >would have liked to have found an example of the old, depreciated

    "shaper0"
    > >interface and its comparable "tc" setup but such has eluded me.
    > >
    > >Where's a GOOD resource that explains ALL the workings of "tc"?

    >
    > My opinion: Where is good documentation for anything in Linux?
    > Programmers are poor authors and good authors usually have no clue
    > what a program really does.
    >
    > >The resources I printed so far are:
    > >http://linux.die.net/man/8/tc-tbf
    > >http://www.linuxdocs.org/HOWTOs/Adv-...-HOWTO-14.html
    > >http://www.topwebhosts.org/tools/traffic-control.php

    >
    >http://www.linux.org/docs/ldp/howto/...atelimit.singl

    e.html
    > >
    > >None of these explain why I need to state the bandwidth for the main

    device
    > >in the qdisc line. If the value is really used, I have an added
    > >complication of that I cannot necessarily determine the value that will

    be
    > >used for an ethernet interface (it's a 100Mbit, but the colocation

    provider
    > >sometimes attaches a slower ethernet segment (10Mbit or effective 20Mbit

    as
    > >10 full-duplex)). I could just follow the examples, but they're

    meaningless
    > >unless I understand what they're doing.

    >
    > I think you're looking in the wrong place. For simple rate limiting,
    > check iptables.


    Actually, using iptables doesn't do the job as I want the additional packets
    queued or delayed (but still eventually sent), not dropped or rejected.

    > TC has no decent docs. You have found what there is. Your situtation
    > prevents the use of a queueing discipline because these only work when
    > the available bitrate has an absolute maximum that never varies.


    I have continued to explore and found that only the cbq qdisc had this
    brain-dead arrangement. The htb and tbf qdiscs were much more reasonable,
    and I think I figured out something that works for me using them. However,
    getting all the parameters correctly stated took about an hour as for many
    of them, the man pages dont' really cover them well. I probably have some
    that are unnecessary - carried from the examples I found.

    I really liked the reference to the "tc-filters" man page which doesn't even
    exist!

    What I needed to do was to rate-limit outbound packets to a particular
    destination IP. That should have been obvious from my reference to the
    depreciated "shaper0" virtual interface.



+ Reply to Thread