面向密码资源池的单任务高性能通信调度技术研究与实现

文摘   2024-10-12 17:35   四川  
摘 要:密码技术是保障网络与信息安全的核心技术和基础支撑。在云计算、大数据等新领域场景下,一般通过“密码资源池化”机制为密码应用提供按需分配及弹性扩展的密码服务功能。分组算法和杂凑算法的数据分组间存在依赖关系,只能进行串行密码运算,密码资源池较传统直连密码设备的服务模式,增加了一层网络通信调度开销,导致密码服务耗时显著增加。基于此,设计一种针对密码资源服务系统的动态网络通信调度机制和异步服务框架,实现网络通信与密码运算并行操作,缩短通信调度时延。结果表明,相较于直连密码设备,大包数据的性能损耗可以控制在10%以内。
内容目录:
0 引 言
1 密码资源池工作原理概述
2 高性能通信调度设计与实现
2.1 网络通信机制设计
2.2 异步服务框架设计
2.3 密码资源服务系统通信协议设计
3 性能测试分析
3.1 测试环境
3.2 测试结果与分析

4 结 语

0

引 言

在云计算、大数据等新领域场景下,为实现密码计算资源的高效复用和动态扩展,需要对密码计算资源进行池化和服务化。池化模式可根据用户业务的实际需求动态分配各类密码计算资源,以提高资源的利用效率,实现资源的集约共享;服务化模式包含对基础设施、平台和软件等的服务化,打破了传统用户自行购买硬件、软件的建设方式,为云平台密码业务系统提供便捷的加密/解密、数字签名/验签及摘要计算等密码服务功能,保障用户敏感数据不被非法获取、篡改及假冒等。

随着信息化的深入,业务系统处理的数据容量设计已经达到PB级甚至EB级,业务处理要求达到几十万甚至上百万TPS。为更好地满足数据中心、云计算等海量业务场景的高性能密码保障需求,国内外厂商也在积极探索高效运算、调度灵活的密码资源池应用方案。当前,各厂商一般通过集群扩充的方式将密码硬件资源进行整合,并配合服务层调度管理程序为业务系统提供高性能、高并发的密码服务。

视频监控数据、测绘地理空间数据及数字办公系统的大包数据受限于分组算法(链接模式、反馈模式等)与杂凑算法的运算数据间的依赖关系,各分片间只能进行串行调度运算。这导致密码资源池的并发调度性能无法得到充分发挥,不能满足用户业务实时响应要求,因此,如何提升单任务大包数据的密码服务性能已成为当前云密码资源池亟须解决的新问题。本文依据分组和杂凑算法特性,围绕提升数据传输效率,设计了一种面向密码资源池的网络通信异步调度机制,减少密码运算模块的空闲等待时长,进而解决密码资源池场景下新增引入网络调度开销损耗高的问题。

1

密码资源池工作原理概述

密码资源池由密码设备集群和密码资源服务层组成。密码设备集群作为密码基础设施,是实现密码算法的高性能运算及密钥安全管控等的关键。在商用密码领域,密码设备封装实现SM2、SM3、SM4等商用算法,并遵循 GM/T0018—2012《密码设备应用接口规范》,通过密码设备应用接口为上层用户或应用提供统一的基本密码服务;密码资源服务系统对集群内的密码设备进行统一调度,并根据用户需求灵活创建不同算法配置和性能指标的密码资源服务池。此外,密码资源服务系统提升了密码服务应用接口的易用性和可移植性,且屏蔽了密码设备差异。

密码资源池通过以太网与业务系统计算机,采用传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol,TCP/IP)承载密码服务数据包。密码资源池工作原理如图1所示。

图1 密码资源池工作原理

密码服务应用接口主要分为密钥管理、密码运算、随机数和证书管理等服务。其中,密钥管理和证书管理服务的数据包长度短且相对固定,因此,仅需要通过单次调度即可完成运算请求。但密码运算服务的数据包长度依赖应用系统的业务数据大小,在视频监控数据、测绘地理空间等大包数据场景下,需要进行分片操作,并经过多次调度才能完成运算请求。

在分组算法和杂凑算法串行运算的背景下,传统调度机制为:密码服务应用接口在处理大包数据密码运算请求时,首先对大包数据分片,其次对分片包进行密码运算同步调度控制,待所有的分片包运算完成后,最后将合片后的整包数据返回应用程序。传统分片调度控制原理如图2所示。

图2 传统分片调度控制原理

