跳转至

网卡功能卸载


将网络功能从网络协议栈卸载掉,放到网卡上实现。
由于网卡功能的提升,可以将部分功能放到网卡上实现,减轻CPU负载。

TSO

Tcp segmentation offload
将TCP分段功能放到网卡上实现。
tso

RSC

Receive Side Coalescing
将TCP分段报文组合成一个报文。
rcs

LRO

Large Receive Offload
软件实现的RSC.
lro

GSO

generalized segmentation offload
软件实现的TSO。
支持TCP、UDP、IPv4、IPv6。
gso gso

C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# sysctl net.inet.tcp.gso =1
# sysctl net.inet.udp.gso =1
# sysctl net.gso.dev."ifname".enable_gso = 1
# sysctl net.gso.dev."ifname".max_brust = 65535
tcp_output()
# ip层不分片
ip_output()
ether_output()
#在ether_output里,gso_dispatch 替换 ifp->transmit
gso_dispatch()

校验和卸载

TCP/UDP头部校验和
IP头部校验和

卸载功能查看

Bash
1
ethtool -k eth0

参考

Software segmentation offloading for FreeBSD by Stefano Garzarella