Implementation details of altq hfsc scheduler in pf 4.5

Maxim Khitrov max at
Thu Dec 15 17:52:47 UTC 2011

On Tue, Dec 13, 2011 at 8:15 AM, RW <rwmaillists at> wrote:
> On Mon, 12 Dec 2011 21:51:39 -0500
> Maxim Khitrov wrote:
>> I've read everything I could find on the topic of configuring hfsc
>> altq in pf (4.5, FreeBSD 9), but I still have no clear idea of how it
>> is actually implemented. I even started looking through the source
>> code, but that might take a while. My main questions are:
>> 1. Difference between 'realtime' and 'linkshare'?
> It's about latency, realtime has priority over non-realtime.

I sort of understand this, but I can't figure out how that would apply
to my example:

altq on $wan hfsc bandwidth 25Mb queue {one, two}
queue one bandwidth 70% hfsc(default, realtime 20%)
queue two bandwidth 30% hfsc(realtime 60%)

If realtime and linkshare priorities are reversed, what happens as
total bandwidth utilization approaches 100%?

>> 2. In service curve configuration (m1, d, m2), what is 'd' relative
>> to?
> It looks like it's a leaky-bucket algorithm. It's not really relative
> to anything except for special cases like a traffic step-function.

Can you please clarify what you mean? I'm familiar with the leaky
bucket algorithm, but it still doesn't answer what triggers the switch
from m1 to m2 and whether it's a per-queue or per-connection setting.

>> 3. Are priorities actually used for anything?
> Priority determines which queue is serviced next when more than one is
> under its limit.

Understood, thanks.

- Max

More information about the freebsd-questions mailing list