在上述调度模式下,单任务大包数据的密码服务耗时主要由网络传输耗时和密码运算耗时组成。在密码资源池服务系统选用x86平台,分片包选用16KB 的模拟测试场景下,测试结论为:同步服务网络传输调度性能为2000次/s(单个分片包往返的网络传输总耗时0.5ms),密码运算调度性能为8000 次/s(单个分片包密码运算耗时0.125ms),整体密码服务性能为1600次/s( 单个分片包接口调度总耗时为0.625ms),即网络传输和密码运算耗时的总和。经以上分析,密码服务应用接口调度的大部分时间耗费在接收分片包数的依赖等待上,导致密码资源池服务系统的密码运算模块长期处于空闲状态,进而导致网络传输、密码运算利用率低的问题。

高性能通信调度设计与实现

2.1 网络通信机制设计

2.1.1 异步调度机制设计

为充分利用网络通道的传输效率,本文采用多发多收的异步调度控制机制,在该机制下,密码服务应用接口和密码资源池服务系统之间自动进行调度协作,当密码服务应用接口收到大包数据运算请求后,由密码服务应用接口进行分片(假设分片包总数为n)。在首轮运算时,密码服务应用接口依托多个 TCP套接字同时发送m个分片数据包(m为首轮发送基数,其中mn),当收到第k个密码运算返回分片数据包后,再根据动态发包策略计算本次发送的分片包个数x,以此类推,直到所有的数据包均发送完成。网络通信异步调度控制原理如图3所示。

图3 网络通信异步调度控制原理

相较于传统方式,该机制实现首轮m个数据包的并行网络传输,且打破不同分片包之间的同步等待依赖条件,实现了数据传输和密码运算的并行操作。

2.1.2 动态发包策略设计

由于密码资源池服务系统需要为多台计算机应用系统的多个会话同时提供密码服务,为防止单个会话过度抢占密码设备资源,密码资源池服务系统需要根据自身并发压力情况,动态调节并限制分配给每个会话的缓存资源。此外,应用系统所在的计算机网络,在收发数据时,缓存也存在限值,当发送数据出现缓存空间不足的情况时,会增加系统写入输入/输出(Input/Output,I/O)的访问次数,导致系统调度开销增大。因此,需设计一种策略控制机制,动态控制每次发送的数据分片包个数,解决网络缓存空间和密码资源池服务系统分片数据缓存空间的限制问题。

策略控制机制为:密码服务应用接口在处理多个分片数据包时,首先,按照预置值连续发送m个分片请求包,密码资源池服务系统在收到请求数据包后,按分片序号排队进行密码运算操作;其次,每完成一个分片运算后,根据自身并发处理的压力和系统资源消耗情况,计算本会话承载的最大分片窗口个数p,并把窗口值依附到运算后的分片数据包中,返回客户端;最后,客户端根据自身网络吞吐情况计算当前分片窗口个数q,并结合队列中的已发送未返回的分片包个数s,计算最小值min(p-s,q),得到本次连续发送的分片包个数x。依据以上方案,客户端分片队列状态可分为已返回分片包、等待返回分片包、可发送分片包和不可发送分片包,其中等待返回分片包的个数加上可发送分片包的个数即为服务端能承载的最大分片包个数。客户端的分片包队列状态如图4所示。

图4 客户端分片包队列状态

2.2 异步服务框架设计

在同步工作模式下,大包数据只有一个分片数据存在于网络通信链路或密码资源服务系统。在异步工作模式下,多个分片数据包的密码运算请求同时发往密码资源服务系统,由于分片包间存在依赖关系,需要管理同一个任务的多个分片包及按序密码运算调用,因而服务框架依据任务号需解决分片包的多发多收异步调度问题。

该框架采用Multi-reactor多线程模型思想进行异步调度设计,从原理上主要包含mainReactor、subReactor和工作线程池逻辑模块。其中,mainReactor负责处理所有的网络连接事件,并根据负载均衡规则把连接分配到不同的subReactor;subReactor处理所辖套接字之间的数据读和数据写操作及将所有请求运算的数据帧合片后放入运算队列;工作线程池逻辑模块从运算队列中获取运算任务,并进行协议解封、密码运算调度和协议封装等操作。密码服务程序异步调度框架如图5所示。

图5 密码服务程序异步调度框架

该框架通过epoll_wait 实现I/O多路复用,工作流程如下:

