【特别关注】面向密码资源池的单任务高性能通信调度技术研究与实现→
ccwgpt 2025-05-14 12:13 15 浏览 0 评论
摘 要:密码技术是保障网络与信息安全的核心技术和基础支撑。在云计算、大数据等新领域场景下,一般通过“密码资源池化”机制为密码应用提供按需分配及弹性扩展的密码服务功能。分组算法和杂凑算法的数据分组间存在依赖关系,只能进行串行密码运算,密码资源池较传统直连密码设备的服务模式,增加了一层网络通信调度开销,导致密码服务耗时显著增加。基于此,设计一种针对密码资源服务系统的动态网络通信调度机制和异步服务框架,实现网络通信与密码运算并行操作,缩短通信调度时延。结果表明,相较于直连密码设备,大包数据的性能损耗可以控制在10%以内。
内容目录
0 引 言
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所示。
密码服务应用接口主要分为密钥管理、密码运算、随机数和证书管理等服务。其中,密钥管理和证书管理服务的数据包长度短且相对固定,因此,仅需要通过单次调度即可完成运算请求。但密码运算服务的数据包长度依赖应用系统的业务数据大小,在视频监控数据、测绘地理空间等大包数据场景下,需要进行分片操作,并经过多次调度才能完成运算请求。
在分组算法和杂凑算法串行运算的背景下,传统调度机制为:密码服务应用接口在处理大包数据密码运算请求时,首先对大包数据分片,其次对分片包进行密码运算同步调度控制,待所有的分片包运算完成后,最后将合片后的整包数据返回应用程序。传统分片调度控制原理如图2所示。
在上述调度模式下,单任务大包数据的密码服务耗时主要由网络传输耗时和密码运算耗时组成。在密码资源池服务系统选用x86平台,分片包选用16KB 的模拟测试场景下,测试结论为:同步服务网络传输调度性能为2000次/s(单个分片包往返的网络传输总耗时0.5ms),密码运算调度性能为8000 次/s(单个分片包密码运算耗时0.125ms),整体密码服务性能为1600次/s( 单个分片包接口调度总耗时为0.625ms),即网络传输和密码运算耗时的总和。经以上分析,密码服务应用接口调度的大部分时间耗费在接收分片包数的依赖等待上,导致密码资源池服务系统的密码运算模块长期处于空闲状态,进而导致网络传输、密码运算利用率低的问题。
2.高性能通信调度设计与实现
2.1 网络通信机制设计
2.1.1 异步调度机制设计
为充分利用网络通道的传输效率,本文采用多发多收的异步调度控制机制,在该机制下,密码服务应用接口和密码资源池服务系统之间自动进行调度协作,当密码服务应用接口收到大包数据运算请求后,由密码服务应用接口进行分片(假设分片包总数为n)。在首轮运算时,密码服务应用接口依托多个 TCP套接字同时发送m个分片数据包(m为首轮发送基数,其中m≤n),当收到第k个密码运算返回分片数据包后,再根据动态发包策略计算本次发送的分片包个数x,以此类推,直到所有的数据包均发送完成。网络通信异步调度控制原理如图3所示。
相较于传统方式,该机制实现首轮m个数据包的并行网络传输,且打破不同分片包之间的同步等待依赖条件,实现了数据传输和密码运算的并行操作。
2.1.2 动态发包策略设计
由于密码资源池服务系统需要为多台计算机应用系统的多个会话同时提供密码服务,为防止单个会话过度抢占密码设备资源,密码资源池服务系统需要根据自身并发压力情况,动态调节并限制分配给每个会话的缓存资源。此外,应用系统所在的计算机网络,在收发数据时,缓存也存在限值,当发送数据出现缓存空间不足的情况时,会增加系统写入输入/输出(Input/Output,I/O)的访问次数,导致系统调度开销增大。因此,需设计一种策略控制机制,动态控制每次发送的数据分片包个数,解决网络缓存空间和密码资源池服务系统分片数据缓存空间的限制问题。
策略控制机制为:密码服务应用接口在处理多个分片数据包时,首先,按照预置值连续发送m个分片请求包,密码资源池服务系统在收到请求数据包后,按分片序号排队进行密码运算操作;其次,每完成一个分片运算后,根据自身并发处理的压力和系统资源消耗情况,计算本会话承载的最大分片窗口个数p,并把窗口值依附到运算后的分片数据包中,返回客户端;最后,客户端根据自身网络吞吐情况计算当前分片窗口个数q,并结合队列中的已发送未返回的分片包个数s,计算最小值min(p-s,q),得到本次连续发送的分片包个数x。依据以上方案,客户端分片队列状态可分为已返回分片包、等待返回分片包、可发送分片包和不可发送分片包,其中等待返回分片包的个数加上可发送分片包的个数即为服务端能承载的最大分片包个数。客户端的分片包队列状态如图4所示。
2.2 异步服务框架设计
在同步工作模式下,大包数据只有一个分片数据存在于网络通信链路或密码资源服务系统。在异步工作模式下,多个分片数据包的密码运算请求同时发往密码资源服务系统,由于分片包间存在依赖关系,需要管理同一个任务的多个分片包及按序密码运算调用,因而服务框架依据任务号需解决分片包的多发多收异步调度问题。
该框架采用Multi-reactor多线程模型思想进行异步调度设计,从原理上主要包含mainReactor、subReactor和工作线程池逻辑模块。其中,mainReactor负责处理所有的网络连接事件,并根据负载均衡规则把连接分配到不同的subReactor;subReactor处理所辖套接字之间的数据读和数据写操作及将所有请求运算的数据帧合片后放入运算队列;工作线程池逻辑模块从运算队列中获取运算任务,并进行协议解封、密码运算调度和协议封装等操作。密码服务程序异步调度框架如图5所示。
该框架通过epoll_wait 实现I/O多路复用,工作流程如下:
(1)主线程负责监听和创建套接字,并注册套接字上的读就绪事件。
(2)网络收发线程池通过epoll_wait函数监听所有套接字上的数据读、数据写和套接字关闭事件。为保障线程安全,需要为套接字注册 EPOLLONESHOT事件。
(3)当 socket上有数据读事件时,网络收发线程被唤醒,完成数据读取操作后,根据会话号插入待处理的事件队列,并通知业务处理线程。
(4)业务处理线程被唤醒后,为解决分片包间的依赖关系,需要依据算法模式特性对上一个分片包运算结果和当前分片数据包进行密码运算前的预处理操作,进而保障分片包间的关联性。
(5)预处理完成后,执行密码运算操作,根据当前设备的并发运算情况计算当前会话接收的窗口大小,最后封装返回数据包,并将返回数据包插入到队列,注册数据写事件。
(6)写事件触发后,网络收发线程被唤醒,依据返回数据包队列,循环、按序地进行数据写操作。
(7)套接字关闭事件触发后,网络收发线程被唤醒,回收套接字和套接字绑定的分片数据包资源。
2.3 密码资源服务系统通信协议设计
为实现异步通信调度控制,密码服务应用接口和密码资源服务系统之间需要设计专用的网络通信协议,以支撑分片数据包的并行收发。根据数据流方向,通信协议分为密码运算请求包和应答包。通信协议帧格式如图6所示。
为识别网络通道数据流中的多个连续分片包,请求包和应答包的帧格式均需要设置API_FLAG起始位标识。此外,请求包的帧格式需要包含任务号、任务新鲜值和分片序号等字段信息,供密码资源服务系统排队和合片使用,应答包的帧格式需要包含任务号、分片序号和窗口大小等信息,供客户端编程接口处理数据返回封装及动态发包策略生成等。
3.性能测试分析
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所示。
从测试数据分析可知,传统同步服务性能远低于直连设备运算性能,性能损耗超50%;异步服务性能则趋近于直连密码设备时的运算性能,在数据包长较小时,性能损耗在15%左右,当数据包长增加到16MB后,性能趋于稳定,且损耗低于10%。
3.2.2 并发测试
在并发任务场景下,对同步密码服务、异步密码服务和直连密码设备进行对比测试,测试基于32MB数据总包长和16KB分片数据包长,测试结论如图8 所示。
从测试数据分析可知,在并发数较少时,异步密码服务显著优于传统同步密码服务性能,在并发数较大时(超过32个线程),异步密码服务和传统同步密码服务性能接近,可进一步得出,动态发包策略在高并发条件下,具备良好的适应性。
4 .结 语
首先,本文研究且实现了一种面向密码资源池的单任务高性能通信调度技术,可以有效提升网络通道的数据传输效率,缩短单任务的密码运算时延,最终实现了基于单任务场景下的高速密码服务调度控制;其次,本文设计了一种动态发包策略调控机制,解决因并行收发机制引入的单任务大包运算抢占其他小包任务的密码机资源竞争问题。实验证明,新机制显著缩减了大包数据的性能损耗。
此外,本文提出的技术方案由密码服务应用接口和密码资源服务系统间自动协作完成,应用系统无须开展额外的适配开发工作,具备良好的前向兼容能力。
来源: 信息安全与通信保密杂志社
相关推荐
- 如何高效实现API接口的自动化测试?
-
实现API接口的自动化测试是一个多步骤的过程,涉及需求分析、测试用例设计、环境搭建、脚本编写、执行测试、结果分析和持续集成等多个环节。选择合适的工具和框架也是成功的关键。嘿,咱来聊聊实现API接口自动...
- 总结100+前端优质库,让你成为前端百事通
-
1年多时间,陆陆续续整理了一些常用且实用的开源项目,方便大家更高效地学习和工作.js相关库js常用工具类「lodash」一个一致性、模块化、高性能的JavaScript实用工具库。「xij...
- 混合开发到底怎么个混法?(混合开发rn)
-
引言最近几年混合开发越来越火,从PhoneGap到Cordova到Ionic,再到ReactNative,到Flutter。同时在搜索引擎中诸如IonicVSReactNativeRN和Weex+...
- 无所不能,将 Vue 渲染到嵌入式液晶屏
-
该文章转载自公众号@前端时刻,https://mp.weixin.qq.com/s/WDHW36zhfNFVFVv4jO2vrA前言之前看了雪碧大佬的将React渲染到嵌入式液晶屏觉得很有意思,R...
- 【直接收藏】前端 VUE 高阶面试题(一)
-
说说vue动态权限绑定渲染列表(权限列表渲染)首先请求服务器,获取当前用户的权限数据,比如请求this.$http.get("rights/list");获取到权限数据之后,在列表中...
- Vue采用虚拟DOM的目的是什么?(vue2 虚拟dom)
-
虚拟DOM更新其实效率并不像大家想象中的那么高,而且React官方也从来没说过虚拟DOM效率有多高,相反React虚拟DOM的实现也不是所有虚拟DOM产品中最好的。但是通过虚拟D...
- 什么是 JavaScript?(什么是党的旗帜)
-
本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!作者|慕课网精英讲师然冬JavaScript(JS)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。(MDN...
- Weex在内涵发现页中的工程实践(weex唯客交易所官网)
-
React-Native和Weex是目前最为火热的两个客户端跨平台解决方案。从去年2016年9月份开始,IES在抖音产品中应用了ReactNative,中途遇到了很多的问题,尤其是长列表的性能问题一...
- 新恒汇:公司主要业务包括智能卡业务、蚀刻引线框架业务以及物联网eSIM芯片封测业务
-
证券日报网讯新恒汇7月3日在互动平台回答投资者提问时表示,公司主要业务包括智能卡业务、蚀刻引线框架业务以及物联网eSIM芯片封测业务。具体请关注公司公告和公开披露信息。(编辑王雪儿)...
- “移”科普——什么是物联网?(移动设备物联网物联网应用实例)
-
物联网(InternetofThings,简称IoT)是指通过互联网将物理世界与数字世界相连接,实现物与物之间的智能互联的网络。它是一种新型的信息通信技术,通过传感器、嵌入式系统、网络技术等手段,...
- 如何自己搭建一个物联网平台?(自建物联网云平台)
-
自己搭建一个物联网(IoT)平台需要涉及多个关键步骤,包括硬件设备的选择、软件开发、网络通信、安全性设计以及数据管理。以下是搭建物联网平台的基本流程:1.确定物联网平台架构一个完整的物联网平台通常包...
- 物联网数据接入篇-应用层 Modbus(5)
-
前四篇文章讲述的是TCP/IP模型中的网络接口层、网络层、传输层、应用层一,这里到了第四层应用层二。由于协议比较多,就分开篇来介绍。这篇讲Modbus协议,后面再讲MQTT协议、CoAP协议、...
- 乐鑫ESP32-C5全面量产:行业首款双频Wi-Fi 6的RISC-V SoC
-
IT之家5月2日消息,乐鑫信息科技4月30日宣布,ESP32-C5现已全面进入量产。ESP32-C5宣称是行业首款2.4&5GHz双频Wi-Fi6的RISC-...
- Vue Shop Admin:强大而易用的后台管理系统模板
-
VueShopAdmin是一个基于Vue.js框架的后台管理系统模板。它具有简洁、易用和美观的特点,非常适合开发人员用于快速构建各种类型的管理系统。这个模板使用了最新的技术,如Vue3、V...
- 基于Prometheus的自动化巡检(prometheus自动发现详解)
-
!!大家好,我是乔克,一个爱折腾的运维工程,一个睡觉都被自己丑醒的云原生爱好者。作者:乔克公众号:运维开发故事道路千万条,安全第一条。操作不规范,运维两行泪。前言目前,大部分公司都采用Promet...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- ui自动化框架 (47)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)