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.
Description
Details
- Difficulty level
- Unknown (require assessment)
- Version
- 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 192.168.10.0/24 flowid 1:10 tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.20.0/24 flowid 1:20
With the configuration above, my tests show me that traffic from 192.168.10.0/24 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.