flannel-60second-delayed

Linux服务器丢包故障的解决思路及引申的TCP/IP协议栈理论

https://www.sdnlab.com/17530.html

60 second delayed delivery of packet to pod #1268

https://github.com/coreos/flannel/issues/1268

https://github.com/kubernetes/kubernetes/issues/88986

https://github.com/projectcalico/calico/issues/3145

dev_queue_xmit分析

http://doc.okbase.net/wdscq1234/archive/247929.html

https://blog.csdn.net/wdscq1234/article/details/51926808?utm_source=blogxgwz3

offload特性,主要是指将原本在协议栈中进行的IP分片、TCP分段、重组、checksum校验等操作,转移到网卡硬件中进行,降低系统CPU的消耗,提高处理性能。

发送模式

**TSO (tcp-segmentation-offload) **
从名字来看很直观,就是把tcp分段的过程转移到网卡中进行。当网卡支持TSO机制时,可以直接把不超过滑动窗口大小的payload下传给协议栈,即使数据长度大于MSS,也不会在TCP层进行分段,同样也不会进行IP分片,而是直接传送给网卡驱动,由网卡驱动进行tcp分段操作,并执行checksum计算和包头、帧头的生成工作。

**UFO(udp-fragmentation-offload) **
是一种专门针对udp协议的特性,主要机制就是将IP分片的过程转移到网卡中进行,用户层可以发送任意大小的udp数据包(udp数据包总长度最大不超过64k),而不需要协议栈进行任何分片操作。目前貌似没找到有支持UFO机制的网卡,主要是应用在虚拟化设备上。

**GSO(generic-segmentation-offload) **
相对于TSO和UFO,GSO机制是针对所有协议设计的,更为通用。同时,与TSO、UFO不同的是,GSO主要依靠软件的方式实现,对于网卡硬件没有过多的要求。其基本思想就是把数据分片的操作尽可能的向底层推迟直到数据发送给网卡驱动之前,并先检查网卡是否支持TSO或UFO机制,如果支持就直接把数据发送给网卡,否则的话再进行分片后发送给网卡,以此来保证最少次数的协议栈处理,提高数据传输和处理的效率。

接收模式

**LRO/GRO(large-receive-offload) **
在网卡驱动层面上将接受到的多个TCP数据包聚合成一个大的数据包,然后上传给协议栈处理。这样可以减少协议栈处理的开销,提高系统接收TCP数据的能力和效率。

  **RSS(Receive Side Scaling) **
具备多个RSS队列的网卡,可以将不同的网络流分成不同的队列,再将这些队列分配到多个CPU核心上进行处理,从而将负荷分散,充分利用多核处理器的能力,提交数据接收的能力和效率。

网卡offload模式的设置

**查看状态 **
ethtool –k 设备名

**设置开关状态 **
ethtool –K 设备名 模式名(缩写)on/off

fixed 项是网卡不支持的功能项目。

tx-udp_tnl-segmentation: 本想通过网卡的这项技术支持硬件加解封装VXLAN报文头来提高vxlan性能,可是集群环境中的网卡不支持,就放弃了。



猜你喜欢

转载自www.cnblogs.com/liuhongru/p/12742617.html
60