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 & BGive 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: htbtc class add dev dev parent 1:0 classid 1:1 htb rate 10gbit ceil 10gbit# class xtc class add dev dev parent 1:1 classid 1:2 htb rate 10gbit ceil 10gbit# auto creates classes 21:1, 21:2 and 21:3tc 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 filtertc filter add dev dev parent 1:0 prio 2 u32 match ip src x.x.x.x/32 flowid 21:2
Using qdisc prio under htb class
networking;bandwidth;tc;qos