HFSC packet overhead compensation?
-
I have HFSC enabled on a highly asymmetric ADSL2 connection. I want to keep a real time channel open for VoIP applications.
When I set my upload queue limit to 750 kbps, and I fill the upload queue with actual traffic, all is well. My VoIP traffic shows minimal packet loss in this condition, as verified by an external SIP client. i750 kbps seems a little lower than I expected, but not unreasonably low.
However, when the upload queue is filled with ACKs from download traffic, the same VOIP shows significant packet loss. The VOIP channel is set to allow a minimum of 100 kbps real time data. Also note that the effective upload rate has dropped by around 150 kbps.
And indeed, if I throttle the upload queue to around 550 kbps, the VoIP packet loss mostly clears up again.
I believe that HFSC isn't calculating the per-packet overheads correctly. A rough linear interpolation implies that each additional packet cuts into the data budget by 285 bits, or about 36 bytes. (It also implies that the maximum upload is closer to 768 kbps instead of the 850 kbps that the 95% rule of thumb leads me to expect, but that's a separate problem. And yes, my MTU is set to 1492 on the PPPoE WAN.)
Is there any feature in pfsense / FreeBSD that would allow me to adjust the packet overhead used in the HFSC calculations? I've looked for something comparable to Linux tc-stab but I came up empty. It would be nice if I didn't have to keep the upload capped at 550 kbps just to address this worst-case ACK scenario. Likewise, I don't want to cap the ACK queue because that impacts my download speeds.