Sample Header Ad - 728x90

Using qdisc prio under htb class

2 votes
1 answer
2168 views
I have 2 services, both operate over the same interface. Service A goal is keep high bandwidth while sending massive amount of data. Service B goal is low latency. Service B packets should **always** be in favor of Service's A packets. I need a TC structure to be able to : - Rate limit both service A & B - Give service B packets priority with 0% latency affect by service A packets. - Let each service utilize the whole line (or up to its limit) if the other service isn't transmitting. I tried about an htb structure where I have class htb classid x which may be rate/ceil limit and qdisc prio (say handle y:0) below as child (it shall auto create i.e. classes y:1, y:2 & y:3) and use filters by src ip to redirect packets to y:1 / y:2. However, it doesn't seem to work. Both class x and it's children traffic seem to be 0. (used tc -s class/qdisc/filter show dev dev to see) When watching the filters I can clearly see the "hits" so the data was supposed to get redirected correctly. Here are the commands I execute : tc qdisc add dev dev root handle 1: htb tc class add dev dev parent 1:0 classid 1:1 htb rate 10gbit ceil 10gbit # class x tc class add dev dev parent 1:1 classid 1:2 htb rate 10gbit ceil 10gbit # auto creates classes 21:1, 21:2 and 21:3 tc qdisc add dev dev parent 1:2 handle 21: prio # example for service b filter (latency driven) tc filter add dev dev parent 1:0 prio 2 u32 match ip src x.x.x.x/32 flowid 21:1 # example for service a filter tc filter add dev dev parent 1:0 prio 2 u32 match ip src x.x.x.x/32 flowid 21:2
Asked by SagiLow (287 rep)
Jul 18, 2016, 06:48 PM
Last activity: Jun 24, 2025, 04:02 AM