(1)主线程负责监听和创建套接字,并注册套接字上的读就绪事件。

(2)网络收发线程池通过epoll_wait函数监听所有套接字上的数据读、数据写和套接字关闭事件。为保障线程安全,需要为套接字注册 EPOLLONESHOT事件。

(3)当 socket上有数据读事件时,网络收发线程被唤醒,完成数据读取操作后,根据会话号插入待处理的事件队列,并通知业务处理线程。

(4)业务处理线程被唤醒后,为解决分片包间的依赖关系,需要依据算法模式特性对上一个分片包运算结果和当前分片数据包进行密码运算前的预处理操作,进而保障分片包间的关联性。

(5)预处理完成后,执行密码运算操作,根据当前设备的并发运算情况计算当前会话接收的窗口大小,最后封装返回数据包,并将返回数据包插入到队列,注册数据写事件。

(6)写事件触发后,网络收发线程被唤醒,依据返回数据包队列,循环、按序地进行数据写操作。

(7)套接字关闭事件触发后,网络收发线程被唤醒,回收套接字和套接字绑定的分片数据包资源。

2.3 密码资源服务系统通信协议设计

为实现异步通信调度控制,密码服务应用接口和密码资源服务系统之间需要设计专用的网络通信协议,以支撑分片数据包的并行收发。根据数据流方向,通信协议分为密码运算请求包和应答包。通信协议帧格式如图6所示。

图6 通信协议帧格式

为识别网络通道数据流中的多个连续分片包,请求包和应答包的帧格式均需要设置API_FLAG起始位标识。此外,请求包的帧格式需要包含任务号、任务新鲜值和分片序号等字段信息,供密码资源服务系统排队和合片使用,应答包的帧格式需要包含任务号、分片序号和窗口大小等信息,供客户端编程接口处理数据返回封装及动态发包策略生成等。

性能测试分析

3.1 测试环境

硬件采用x86架构服务器,配备48个CPU核心和64GB的内存资源,运行64位CentOS7。

3.2 测试结果与分析

3.2.1 单任务测试

在单任务场景下,对同步密码服务、异步密码服务和直连密码设备性能进行对比测试,测试数据总包长基于1MB、8MB、16MB、32MB、64MB、128MB和256MB,分片数据包长基于16KB、32KB、64KB和128KB,测试结论如图7所示。

图7 单任务测试

从测试数据分析可知,传统同步服务性能远低于直连设备运算性能,性能损耗超50%;异步服务性能则趋近于直连密码设备时的运算性能,在数据包长较小时,性能损耗在15%左右,当数据包长增加到16MB后,性能趋于稳定,且损耗低于10%。

3.2.2 并发测试

在并发任务场景下,对同步密码服务、异步密码服务和直连密码设备进行对比测试,测试基于32MB数据总包长和16KB分片数据包长,测试结论如图8 所示。

图8 多任务测试

从测试数据分析可知,在并发数较少时,异步密码服务显著优于传统同步密码服务性能,在并发数较大时(超过32个线程),异步密码服务和传统同步密码服务性能接近,可进一步得出,动态发包策略在高并发条件下,具备良好的适应性。

结 语

首先,本文研究且实现了一种面向密码资源池的单任务高性能通信调度技术,可以有效提升网络通道的数据传输效率,缩短单任务的密码运算时延,最终实现了基于单任务场景下的高速密码服务调度控制;其次,本文设计了一种动态发包策略调控机制,解决因并行收发机制引入的单任务大包运算抢占其他小包任务的密码机资源竞争问题。实验证明,新机制显著缩减了大包数据的性能损耗。

此外,本文提出的技术方案由密码服务应用接口和密码资源服务系统间自动协作完成,应用系统无须开展额外的适配开发工作,具备良好的前向兼容能力。

引用格式:朱红宏, 李国涛, 吴磊.面向密码资源池的单任务高性能通信调度技术研究与实现[J].信息安全与通信保密 ,2024(7):72-80.

作者简介 >>>
朱红宏,男,硕士,工程师,主要研究方向为计算机应用、信息安全;
李国涛,男,学士,工程师,主要研究方向为计算机应用、信息安全;
吴 磊,男,学士,工程师,主要研究方向为计算机应用、信息安全。
选自《信息安全与通信保密》2024年第7期(为便于排版,已省去原文参考文献。)

信息安全与通信保密杂志社
网络强国建设的思想库、安全产业发展的情报站、创新企业腾飞的动力源
 最新文章