Page MenuHomeVyOS Platform

Shaper-HFSC shapes but does not control latency correctly
Closed, ResolvedPublicBUG


The only reason to choose the Shaper-HFSC traffic policy is to have a classful shaper where you can control latency, however VyOS Shaper-HFSC does not seem to do the job, or that's what I have seen in every test I have done: latency does not behave as expected.


Difficulty level
Unknown (require assessment)
1.2.x ; 1.3
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Unspecified (possibly destroys the router)

Event Timeline

I thought the problem could be related to VyOS, but now I have found the same behavior when using directly tc hfsc.

tc qdisc add dev eth0 root handle 1: hfsc default 90
tc class add dev eth0 parent 1:0 classid 1:1 hfsc ls m2 100kbps ul m2 100kbps
tc class add dev eth0 parent 1:1 classid 1:10 hfsc rt m1 50kbps d 100 m2 10kbps
tc class add dev eth0 parent 1:1 classid 1:20 hfsc ls m2 70kbps
tc class add dev eth0 parent 1:1 classid 1:90 hfsc ls m2 10kbps
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src flowid 1:10
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src flowid 1:20

With the configuration above, my tests show me that traffic from becomes far more delayed than any other traffic.

If anyone here knows about HFSC, please contact me. Or if anyone here knows about someone who might know about HFSC, please let me know too!

I am giving up with HFSC. I have been studying it for a long time, I have tested it in many different ways, without VyOS too. The only thing I have found is that this is is not a problem of VyOS.

HFSC shaping is correct, but I have never managed to see the expected latency results, even when exactly cloning the very few examples that can be found on the Internet.

Not only there is little documentation about HFSC, there is no support. I have been asking around and have not managed to find a place where I could get support for HFSC. I asked in the netdev mailing list, too.

Now I wonder if HFSC latency control really works... It would be great if someone showed it to me. Anyway, it's not a big deal, as HTB+fq_codel kind of does the job.

As discussed in the weekly meeting (2020-08-30), we are keeping the QoS documentation as it is now, without even mentioning HFSC. If at anytime we happen to find that HFSC latency control works, I would be happy to include HFSC in the QoS documentation.