个人学习,如有错误或补充,请多指教~
MTU
Maximum Transmission Unit,MTU:最大传输单元,接收数据包的最大单元,MTU在网络通信中是非常重要的,是网络分片和重组的基础。
IP分片
- 首先IP分片发生在网络层
- 当发送的数据包大小超过了MTU,则需要对数据包进行切片划分,使每一片长度小于等于MTU,其中涉及到一些数据包ip首部值的修改,标志位偏移位等,自行查阅。
IP重组
- 重组发生在目的ip的网络层
- 通过标志位和偏移位的设置,将分片的数据包通过数据的堆栈进行进一步处理。
避免IP分片
因为在网络层是没有超时重传机制的,如果分片之后其中的某一个分片丢失,就会导致传输层的重传,是对所有分片的重传,所以会降低传输效率和成功率,所以要避免IP分片。
- 对于TCP的数据包:三次握手保证了数据包不会超过MTU值,避免了IP分片。
- 对于UDP的数据包: 我们需要限制数据包的大小,保证不超过MTU值。
网卡的offload机制
早期处理网络低速传输以及网络传输的不可靠问题,是通过操作系统进行数据包的处理。这样会占用很多cpu的使用率。为了解决这样的问题,将网卡加入了offload机制,来提高网络的收发性能,将原本操作系统操作对数据包的处理,放到网卡中去做。
LSO(Large Segment Offload)/LRO(Large Receive Offload)
- LSO:当发送数据超过了MTU的时候,操作系统将传输请求给网卡,网卡接收请求后将数据包进行切割,并封包发出。
- LRO:LRO会将接收的碎片包自动组合,提交给操作系统处理。
- 一般来说,LSO和LRO主要面向TCP报文。
GSO(Generic Segmentation Offload)/GRO(Generic Receive Offload)
比LSO/LRO更通用,会自动检测网卡支持的特性。
TSO(TCP Segmentation Offload)/UFO(UDP fragmentation offload)
分别对应TCP报文和UDP报文
查看以上说的各个选项
ethtool -k eth0
[root@dut dpdk]# ethtool -k eno1
Features for eno1:
rx-checksumming: on
tx-checksumming: on
tx-checksum-ipv4: off [fixed]
tx-checksum-ip-generic: on
tx-checksum-ipv6: off [fixed]
tx-checksum-fcoe-crc: off [fixed]
tx-checksum-sctp: on
scatter-gather: on
tx-scatter-gather: on
tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: on
tx-tcp-segmentation: on
tx-tcp-ecn-segmentation: off [fixed]
tx-tcp6-segmentation: on
tx-tcp-mangleid-segmentation: off
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: off
receive-hashing: on
highdma: on [fixed]
rx-vlan-filter: on [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: on
tx-ipip-segmentation: on
tx-sit-segmentation: on
tx-udp_tnl-segmentation: on
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
busy-poll: off [fixed]
tx-gre-csum-segmentation: on
tx-udp_tnl-csum-segmentation: on
tx-gso-partial: on
tx-sctp-segmentation: off [fixed]
rx-gro-hw: off [fixed]
l2-fwd-offload: off [fixed]
hw-tc-offload: on
rx-udp_tunnel-port-offload: off [fixed]
ethtool -K eth0 gso off/on 开关命令
版权声明:本文为bicongcha5626原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。