杨成林 周 勋 严新荣
(中国船舶集团有限公司第七二二研究所 武汉 430205)
通信行业蓬勃发展,在保障安全性的前提下,数据处理速度逐渐成为影响用户体验的重要因素。采用软件方式实现数据解析处理已经非常成熟,随着业界对性能要求的不断提高,在FPGA 上实现数据处理得到广泛关注,如报文解析、数据加解密,以及通信系统中的各类接口控制等。
本文针对用于处理以太网口、串口等多种通信接口业务数据加解密功能的常规逻辑架构,对其不足提出了优化方案,在不影响业务准确性、时效性的前提下,采用数据帧流式传输与并行处理,重要业务优先级仲裁[1],加密算法资源动态分配等方式提高加解密速度,并采用仿真测试对比优化前后的处理效率。
FPGA 逻辑用于解析以太网口、串口[2~3]等多种接口传输的数据帧,对业务帧、指令帧等不同报文采用加解密处理、参数配置、优先读取等各种处理方式,实现报文解析重组转发功能。
整体逻辑架构划分为三个部分:业务处理模块(包含帧格式解析与数据加解密等功能)、数据收发模块、数据缓存模块。数据收发模块负责将上位机发来的报文写入数据缓存模块,并将接收完成的信号送给业务处理模块,业务处理模块主动从缓存区域读取数据帧,并对数据帧中关键字节进行解析,模块进入对应的状态机,最终根据协议需求选择指定的接口送出。
为了提高处理性能,减轻CPU 负担,实现资源合理利用,选择采用FPGA 承担报文解析与数据加解密功能。
2.2.1 占用锁死工作模式
图1的业务处理过程记为工程A。
图1 逻辑模块整体架构
各个收发模块之间采用了“启动-占用-释放-再启动”的占用锁死工作模式,某一方进入工作态时,其余接口的业务功能全部暂停,等待先占用者释放资源。占用/释放信号lock/unlock 不仅锁死了业务处理模块,同时也会禁止自己接收新的数据帧,这就导致突发大量数据帧传输时,产生丢包问题。图2简要展示占用锁死工作模式。
图2 占用锁死工作模式
业务处理模块占用式方法处理业务优先级问题,承载数据帧解析重组、加解密运算、报文转发优先级判定等重要功能。图3 以并行架构描述业务处理流程,但实际上状态机在跳转回IDLE 状态之前的过程中,不会从IDLE 再次接收信号进入业务启动状态,整个业务模块是一个伪并行处理过程,威胁传输可靠性。
图3 业务处理流程
图4 ECB算法加解密图解
图5 CBC算法加解密图解
2.2.2 算法介绍[4~5]
需要加解密的报文分为两类,分别采用ECB或CBC[6]模式。由于工程A的仲裁方式每次仅允许一项业务进入业务模块,所以一个算法核即可满足业务需求。
1)ECB模式中,明文分组加密之后的结果直接成为密文分组。各个分组之间的加解密关联较小,无顺序要求。该种方式简单快速,且支持并行计算。
2)CBC模式中,首先将明文分组与前一个密文分组进行异或运算,再进行加密。与ECB 模式相比,CBC加密模式的每一个分组均与其之前的所有分组相关,CBC解密模式的每一个分组仅与其对应的密文分组和前一个密文分组相关。
符号含义:
ENC:加密运算DEC:解密运算
C:密文分组⊕:异或运算
P:明文分组K:密钥IV:初始化向量
针对工程A 中存在的丢包与伪并行问题进行优化,优化后的图6业务处理过程记为工程B,以实现合理分配FPGA 资源、功能模块化、流式传输数据帧、并行加解密等目标。
图6 逻辑模块优化调整
2.2.1 节中提及占用锁死的接收模式难以应对网口的突发大量传输,会产生丢包现象,而收发模块仅起到缓存数据帧的作用,无需对数据帧进行处理。因此将原来IP 核由RAM 改为FIFO[7],并采用AXIS 格式进行传输,扩充缓存空间[8],应对来自高速接口的突发传输。
针对“启动-占用-释放-再启动”的工作模式导致业务处理效率低下的现象,改变这种伪并行的工作模式,将原来的业务模块细化为多个子业务模块,并行处理业务。在业务部分之前添加一个分流模块,将业务分类从业务处理模块中剥离,对收到的数据帧进行预处理,简化后续处理流程。具体设计如下:
1)业务模块细化
将各类接口的业务分开,而非集中在同一个模块的状态机里。对于不同需求的业务模块增加相应的功能结构,有针对性地提高效率与可靠性。如网口之间的ping 包,无需解析重组,可以直接发往目标网口,大大提高该类业务的处理速度[9];
对于需要进行加解密过程的业务,可在加解密模块外部套一层异步FIFO[10],通过改变FIFO 的读写时钟频率,均衡加解密速率与数据传输速率,实现数据在不同时钟域[11~12]之间的可靠传输。
2)构建分流模块与合流模块
工程A 中的业务区分与业务处理功能都放在业务模块中,各种业务抢占状态机,导致伪并行逻辑。在业务处理模块之前添加一个分流模块,代替了前文提到的仲裁功能,真正实现伪并发到真并发的转变。该模块将收到的数据以AXIS格式并发送入所有的子业务模块,但仅有业务相关一路的有效信号会被拉高。
业务并行处理结束时,存在多个业务同时准备从接口发出的情况,需要在合流模块中进行发送顺序仲裁。对于同一优先级的业务,采用先结束先发出的处理方式,由于发送数据速度较快,不存在堵塞现象;
对于特殊业务,合流模块会读取到高优先级指令字,等待高优先级业务发送完后,再继续发送普通业务。
3)算法核复用优化
针对ECB 与CBC 模式不同的加密原理,对二者分别适配单业务多算法核与多业务多算法核的调用方式,并采用“专用部分等待,公用部分抢占”的仲裁[13]方式,来提高加解密运算速率和算法核利用率。
工程A 和工程B 分别在modelsim 中进行仿真调试,并在国产开发环境pango2020.3 上进行编译与测试,仿真采用以下两种业务类型:
业务a:需要CBC模式解密的数据帧;
业务b:需要ECB模式解密的数据帧。
测试结果如图7~图11 所示,数据对比见表1。
表1 优化性能测试记录表
图7 工程A连续处理CBC业务丢包现象仿真图
图8 工程B连续处理CBC业务仿真图
图9 工程A时延处理CBC业务仿真图
图10 工程A连续处理ECB业务丢包现象仿真图
图11 工程B连续处理ECB业务仿真图
经过上述仿真结果对比,计算得出以下结论:
1)通过更改占用锁死机制,解决了工程A 在接收连续业务时的丢包问题。
2)在处理单个CBC 解密业务的情况下,工程B与工程A 性能基本持平,每帧开销均为11.0μs;
在处理连续CBC 解密业务的情况下,工程B 比工程A效率提升最高约11.04μs/ 1.84μs = 600%,即工程B中最多可实现6路并行处理。
3)在处理单个ECB 解密业务的情况下,工程B多次复用算法核对数据分组并行解密,处理效率比工程A提升约46.12μs/13.72μs ≈264%;
在处理连续ECB解密业务的情况下,工程B效率相对于工程A 提升约203%~410%(连续处理数量越多效率提升越高,最高可达410%)。
本文针对常规的数据帧处理方法作出优化,解决了处理过程中的伪并行和丢包问题,通过细化业务模块等方式减少了代码中的冗余部分,使逻辑架构更加简洁。创新地采用算法核复用,根据算法特点有针对性的进行算法调用过程优化。相较于工程A,工程B 提高了硬件资源利用率和业务处理速度,对于项目本身的性能提升有重要价值。
猜你喜欢 加解密解密分组 解密“热胀冷缩”科学大众·小诺贝尔(2023年10期)2023-10-20解密“一包三改”少先队活动(2020年9期)2020-12-17炫词解密阅读(快乐英语高年级)(2020年10期)2020-01-08分组搭配小学生学习指导(低年级)(2019年3期)2019-04-22怎么分组小学生学习指导(低年级)(2018年9期)2018-09-26PDF中隐私数据的保护方法软件导刊(2017年4期)2017-06-20分组小学生导刊(低年级)(2017年1期)2017-06-12电子取证中常见数据加解密理论与方法研究网络空间安全(2016年3期)2016-06-15基于FPGA的LFSR异步加解密系统电子技术应用(2016年6期)2016-03-18网络数据传输的加解密系统研究软件工程(2014年11期)2014-11-15扩展阅读文章
推荐阅读文章
老骥秘书网 https://www.round-online.com
Copyright © 2002-2018 . 老骥秘书网 版权所有