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.


Log in to reply