iqiyi / dpvs

DPVS is a high performance Layer-4 load balancer based on DPDK.
Other
3k stars 723 forks source link

Ingress TC 限速规则没有效果? #845

Closed xgfone closed 2 years ago

xgfone commented 2 years ago

环境: DPVS 1.9.0 版本,按照 官方配置教程 搭建FNAT双臂模式,并按照 官方TC教程 ,在双臂模式下的公网出口网卡上设置 TC Ingress 和 Egress 规则。

结果: TC Egress 规则生效,能 立即 有效地限速公网出口网卡的出向网络流量速度;但 TC Ingress 规则没有效果,查看 dpip -s qsch 和 dpip cls 信息,规则已经命中,但没有限速效果


然后删除公网出口网卡上的 TC Ingress 规则,接着在内网出口网卡上设置相应的 TC Egress 规则;从外部客户端的角度来看,上行速度被有限地限制住了,但还是有个问题:一开始上行速度仍然很高,然后逐步下降,直到最终所限制的带宽,而不是像公网出口网卡一样能 立即 限制带宽。


按 Linux TC,限出不限入,对于 Ingress,几乎没有什么规则可设置;但看 DPVS 中的 TC,Ingress 和 Egress 似乎没啥区别,除了 ingress 和 egress 两个标记外,似乎操作也都一样,对于内部也都是调用 TC_HOOK,处理逻辑没太大区别,但 Ingress 似乎没有效果。求教各个大佬?

xgfone commented 2 years ago

补充: Egress 和 Ingress 使用的都是 TBF

ywc689 commented 2 years ago

Ingress 和 Egress 实现方式是一样的,限速只对 Egress 有效,Ingress 的流量取决于外部设备向外卡发送的流量大小,软件上是无法限制的。一般 Ingress 只用来做访问控制,比如丢弃某个来源的数据包。

xgfone commented 2 years ago

@ywc689 原来如此,了解了,谢谢解惑!