18 | 容器网络配置(3):容器中的网络乱序包怎么这么高?
该思维导图由 AI 生成,仅供参考
问题重现
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了容器中网络乱序包问题的成因和解决方法。作者首先通过实际案例指出,在容器中数据包的重传数量明显增加,引发了对网络乱序问题的关注。接着,作者通过运行iperf3和netstat命令,展示了如何判断数据包重传是由网络丢失还是乱序引起的。在问题分析部分,作者详细解释了快速重传(fast retransmit)的概念,并介绍了SACK(选择性确认)对快速重传的影响。此外,作者还分析了veth接口的数据包发送过程,指出这种方式增加了容器向外发送数据出现乱序的几率。进一步讨论了Linux内核中的RPS(Receive Packet Steering)特性,以及如何通过配置RPS减少数据包乱序的几率。总结指出,RPS的配置虽然可以减少数据包乱序,但也会带来额外的系统开销,需要根据实际情况权衡使用。文章内容深入浅出,对于从物理机迁移到容器的用户具有一定的参考价值。
《容器实战高手课》,新⼈⾸单¥59
全部留言(12)
- 最新
- 精选
- 蒹葭RPS 的配置还是会带来额外的系统开销,在某些网络环境中会引起 softirq CPU 使用率的增大。 老师请教一下这里的某些网络环境指的是什么网络环境?具体增大softirq CPU 使用率的原因是什么呢?
作者回复: RPS会对数据包重新计算hash, 然后把数据包重新分派到新的cpu对应的队列,之后还需要用IPI的中断通知新的cpu, 而在IPI中断之后,就需要再做一次softirq。这样对于高频率收包的情况下, softirq就会明显的增大。 在实际应用的时候,对于物理网络接口,如果已经有了RSS的情况,一般就不需要再打开RPS了。
2020-12-3014 - po网络插件(flanneld、calico、ovs)和iptables的关系有点乱,网络插件也有自己的转发表,比如ovs的流表和iptables的规则是什么关系呢?
作者回复: ovs和iptables的规则是独立的。 数据包在协议栈中传递的时候有专门的hook点来处理对应的规则,比如iptables规则在netfilter的pre, in, out等hooks点上处理,ovs规则在ovs相关的device上处理。
2021-01-1425 - 莫名赞,感谢老师,学习了新知识 RPS。 试了下,CONFIG_RPS、rps_cpus 开启时,iperf3 测试仍然存在快速重传情况,没有明显改观。是不是漏了什么?
作者回复: @莫名, 其实除了RSS/RPS外,你还可以去看一下RFS的概念,这个和这一讲的关系不大,并且逻辑要更加复杂,就没有在文档中说明了。 你测试iperf3的环境是什么?如果改了veth的rps_cpus配置,没有效果,那么还要再分析有没有其他情况造成了快速重传。
2020-12-2555 - 大大有深度,有什么方式自动配置veth的rps么
作者回复: 现成的自动配置的方法我不知道。我们是在自己实现的cni模块里对veth的rps做配置的。
2021-01-043 - 上邪忘川rps_cpus 是一个 16 进制的数,每个 bit 代表一个 CPU。那么12个CPU,为啥是FFF?请教一下
作者回复: 一个F是4个bits, 总共三个F, 那么是4 * 3 = 12
2020-12-313 - Geek2014有一点不适很明白:“我们的用户把他们的应用程序从物理机迁移到容器之后,从网络监控中发现,容器中数据包的重传的数量要比在物理机里高了不少” 我理解,这个是因为容器的环境没有设置那个RPS导致的?也就是物理机器如果没设置也会有类似的问题吧
作者回复: 物理机上的网卡和驱动一般都有RSS, 一般不需要RPS。
2020-12-283 - 大拇哥1.这个网络包的乱序导致的重传最终造成的影响就是网络传输的延迟和吞吐量的下降? 2.这个问题你需要根据实际情况来做个权衡。这个实际情况是指?是说开启rps带来的softirq CPU增高和网络延迟的权衡吗还是说其它方面的权衡? 这个感觉没有讲清楚,还请老师赐教。
作者回复: @LWW >1 对的,乱序重传,最终会影响到延时和吞吐量。 >2 RPS会对数据包重新计算hash, 然后把数据包重新分派到新的cpu对应的队列,之后还需要用IPI的中断通知新的cpu, 而在IPI中断之后,就需要再做一次softirq。这样对于高频率收包的情况下, softirq就会明显的增大。 在实际应用的时候,对于物理网络接口,如果已经有了RSS的情况,一般就不需要再打开RPS了。
2020-12-2522 - 拂尘请教老师一个问题,设置veth pair的rps,在两端host和container都需要配置吗?
作者回复: 可以根据节点上网络的情况来决定在哪一端配置rps.
2021-07-27 - 谢哈哈内核参数tcp_reordering是快速重传的一个初始门限值,到达max tcp_reordering的内核参数大小就会触发快速重传,而tp->reordering是乱序的数据量bytes总大小,触发到达一定大小也会触发快速重传,两者没什么关系,但都是触发快速重传的一个必要条件2020-12-2513
- Geek_1b26d5用的来说是正常的,大神帮我们把原理说明白儿了2022-11-09归属地:广东