HFSC hierarchical depth limit?
-
I had/have this setup
Interface 1Gb
–qInternet Upper: 48Mb
----qHigh LS: 20%
------qGames ...
------qVoIP ...
------qBlahBlahBlah ...
----qBulk LS: 80%
–----qNormal LS: 80%
--------qWeb ...
--------qVPN ...
--------qBlahBlahBlah ...
------qLow LS: 20%
–------qDefault LS 30%
–------qP2P LS 30%
--------qUnknownUDP LS 30%I haven't tried all of the other queues, but qDefault was maxing out 38Mb, which is only 80% of the 48Mb. I changed qBulk to 90%, and qDefault is now maxing out at 44Mb, which is 90%. qDefault seems to be "borrowing" bandwidth up to 2 parent queues deep, but is not borrowing from qHigh. I assume I need to collapse my hierarchy at least one level?
Now that I'm thinking of it, I should have just moved qDefault directly under qBulk. I'll try that when I get home.
Thanks :-)
-
Yep, moved qDefault directly under qBulk and it was able to use 100% of the speed, and I even tried setting qBulk down to 50% before moving it, and it did reduce the max speed to 50%.
I got rid of qBulk and just broke out qNormal and qLow, and it seems to be working fine. Anyone one leaf queue may consume up to 100% of the speed, as long as it's free.
-
Could you share your config please? Either the XML or a screen?
-
Old Setup
<shaper><queue><interface>wan</interface> <name>wan</name> <scheduler>HFSC</scheduler> <bandwidth>48</bandwidth> <bandwidthtype>Mb</bandwidthtype> <enabled>on</enabled> <queue><name>pHigh</name> <interface>wan</interface> <priority>1</priority> <bandwidth>20</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <upperlimit3>95%</upperlimit3> <queue><name>qACK</name> <interface>wan</interface> <qlimit>5000</qlimit> <priority>5</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>20%</realtime3> <realtime>on</realtime></queue> <queue><name>qGames</name> <interface>wan</interface> <qlimit>5000</qlimit> <priority>6</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>10%</realtime3> <realtime>on</realtime></queue> <queue><name>qDNS</name> <interface>wan</interface> <qlimit>1000</qlimit> <priority>1</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>2%</realtime3> <realtime>on</realtime></queue> <queue><name>qICMP</name> <interface>wan</interface> <qlimit>500</qlimit> <priority>7</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>1%</realtime3> <realtime>on</realtime></queue> <queue><name>qVoIP</name> <interface>wan</interface> <qlimit>2500</qlimit> <priority>5</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>10%</realtime3> <realtime>on</realtime></queue> <upperlimit>on</upperlimit></queue> <queue><name>pBulk</name> <interface>wan</interface> <priority>1</priority> <bandwidth>80</bandwidth> <bandwidthtype>%</bandwidthtype> <red>red</red> <enabled>on</enabled> <queue><name>pNormal</name> <interface>wan</interface> <priority>1</priority> <bandwidth>80</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <queue><name>qWeb</name> <interface>wan</interface> <qlimit>2500</qlimit> <priority>1</priority> <bandwidth>10</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled></queue> <queue><name>qVPN</name> <interface>wan</interface> <qlimit>2500</qlimit> <priority>3</priority> <bandwidth>10</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled></queue></queue> <queue><name>pLow</name> <interface>wan</interface> <priority>1</priority> <bandwidth>20</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <queue><name>qP2P</name> <interface>wan</interface> <qlimit>2500</qlimit> <priority>1</priority> <bandwidth>30</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled></queue> <queue><name>qDefault</name> <interface>wan</interface> <qlimit>2500</qlimit> <priority>1</priority> <bandwidth>30</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <default>default</default></queue> <queue><name>qLowUDP</name> <interface>wan</interface> <qlimit>2500</qlimit> <priority>3</priority> <bandwidth>30</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>5%</realtime3> <realtime>on</realtime></queue></queue> <upperlimit3>95%</upperlimit3> <upperlimit>on</upperlimit></queue></queue> <queue><interface>lan</interface> <name>lan</name> <scheduler>HFSC</scheduler> <bandwidth>1</bandwidth> <bandwidthtype>Gb</bandwidthtype> <enabled>on</enabled> <queue><name>qLink</name> <interface>lan</interface> <qlimit>2000</qlimit> <priority>2</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled></queue> <queue><name>pInternet</name> <interface>lan</interface> <bandwidth>48</bandwidth> <bandwidthtype>Mb</bandwidthtype> <enabled>on</enabled> <ecn>ecn</ecn> <upperlimit3>48Mb</upperlimit3> <queue><name>pHigh</name> <interface>lan</interface> <bandwidth>20</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <upperlimit3>95%</upperlimit3> <queue><name>qACK</name> <interface>lan</interface> <qlimit>2500</qlimit> <priority>5</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>9600Kb</realtime3> <realtime>on</realtime></queue> <queue><name>qGames</name> <interface>lan</interface> <qlimit>2500</qlimit> <priority>6</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>9600Kb</realtime3> <realtime>on</realtime></queue> <queue><name>qDNS</name> <interface>lan</interface> <qlimit>2500</qlimit> <priority>3</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>1Mb</realtime3> <realtime>on</realtime></queue> <queue><name>qICMP</name> <interface>lan</interface> <qlimit>1000</qlimit> <priority>7</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>0.5Mb</realtime3> <realtime>on</realtime></queue> <queue><name>qVoIP</name> <interface>lan</interface> <qlimit>2500</qlimit> <priority>6</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>5Mb</realtime3> <realtime>on</realtime></queue> <upperlimit>on</upperlimit></queue> <queue><name>pBulk</name> <interface>lan</interface> <priority>1</priority> <bandwidth>80</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <upperlimit3>95%</upperlimit3> <queue><name>pLow</name> <interface>lan</interface> <priority>1</priority> <bandwidth>20</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <queue><name>qP2P</name> <interface>lan</interface> <qlimit>2500</qlimit> <priority>1</priority> <bandwidth>30</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <red>red</red></queue> <queue><name>qDefault</name> <interface>lan</interface> <qlimit>2500</qlimit> <priority>3</priority> <bandwidth>30</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <default>default</default> <red>red</red></queue> <queue><name>qLowUDP</name> <interface>lan</interface> <qlimit>2500</qlimit> <priority>3</priority> <bandwidth>30</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <red>red</red> <realtime3>5Mb</realtime3> <realtime>on</realtime></queue> <upperlimit3>98%</upperlimit3> <upperlimit>on</upperlimit></queue> <queue><name>pNormal</name> <interface>lan</interface> <priority>1</priority> <bandwidth>80</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <queue><name>qWeb</name> <interface>lan</interface> <qlimit>5000</qlimit> <priority>3</priority> <bandwidth>10</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled></queue> <queue><name>qVPN</name> <interface>lan</interface> <qlimit>5000</qlimit> <priority>5</priority> <bandwidth>10</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled></queue></queue> <upperlimit>on</upperlimit></queue> <upperlimit>on</upperlimit></queue></queue></shaper>
New Setup
<shaper><queue><interface>wan</interface> <name>wan</name> <scheduler>HFSC</scheduler> <bandwidth>48</bandwidth> <bandwidthtype>Mb</bandwidthtype> <enabled>on</enabled> <queue><name>pHigh</name> <interface>wan</interface> <priority>1</priority> <bandwidth>19</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <upperlimit3>98%</upperlimit3> <queue><name>qACK</name> <interface>wan</interface> <qlimit>5000</qlimit> <priority>5</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>20%</realtime3> <realtime>on</realtime></queue> <queue><name>qGames</name> <interface>wan</interface> <qlimit>5000</qlimit> <priority>6</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>10%</realtime3> <realtime>on</realtime></queue> <queue><name>qDNS</name> <interface>wan</interface> <qlimit>1000</qlimit> <priority>1</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>2%</realtime3> <realtime>on</realtime></queue> <queue><name>qICMP</name> <interface>wan</interface> <qlimit>500</qlimit> <priority>7</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>1%</realtime3> <realtime>on</realtime></queue> <queue><name>qVoIP</name> <interface>wan</interface> <qlimit>2500</qlimit> <priority>5</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>10%</realtime3> <realtime>on</realtime></queue> <upperlimit>on</upperlimit></queue> <queue><name>pLow</name> <interface>wan</interface> <priority>1</priority> <bandwidth>31</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <queue><name>qDefault</name> <interface>wan</interface> <qlimit>2500</qlimit> <priority>3</priority> <bandwidth>40</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <codel>codel</codel> <default>default</default></queue> <queue><name>qP2P</name> <interface>wan</interface> <qlimit>2500</qlimit> <priority>1</priority> <bandwidth>20</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <codel>codel</codel> <upperlimit3>98%</upperlimit3> <upperlimit>on</upperlimit></queue> <queue><name>qLowUDP</name> <interface>wan</interface> <qlimit>2500</qlimit> <priority>3</priority> <bandwidth>40</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>5%</realtime3> <realtime>on</realtime></queue></queue> <queue><name>pNormal</name> <interface>wan</interface> <priority>1</priority> <bandwidth>50</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <queue><name>qWeb</name> <interface>wan</interface> <qlimit>2500</qlimit> <priority>1</priority> <bandwidth>50</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <codel>codel</codel></queue> <queue><name>qVPN</name> <interface>wan</interface> <qlimit>2500</qlimit> <priority>3</priority> <bandwidth>50</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled></queue></queue></queue> <queue><interface>lan</interface> <name>lan</name> <scheduler>HFSC</scheduler> <bandwidth>1</bandwidth> <bandwidthtype>Gb</bandwidthtype> <enabled>on</enabled> <queue><name>qLink</name> <interface>lan</interface> <qlimit>2000</qlimit> <priority>2</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled></queue> <queue><name>pInternet</name> <interface>lan</interface> <bandwidth>48</bandwidth> <bandwidthtype>Mb</bandwidthtype> <enabled>on</enabled> <ecn>ecn</ecn> <upperlimit3>48Mb</upperlimit3> <queue><name>pHigh</name> <interface>lan</interface> <bandwidth>19</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <upperlimit3>98%</upperlimit3> <queue><name>qACK</name> <interface>lan</interface> <qlimit>2500</qlimit> <priority>5</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>9600Kb</realtime3> <realtime>on</realtime></queue> <queue><name>qGames</name> <interface>lan</interface> <qlimit>2500</qlimit> <priority>6</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>9600Kb</realtime3> <realtime>on</realtime></queue> <queue><name>qDNS</name> <interface>lan</interface> <qlimit>2500</qlimit> <priority>3</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>1Mb</realtime3> <realtime>on</realtime></queue> <queue><name>qICMP</name> <interface>lan</interface> <qlimit>1000</qlimit> <priority>7</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>0.5Mb</realtime3> <realtime>on</realtime></queue> <queue><name>qVoIP</name> <interface>lan</interface> <qlimit>2500</qlimit> <priority>6</priority> <bandwidth>1</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>5Mb</realtime3> <realtime>on</realtime></queue> <upperlimit>on</upperlimit></queue> <queue><name>pNormal</name> <interface>lan</interface> <priority>1</priority> <bandwidth>50</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <queue><name>qWeb</name> <interface>lan</interface> <qlimit>5000</qlimit> <priority>2</priority> <bandwidth>50</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <codel>codel</codel></queue> <queue><name>qVPN</name> <interface>lan</interface> <qlimit>5000</qlimit> <priority>5</priority> <bandwidth>50</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled></queue></queue> <queue><name>pLow</name> <interface>lan</interface> <priority>1</priority> <bandwidth>31</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <queue><name>pDefault</name> <interface>lan</interface> <qlimit>5000</qlimit> <priority>1</priority> <bandwidth>40</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <default>default</default> <codel>codel</codel></queue> <queue><name>qP2P</name> <interface>lan</interface> <qlimit>2500</qlimit> <priority>1</priority> <bandwidth>20</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <codel>codel</codel> <upperlimit3>98%</upperlimit3> <upperlimit>on</upperlimit></queue> <queue><name>qLowUDP</name> <interface>lan</interface> <qlimit>2500</qlimit> <priority>1</priority> <bandwidth>40</bandwidth> <bandwidthtype>%</bandwidthtype> <enabled>on</enabled> <realtime3>2Mb</realtime3> <realtime>on</realtime></queue></queue> <upperlimit>on</upperlimit></queue></queue></shaper>
-
Another minor note. I noticed my download was getting up into the 50/51mb range, which was strange because PFSense is really really good at keeping the bandwidth within the desired amount. I assume it was because I had my interface set to 1gb, and while my upper limit was set to 48, all "real time" bandwidth is taken from the root node, this would mean the total bandwidth consumed would be UpperLimit+RealTime.
I adjusted my my LAN interface to be 48Mb and it seems to be keeping a tight limit to just under 48mb now. To make sure my traffic shaping didn't conflict with managing PFSense, I just opened up my port on my admin vlan.
I just thought this may be helpful to someone at some point.