Traffic Shaping; need help setting it up
[tl;dr section start]
Every machine or service should be able to get 100% bandwidth only if no machine or service of higher priority requires that bandwidth, and has to let go of the bandwidth as soon as a higher priority machine or service needs it.
[tl;dr section end]
Hello. Please forgive this rather lengthy posting.
My problem is with the Traffic Shaper, obviously ;). After three days of reading, I still can't make heads and tails of it, mostly because I'm under the impression the HFSC descriptions read differently to how I'm actually allowed to set it up in pfSense 1.2.3. From reading the docs, I should be able to set up the HFSC scheduler queues like cascades. "Queue A" is the parent, which has a child named "Queue B", which also poses as the parent of child "Queue C", which in turn is the parent of "Queue D" and so on, which pfSense won't let me, so it has to be wrong. At this point, I'm left clueless and puzzled.
My network is set up so that different machines have different priorities. No need to fiddle with services or different kinds of packets, except ACK. What I need is for the Traffic Shaper to prioritize traffic as follows:
- VoIP (highest priority), 192.168.0.2
- ACK (high priority)
- Work (above normal priority), 192.168.0.3
- Notebook (normal priority), 192.168.0.4
- Bulk 1 (below normal priority, 192.168.0.5
- Bulk 2 (low priority), 192.168.0.6
VoIP, only when a phone call is being made, should be assigned just enough bandwidth for it to work well. The remaining bandwidth is free to be used by the other machines or services. If no phone call is being made at all, VoIP's bandwidth should be completely free to be used by the other machines or services.
ACK should let VoIP traffic pass unhindered no matter what, but should take bandwidth from the machines or services below itself only if needed. If it doesn't require bandwidth (due to UDP traffic taking place), that leftover bandwidth is free to be taken by the other machines or services.
Work should be assigned all the bandwidth only if needed, minus VoIP bandwidth only if a phone call is being made and minus ACK bandwidth only if required. If Work doesn't require all the bandwidth or no bandwidth at all, its (leftover) bandwidth is free to be used by other machines or services.
Notebook should get all the bandwidth that neither VoIP, ACK or Work don't need, and hand it back once they do, no matter what is running on it (Youtube, downloads, …).
Bulk 1 should get all the bandwidth that neither VoIP, ACK, Work or Notebook don't currently need, so if there is no traffic from VoIP, ACK, Work or Notebook, Bulk 1 gets it all. Should Bulk 1 ask for more bandwidth due to any reason while VoIP, ACK, Work or Notebook need the bandwidth, Bulk 1 is out of luck.
Bulk 2. Boy, is this one the loser. May only take the bandwidth the others (= VoIP, ACK, Work, Notebook or Bulk 1) don't currently require and has to give it up once they do.
Now I really don't know if the following is possible, but it would be nice to have. If the Notebook is online, it gets a certain minimum amount of bandwidth (1MBit) assigned to it for as long as it is communicating with the pfSense box. If the Notebook stops communicating for more than, say, 10 minutes, the bandwidth (1MBit) is freed up, ready to be used by the other machines or services.
Thank you for your patience and quality time for reading up to this point. I know it's likely this topic is boring stuff to you, because you've already answered countless matters like this. Still I'd very much appreciate if you could help me out.