HFSC syntax & units



  • Hi there,
    I read all the documentation I could find about configuring HFSC, and something is still bothering me.
    When considering the 3 parameters (m1,d,m2), I have a hard time grasping what unit I should use and on what it will actually act.

    From what I could understand, sometimes it says to put a percent and seems to act on the total bandwidth of the parent queue, sometimes it says to put a size and it will act for each packet, and sometimes it says to write a speed rate and I guessed it should act on a flow or connection. (at least those are my guesses considering what i read)

    But am I right about that? Is there any detailed documentation about this? I just don't understand if those (m1,m2) parameters act for packet, connection, or globally, and I really could not find an explicit answer to that. And that's the real point bothering me when I want to specify the delay. I'm just trying to enforce a <100ms delay on certain queues, but should I then just put my average packet size for m1?

    Thanks!



  • I know what you are saying, it took me a while to grasp the hfsc concepts. It just isn't that well documented and every guide i'd look it had conflicting information. I resorted to setting up multiple scenarios and seeing how it acted myself.

    Percentages are percentages of the bandwidth of the parent queue.

    "m1" is the rate given during "d" duration, when the duration has passed "m2" will be given until the flow ends. I too came across a post by Ermal stating m1 was packet size but everything else I have read and tested prove otherwise. I can see the connection burst to that m1 value then dial back.

    In your situation, your best bet is to use "realtime" ignore m1 and d and just specify the amount of bandwidth you need available to whatever traffic and set the priority to 7. It will send data out of that queue as fast as it can, always.



  • The thing is, my situation could really use the whole "decouple delay and bandwidth" thing. And I'm in a live environment without that much space for testing.



  • Ok nvm, I think i got it thanks to this post :
    http://forum.pfsense.org/index.php/topic,22885.msg117781.html#msg117781
    Putting a size or a rate should be exactly the same. The parameter d can be both for connection or packet depending of whether you went above that rate during that time.



  • Thanks for posting a followup. It's good to know it will work both ways.



  • @awesomo:

    In your situation, your best bet is to use "realtime" ignore m1 and d and just specify the amount of bandwidth you need available to whatever traffic and set the priority to 7. It will send data out of that queue as fast as it can, always.

    I just wanted to point out that HSFC has no sense of Priority, the fact that there is a spot to specify priority is just a mistake in the GUI.

    HSFC just tries to share bandwidth fairly between all the queues.  Other than the realtime queue which gets it's bandwidth first, which you mentioned.

    It is my mission to make sure everyone knows that HSFC doesn't use priority. :)

    http://forum.pfsense.org/index.php/topic,42798.msg222507.html#msg222507

    Josh


Log in to reply