概述
当前DPVS TC 是在 Egress 即发包时进行流量控制,Ingress 收包的流量控制当前没有实现(社区DPVS最新的Commit好像是实现了Ingress方向的TC)。由于DPVS 的 TC 是一个独立的模块,和 ipvs 负载均衡的功能没有任何联系,所以需要单独配置报文匹配规则(qos classify)、带宽限速参数和算法(qos sched)。
DPVS 的 TC 在数据面进行保文规则匹配时,效率比较低下,原理如下:
一个Qsch队列下,一条一条规则(cls)进行顺序比较,直到完全匹配到规则,就用匹配规则里设置的队列的对应配置对报文进行 QoS schedule 操作。由于匹配效率低下,也设置了最大 reclassify 的值,进行 8 次比较还没完全匹配上的话,就直接 drop 这个包了。
对于新四层负载均衡的 vip 级别的限速需求,由于匹配规则条目非常多,规则匹配效率很低下,非常影响性能。
功能测试
由于TC是在 Egress 即发包时根据从Mbuf中提取的五元组以及接口信息进行规则匹配。
(1)Inbound方向
从Lan口发包时 Dip:Dport 即 Rip:Rport 是明确的,Lip:Lport 是不确定的,所以 Inbound方向限速,是通过在 Lan口上 配置目的 IP:Port 为 RS 的 IP:Port 进行规则匹配,在匹配到的队列中设置限速参数进行限速。
(2)Outbound 方向
从 Wa