云容器引擎 CCE-CCE集群IPVS转发模式下conn_reuse_mode问题说明:IPVS连接复用参数带来的问题
IPVS连接复用参数带来的问题
- 问题1
当net.ipv4.vs.conn_reuse_mode=0时,对于端口复用的连接,IPVS不会主动进行新的调度,也并不会触发结束连接或DROP操作,新连接的数据包会被直接转发到之前使用的后端pod。如果此时后端pod已经被删除或重建就会出现异常,根据当前的实现逻辑,高并发访问Service场景下,不断有端口复用的连接请求发来,旧的转发连接不会被kube-proxy删除,导致访问Service失败。
- 问题2
当net.ipv4.vs.conn_reuse_mode=1时,高并发场景下发生源端口与之前链接重复的情况,不会复用链接,而是会重新进行调度。根据ip_vs_in()的处理逻辑,当开启了net.ipv4.vs.conntrack时,这种情况会先DROP掉第一个SYN包,导致SYN的重传,有1秒延迟。导致性能下降。