中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

TCP checksum优化

原理

TCP校验和(checksum)是一个端到端的校验和,由发送端计算,然后由接收端验证。其目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到校验和有差错,则TCP段会被直接丢弃。

通常TCP checksum是由内核网络驱动来实现的,而且在5.6之前的内核版本是使用普通的算法实现。

部分网卡驱动是支持TCP校验和功能的,可以通过ethtool -k 网卡名称 | grep checksumming查看是否支持。

如果网卡驱动不支持,且内核态do_csum函数热点占用过高的情况下,可以通过修改内核合入checksum优化算法来提升性能。

网络通信中do_csum占用过高时的热点函数图如下图1所示:

图1 do_csum占用过高时的热点函数图

修改方式

5.6之前的内核可以通过合入checksum优化算法补丁提升性能,修改后需要重新编译内核(详情可参考内核源码编译安装)。