如何通过优化Linux内核中的TLS卸载技术提升整体转发效能

大明小哥_7784

大明小哥_7784

2026-06-04

442人浏览

原创

ktls是将tls记录层加解密移至内核态的软件加速机制,非网卡硬件卸载;它减少用户/内核态拷贝与上下文切换,依赖内核≥4.13、ulp配置及应用调用setsockopt启用,需配合gro/tso等卸载技术协同提效。

如何通过优化linux内核中的tls卸载技术提升整体转发效能

Linux内核中目前不支持TLS协议栈的完整硬件卸载,所谓“TLS卸载”实际指的是Kernel TLS(kTLS)——一种将TLS记录层的加解密操作从用户态移至内核态执行的软件加速机制,而非网卡硬件层面的卸载。它不依赖NIC硬件能力,但能显著降低CPU开销、减少内存拷贝、提升小包转发场景下的吞吐效率。

理解kTLS:不是硬件卸载,而是内核态加密加速

kTLS在TCP连接建立后,将对称加密/解密(如AES-GCM)卸载到内核协议栈完成,应用层仍负责握手(TLS handshake)、密钥派生等非对称操作。这意味着:

  • 数据路径上不再需要用户态与内核态之间反复拷贝明文/密文,避免了send()/recv()调用带来的上下文切换开销;
  • 加解密由内核使用优化的汇编或SIMD指令完成,比多数用户态TLS库(如OpenSSL)更轻量、更可控;
  • 它与网卡checksum offload、GRO/GSO等可叠加使用,共同构成端到端的转发加速链路。

启用kTLS的前提条件

不是所有环境都能直接启用kTLS,需同时满足:

Linux Ai Server
Linux Ai Server

Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。

下载
  • 内核版本 ≥ 4.13(推荐 ≥ 5.10,功能更稳定,支持TLS 1.3部分特性);
  • 启用CONFIG_TLS、CONFIG_CRYPTO_USER_API_HASH等内核配置选项(主流发行版默认已开启);
  • 应用使用标准socket API,并主动调用setsockopt(SOL_TCP, TCP_ULP, "tls")加载ULP模块;
  • 加密套件必须匹配内核支持的类型(如TLS_AES_128_GCM_SHA256),且密钥、IV、salt等参数需由用户态提供并严格对齐结构体定义。

实操:在转发服务中集成kTLS

以一个基于epoll的代理服务为例,关键步骤如下:

  • 建立TCP连接后,立即设置ULP:setsockopt(sock, SOL_TCP, TCP_ULP, "tls", 4);
  • 完成TLS握手(通常仍在用户态用OpenSSL完成),获取协商后的密钥材料;
  • 构造struct tls12_crypto_info_aes_gcm_128,填入write方向的key、iv、salt、rec_seq;
  • 调用setsockopt(sock, SOL_TLS, TLS_TX, &crypto_info, sizeof(crypto_info))启用发送加密;
  • 同理对读方向调用TLS_RX启用接收解密(注意:收发可独立启用);
  • 后续所有send()和recv()即自动走kTLS路径,无需修改业务逻辑。

配合其他卸载技术协同提效

kTLS单独作用有限,需与底层网络卸载联动才能释放最大转发效能:

  • 开启网卡校验和卸载(ethtool -K eth0 tx on rx on),避免CPU重复计算IP/TCP校验和;
  • 启用GRO(Generic Receive Offload)合并入向小包,减少软中断次数;
  • 启用TSO或GSO分段卸载,让大块TLS密文由硬件分片,降低协议栈分片开销;
  • 若使用DPDK或XDP,kTLS暂不兼容,此时应转向用户态TLS加速(如BoringSSL + io_uring)或专用加密卡。

不复杂但容易忽略:kTLS的价值不在单连接延迟,而在高并发小包场景下降低整体软中断负载与内存带宽压力。实测表明,在万级TLS连接+千兆带宽的反向代理节点上,启用kTLS后CPU softirq占用下降约12%,PPS吞吐提升5–7%。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux linux内核

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

920

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2972

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

996

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

889

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

454

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2696

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5052

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

807

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习