专利名称:一种用于智能网卡中FPGA的固件升级方法和装置
专利类型:发明专利
专利申请号:CN202210096510.8
专利申请(专利权)人:山东云海国创云计算装备产业创新中心有限公司
权利人地址:山东省济南市中国(山东)自由贸易试验区济南片区浪潮路1036号浪潮科技园S01楼35层
专利发明(设计)人:陈贝
专利摘要:本发明涉及一种用于智能网卡中FPGA的固件升级方法和装置。方法包括:响应于检测到FPGA上电,则从FPGA挂载的FLASH中依次加载运行基础固件和初始业务固件,基础固件用于使FPGA分别与远程管理端和主机端进行通信;响应于FPGA接收到远程管理端发送的固件升级请求,则对FPGA与远程管理端之间通信链路的安全性进行验证;响应于确认FPGA与远程管理端之间的通信链路安全,则从远程管理端读取目标业务固件,并将目标业务固件写入FPGA挂载的FLASH。本发明的方案实现了在不借助外部CPU或SoC芯片参与的情况下,从远程管理端安全地获取智能网卡FPGA业务固件进行升级,易于部署实现的同时也保证安全性。
主权利要求:
1.一种用于智能网卡中FPGA的固件升级方法,其特征在于,所述方法包括:响应于检测到FPGA上电,则从FPGA挂载的FLASH中依次加载运行基础固件和初始业务固件,其中,所述基础固件用于使FPGA分别与远程管理端和主机端进行通信,所述基础固件包括FPGAPCIe接口固件以及升级管理固件,所述FPGAPCIe接口固件以及升级管理固件被依次加载,所述FPGAPCIe接口固件在第一时间加载以完成主机对FPGA中PCIe接口的初始化,随后加载所述升级管理固件用于FPGA固件升级;
响应于FPGA接收到远程管理端发送的固件升级请求,则对FPGA与远程管理端之间通信链路的安全性进行验证;
响应于确认FPGA与远程管理端之间的通信链路安全,则从远程管理端读取目标业务固件,并将所述目标业务固件写入FPGA挂载的FLASH;
所述方法还包括:
响应于完成将所述目标业务固件写入FPGA挂载的FLASH,则对FPGA进行下电;
响应于再次检测到FPGA上电,则FPGA挂载的FLASH中加载并运行基础固件和所述目标业务固件。
2.根据权利要求1所述的用于智能网卡中FPGA的固件升级方法,其特征在于,所述从FPGA挂载的FLASH中依次加载运行基础固件和初始业务固件的步骤包括:首先从FPGA挂载的FLASH中加载运行PCIe接口固件以完成主机端对FPGA中PCIe接口的初始化;
然后从FPGA挂载的FLASH中加载运行FPGA网络接口固件、IPSec功能固件和微处理器固件以使FPGA具备微处理器模块、IPSec模块和FLASH控制模块;
最后从FPGA挂载的FLASH中加载运行初始业务固件。
3.根据权利要求2所述的用于智能网卡中FPGA的固件升级方法,其特征在于,所述对FPGA与远程管理端之间通信链路的安全性进行验证的步骤包括:利用所述微处理器模块分别与所述远程管理端和所述IPSec模块建立通信并交换二者的IPSec密钥;
由所述远程管理端和所述IPSec模块分别对所接收到的IPSec密钥进行验证;
响应于所述远程管理端和所述IPSec模块对所接收到的IPSec密钥验证均通过,则确认FPGA与远程管理端之间的通信链路安全;
响应于所述远程管理端,和/或所述IPSec模块对所接收到的IPSec密钥验证未通过,则确认FPGA与远程管理端之间的通信链路不安全。
4.根据权利要求2所述的用于智能网卡中FPGA的固件升级方法,其特征在于,所述从远程管理端读取目标业务固件,并将所述目标业务固件写入FPGA挂载的FLASH的骤包括:利用所述微处理器模块从所述远程管理端读取目标业务固件,并发送给所述FLASH控制模块;
利用所述FLASH控制模块将所接收的所述目标业务固件写入FPGA挂载的FLASH中所述初始业务固件所在的位置。
5.根据权利要求2所述的用于智能网卡中FPGA的固件升级方法,其特征在于,所述微处理器模块为MicroBlaze微处理器或者为Nios微处理器。
6.根据权利要求2所述的用于智能网卡中FPGA的固件升级方法,其特征在于,所述远程管理端和所述微处理器模块通过高速网络接口连接。
7.一种用于智能网卡中FPGA的固件升级装置,其特征在于,所述装置包括:固件加载单元,所述固件加载单元配置用于响应于检测到FPGA上电,则从FPGA挂载的FLASH中依次加载运行基础固件和初始业务固件,其中,所述基础固件用于使FPGA分别与远程管理端和主机端进行通信,所述基础固件包括FPGAPCIe接口固件以及升级管理固件,所述FPGAPCIe接口固件以及升级管理固件被依次加载,所述FPGAPCIe接口固件在第一时间加载以完成主机对FPGA中PCIe接口的初始化,随后加载所述升级管理固件用于FPGA固件升级;
验证单元,所述验证单元配置用于响应于FPGA接收到远程管理端发送的固件升级请求,则对FPGA与远程管理端之间通信链路的安全性进行验证;
固件写入单元,所述固件写入单元配置用于响应于确认FPGA与远程管理端之间的通信链路安全,则从远程管理端读取目标业务固件,并将所述目标业务固件写入FPGA挂载的FLASH;
还包括:
响应于完成将所述目标业务固件写入FPGA挂载的FLASH,则对FPGA进行下电;
响应于再次检测到FPGA上电,则FPGA挂载的FLASH中加载并运行基础固件和所述目标业务固件。
8.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器中运行的计算机程序,所述处理器执行所述程序时执行权利要求1‑6任意一项所述的用于智能网卡中FPGA的固件升级方法。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行权利要求1‑6任意一项所述的用于智能网卡中FPGA的固件升级方法。 说明书 : 一种用于智能网卡中FPGA的固件升级方法和装置技术领域[0001] 本发明涉及固件升级领域,尤其涉及一种用于智能网卡中FPGA的固件升级方法和装置。背景技术[0002] 随着云计算技术的发展,云计算中心的规模越来越大,网络拓扑架构越来越复杂,网络端口的管理和网络数据的转发压力占用了云计算数据中心服务器中越来越多的计算资源。为释放服务器的计算资源,提高处理效率,数据中心一般应用智能网卡软硬件方案,将原本需要服务器CPU(CentralProcessingUnit,中央处理器)处理的网络处理转发工作卸载到智能网卡处理,提升数据中心网络虚拟化处理的性能,扩展数据中心服务的架构。因此智能网卡得到了越来越多的关注,智能网卡的设计、测试等相关技术发展越来越快。为适应各行业不同应用特点,同时提供硬件级的网络处理性能,智能网卡一般使用FPGA作为数据平面的处理载体,同时集成CPU和BMC(BaseboardManagementController,基板管理控制器)等芯片作为管理平面的载体。FPGA作为智能网卡的核心数据处理单元,其可灵活重复编程的特性,很好地支持了数据中心灵活多样的网络业务。智能网卡中FPGA固件加载过程的快捷性和安全性,影响现代数据中心的开发部署效率。[0003] 图1为通用FPGA(FieldProgrammableGateArray,现场可编程门阵列)智能网卡的部署架构,主要包含FPGA芯片、CPU芯片。由于FPGA芯片负责主要的网络处理转发工作,所以FPGA连接有高速网络接口,例如高速网络接口为SFP(SmallFormFactorPluggable,可热插拔的、独立于通信协议的光学收发器)、主机金手指PCIe(PeripheralComponentInterconnectexpress,高速串行计算机扩展总线标准)接口1、板载CPUPCIe接口2以及DDR(DoubleDataRateSynchronousDynamicRandomAccessMemor,双倍速率同步动态随机存储器)、FLASH存储器(是一种非易失性内存)和一般控制用的I/O(Input/Output,输入/输出)外设等。智能网卡板载CPU也会挂载内存、硬盘等设备(通用架构,图1中未示出),用于运行操作系统管理智能网卡的业务管理平面。智能网卡板载BMC芯片通过NCSI(NetworkControllerSidebandInterface,是一个由分布式管理任务组定义的用于支持服务器带外管理的边带接口网络控制器的工业标准,该标准成为管理控制器和网络控制器之间的标准接口)接口与FPAG连接用于后期的远程管理。智能网卡连接远程管理服务端和本地主机。其主要网络数据通路处理硬件为FPGA芯片。FPGA的高速网络接口连接到网络云端,FPGA的PCIe接口与本地主机连接,FPGA是智能网卡中关键的芯片,在智能网卡部署和运维中是关键的载体。FPGA加载需要借助外部FLASH,一般FPGA固件预先存储在FLASH中,待FPGA上电后从FLASH中将初始化固件读取进FPGA进行配置,进而正常运行FPGA程序。当智能网卡因其应用场景需求,在部署到数据中心服务器中后,还有对FPGA芯片固件进行升级或者变更的需求。因此一般智能网卡还需要具备远程升级的功能。[0004] 目前传统智能网卡远程升级方式是:通过网络从远处管理端将需要升级的FPGA固件发送给处理器或者微处理器,然后由处理器或者微处理器完成FLASH中FPGA固件的升级,对于智能网卡,一般使用卡上的BMC芯片来处理升级过程。传统智能网卡远程升级方式存在以下缺点:一方面通过BMC的管理网口传输固件带宽较低;另一方面,FPGA固件升级安全性差,影响智能网卡管理的保密性。发明内容[0005] 有鉴于此,有必要针对以上技术问题,提供一种用于智能网卡中FPGA的固件升级方法、装置、计算机设备及存储介质。[0006] 根据本发明的第一方面,提供了一种用于智能网卡中FPGA的固件升级方法,所述方法包括:[0007] 响应于检测到FPGA上电,则从FPGA挂载的FLASH中依次加载运行基础固件和初始业务固件,其中,所述基础固件用于使FPGA分别与远程管理端和主机端进行通信;[0008] 响应于FPGA接收到远程管理端发送的固件升级请求,则对FPGA与远程管理端之间通信链路的安全性进行验证;[0009] 响应于确认FPGA与远程管理端之间的通信链路安全,则从远程管理端读取目标业务固件,并将所述目标业务固件写入FPGA挂载的FLASH。[0010] 在一些实施例中,所述方法还包括:[0011] 响应于完成将所述目标业务固件写入FPGA挂载的FLASH,则对FPGA进行下电;[0012] 响应于再次检测到FPGA上电,则FPGA挂载的FLASH中加载并运行基础固件和所述目标业务固件。[0013] 在一些实施例中,所述从FPGA挂载的FLASH中依次加载运行基础固件和初始业务固件的步骤包括:[0014] 首先从FPGA挂载的FLASH中加载运行PCIe接口固件以完成主机端对FPGA中PCIe接口的初始化;[0015] 然后从FPGA挂载的FLASH中加载运行FPGA网络接口固件、IPSec功能固件和微处理器固件以使FPGA具备微处理器模块、IPSec模块和FLASH控制模块;[0016] 最后从FPGA挂载的FLASH中加载运行初始业务固件。[0017] 在一些实施例中,所述对FPGA与远程管理端之间通信链路的安全性进行验证的步骤包括:[0018] 利用所述微处理器模块分别与所述远程管理端和所述IPSec模块建立通信并交换二者的IPSec密钥;[0019] 由所述远程管理端和所述IPSec模块分别对所接收到的IPSec密钥进行验证;[0020] 响应于所述远程管理端和所述IPSec模块对所接收到的IPSec密钥验证均通过,则确认FPGA与远程管理端之间的通信链路安全;[0021] 响应于所述远程管理端,和/或所述IPSec模块对所接收到的IPSec密钥验证未通过,则确认FPGA与远程管理端之间的通信链路不安全。[0022] 在一些实施例中,所述从远程管理端读取目标业务固件,并将所述目标业务固件写入FPGA挂载的FLASH的骤包括:[0023] 利用所述微处理器模块从所述远程管理端读取目标业务固件,并发送给所述FLASH控制模块;[0024] 利用所述FLASH控制模块将所接收的所述目标业务固件写入FPGA挂载的FLASH中所述初始业务固件所在的位置。[0025] 在一些实施例中,所述微处理器模块为MicroBlaze微处理器或者为Nios微处理器。[0026] 在一些实施例中,所述远程管理端和所述微处理器模块通过高速网络接口连接。[0027] 根据本发明的第二方面,提供了一种用于智能网卡中FPGA的固件升级装置,所述装置包括:[0028] 固件加载单元,所述固件加载单元配置用于响应于检测到FPGA上电,则从FPGA挂载的FLASH中依次加载运行基础固件和初始业务固件,其中,所述基础固件用于使FPGA分别与远程管理端和主机端进行通信;[0029] 验证单元,所述验证单元配置用于响应于FPGA接收到远程管理端发送的固件升级请求,则对FPGA与远程管理端之间通信链路的安全性进行验证;[0030] 固件写入单元,所述固件写入单元配置用于响应于确认FPGA与远程管理端之间的通信链路安全,则从远程管理端读取目标业务固件,并将所述目标业务固件写入FPGA挂载的FLASH。[0031] 根据本发明的第三方面,还提供了一种计算机设备,该计算机设备包括:[0032] 至少一个处理器;以及[0033] 存储器,存储器存储有可在处理器上运行的计算机程序,处理器执行程序时执行前述的用于智能网卡中FPGA的固件升级方法。[0034] 根据本发明的第四方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时执行前述的用于智能网卡中FPGA的固件升级方法。[0035] 上述一种用于智能网卡中FPGA的固件升级方法,当检测到FPGA上电时,从FPGA挂载的FLASH中加载运行基础固件和初始业务固件,从而保证FPGA基于基础固件分别与远程管理端和主机端进行通信,当FPGA接收到远程管理端发送的固件升级请求时对FPGA与远程管理端之间通信链路的安全性进行验证,如果确认FPGA与远程管理端之间的通信链路安全,则从远程管理端读取目标业务固件并将目标业务固件写入FPGA挂载的FLASH,实现了在不借助外部CPU或SoC芯片参与的情况下从远程管理端安全地获取智能网卡FPGA业务固件进行升级,易于部署实现的同时也保证安全性。[0036] 此外,本发明提供的一种用于智能网卡中FPGA的固件升级装置、一种计算机设备和一种计算机可读存储介质,同样能实现上述技术效果,这里不再赘述。附图说明[0037] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。[0038] 图1为通用FPGA智能网卡的部署架构示意图;[0039] 图2为本发明一个实施例提供的一种用于智能网卡中FPGA的固件升级方法100的流程示意图;[0040] 图3为本发明一个实施例提供的另一种用于智能网卡中FPGA的固件升级方法200的流程示意图;[0041] 图4为本发明又一个实施例提供的FPGA内各功能模块通信示意图;[0042] 图5为本发明又一个实施例提供的FPGA内各功能模块执行的固件升级流程图;[0043] 图6为本发明另一个实施例提供的一种用于智能网卡中FPGA的固件升级装置300的结构示意图;[0044] 图7为本发明另一个实施例中计算机设备的内部结构示意图。具体实施方式[0045] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。[0046] 需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。[0047] 本发明实施例所提及的缩略语解释如下:[0048] IPSec是IETF(InternetEngineeringTaskForce,互联网工程工作组)为了在IP层提供通信安全而制定的一套协议。IPSec安全协议给出了封装安全载荷(EneapsulationSeeurityPayload,简称ESP)和鉴别头(AuthenticationHeader,简称AH)两种通信保护机制。其中ESP机制为通信提供机密性、完整性及数据身份认证保护;AH机制为通信提供完整性及数据身份认证保护。[0049] 在一个实施例中,请参照图2所示,本发明提供了一种用于智能网卡中FPGA的固件升级方法,具体来说所述方法包括以下步骤:[0050] 步骤101,响应于检测到FPGA上电,则从FPGA挂载的FLASH中依次加载运行基础固件和初始业务固件,其中,所述基础固件用于使FPGA分别与远程管理端和主机端进行通信;[0051] 在本实施例中,基础固件是指保证FPGA基本通信功能的固件,包括FPGAPCIe接口固件和用于辅助FPGA固件升级的固件用以保证FPAG能够正常与远程管理端通信,初始业务固件是指正常的智能网卡业务固件,包含智能网卡正式业务相关功能逻辑。初始业务固件具有特定的应用场景,初始业务固件能够保证FPGA在该特定场景下实现预期的功能。[0052] 步骤102,响应于FPGA接收到远程管理端发送的固件升级请求,则对FPGA与远程管理端之间通信链路的安全性进行验证;[0053] 在本实施例中,安全性验证可以是任何现有的验证方式,只需FPGA与远程管理端之间能够相互确认对方可信即可,例如可以采用用户名和加密的形式,以可以采用其他辅助算法进行可信认证。[0054] 步骤103,响应于确认FPGA与远程管理端之间的通信链路安全,则从远程管理端读取目标业务固件,并将所述目标业务固件写入FPGA挂载的FLASH。[0055] 其中,目标业务固件是指不同于初始业务的其他应用场景对应的固件。[0056] 上述一种用于智能网卡中FPGA的固件升级方法,当检测到FPGA上电时从FPGA挂载的FLASH中加载运行基础固件和初始业务固件,从而保证FPGA基于基础固件分别与远程管理端和主机端进行通信,当FPGA接收到远程管理端发送的固件升级请求时对FPGA与远程管理端之间通信链路的安全性进行验证,如果确认FPGA与远程管理端之间的通信链路安全,则从远程管理端读取目标业务固件并将目标业务固件写入FPGA挂载的FLASH,实现了在不借助外部CPU或SoC芯片参与的情况下从远程管理端安全地获取智能网卡FPGA业务固件进行升级,易于部署实现的同时也保证安全性。[0057] 在一些实施例中,请参照图3所示,本发明还提供了另一种用于智能网卡中FPGA的固件升级方法200的流程示意图,所述方法还包括以下步骤:[0058] 步骤201,响应于检测到FPGA上电,则从FPGA挂载的FLASH中依次加载运行基础固件和初始业务固件,其中,所述基础固件用于使FPGA分别与远程管理端和主机端进行通信;[0059] 步骤202,响应于FPGA接收到远程管理端发送的固件升级请求,则对FPGA与远程管理端之间通信链路的安全性进行验证;[0060] 步骤203,响应于确认FPGA与远程管理端之间的通信链路安全,则从远程管理端读取目标业务固件,并将所述目标业务固件写入FPGA挂载的FLASH。[0061] 在本实施例中,步骤201‑203具体操作已在图2所示的实施例中步骤101‑103进行了详细的介绍,在此不再赘述。[0062] 步骤204,响应于完成将所述目标业务固件写入FPGA挂载的FLASH,则对FPGA进行下电;[0063] 步骤205,响应于再次检测到FPGA上电,则FPGA挂载的FLASH中加载并运行基础固件和所述目标业务固件。[0064] 本实施例与前一个实施例的区别在于,在执行完目标业务固件写入操作后,通过线对FPGA进行下电,然后在对FPGA进行上电进而实现从FPGA所挂载的FLASH中读取到最新的业务固件,保证FPAG及时加载最新固件,保证了智能网卡正常稳定运行。[0065] 在一些实施例中,所述从FPGA挂载的FLASH中依次加载运行基础固件和初始业务固件的步骤包括:[0066] 首先从FPGA挂载的FLASH中加载运行PCIe接口固件以完成主机端对FPGA中PCIe接口的初始化;[0067] 然后从FPGA挂载的FLASH中加载运行FPGA网络接口固件、IPSec功能固件和微处理器固件以使FPGA具备微处理器模块、IPSec模块和FLASH控制模块;[0068] 最后从FPGA挂载的FLASH中加载运行初始业务固件。[0069] 在一些实施例中,所述对FPGA与远程管理端之间通信链路的安全性进行验证的步骤包括:[0070] 利用所述微处理器模块分别与所述远程管理端和所述IPSec模块建立通信并交换二者的IPSec密钥;[0071] 由所述远程管理端和所述IPSec模块分别对所接收到的IPSec密钥进行验证;[0072] 响应于所述远程管理端和所述IPSec模块对所接收到的IPSec密钥验证均通过,则确认FPGA与远程管理端之间的通信链路安全;[0073] 响应于所述远程管理端,和/或所述IPSec模块对所接收到的IPSec密钥验证未通过,则确认FPGA与远程管理端之间的通信链路不安全。[0074] 在一些实施例中,所述从远程管理端读取目标业务固件,并将所述目标业务固件写入FPGA挂载的FLASH的骤包括:[0075] 利用所述微处理器模块从所述远程管理端读取目标业务固件,并发送给所述FLASH控制模块;[0076] 利用所述FLASH控制模块将所接收的所述目标业务固件写入FPGA挂载的FLASH中所述初始业务固件所在的位置。[0077] 在一些实施例中,所述微处理器模块为MicroBlaze微处理器或者为Nios微处理器。其中,MicroBlaze微处理器可以是Xilinx公司优化过的可以嵌入在FPGA中的RISC处理器软核,例如,MicroBlaze7.0版本,Nios微处理器可以是Intel公司提供的简单低功耗处理器,例如NiosV、NiosV/g等等。[0078] 在一些实施例中,所述远程管理端和所述微处理器模块通过高速网络接口连接。[0079] 在一些实施例中,请参照图4和图5所示,为了便于理解本发明的方案,下面以执行主体为FPGA为例,具体来说该用于智能网卡中FPGA的固件升级方法包括以下两部分:[0080] 第一部分:将FPGA固件划分为三个阶段。第一阶段为FPGAPCIe接口固件,第二阶段为升级管理固件,第三阶段为正式业务功能相关固件。三个阶段的固件依次加载,整体加载完毕后FPGA的功能才完整运行智能网卡数据业务,按照此种固件阶段划分方式,一般升级的固件为第三阶段固件,第一阶段和第二阶段不需要随业务变化而变化。[0081] 第一阶段固件的作用如下:因为PCIe协议要求,主机连接的PCIe设备需要在100ms内完成初始化,主机才能正确扫描到PCIe设备。而完整的FPGA固件较大,不能在100ms内完成加载,所以将PCIe接口相关的FPGA固件独立处理,在第一时间加载,以完成主机对FPGA中PCIe接口的初始化,[0082] 第二阶段固件的作用如下:用于FPGA固件升级的固件,包括FPGA网络接口、FPGA实现的IPSec功能和FPGA内的微处理器固件。FPGA网络接口用于连接远程管理服务端,FPGA内的微处理器是FPGA内部实现的处理器单元,如xilinx的microblaze或者Intel的Nios微处理器。[0083] 第三阶段固件的作用如下:正常的智能网卡业务固件,包含智能网卡正式业务相关功能逻辑。[0084] 第二部分:基于FPGA中第二阶段固件所实现的功能对业务固件的升级。[0085] IPSec模块用于与远程服务器端建立安全连接,以确保FPGA固件升级数据传输过程安全;IPSec模块用于建立智能网卡本地和远程管理服务器端的安全通信通道,因此在利用网络接口灵活部署、灵活通信的同时,也可以保持网络通信的安全性,避免固件在升级时被攻击、篡改。[0086] MicroBlaze(嵌入式软核,被Xilinx公司优化过的可以嵌入在FPGA中的精简指令集处理器软核)处理器用于与远端服务器建立基本网络连接,以及进行数据分发,如建立IPSec安全连接时将协议握手数据发给IPSec模块,以及在固件升级过程中将固件数据发给FLASH控制模块;Microblaze处理器是xilinx提供的FPGA微处理器模块,也可替换为其他FPGA中微处理器模块,如上文提到的Intel的Nios微处理器模块。使用FPGA中的微处理器模块来协助处理IPSec协议握手过程和固件加载过程,因为微处理器模块可使用C语言开发,借助标准的软件库,加速本发明的开发部署。[0087] FLASH控制模块用于读写FLASH中存储的数据,将升级固件写入FLASH中。一般FPGA固件FLASH使用的是专用FPGA接口,FPGA内部需要借助FPGA芯片厂商提供的方法来对加载FLASH进行读写操作。[0088] 通过以上三个模块将远程管理端的业务固件刷写到FLASH的过程如下:[0089] 步骤一、远程服务端向Microblaze处理器发起IPSec密钥交换;[0090] 步骤二,藉由Microblaze处理器分别与远程服务端和IPSec模块通信,使远程服务端和智能网卡完成IPSec协议协商,建立安全通信;[0091] 步骤三,远程管理服务端开始发送FPGA升级固件(即新的业务相关固件);[0092] 步骤四,智能网卡FPGA中Microblaze处理器接收升级固件(即新的业务相关固件),提供FLASH控制模块写入新的业务相关固件到FLASH中;[0093] 步骤五,等待固件写入完毕则完成固件写入升级。[0094] 一种用于智能网卡中FPGA的固件升级方法,借助通过分阶段的固件加载方式,在第一阶段保证主机对FPGAPCIe接口初始化时间要求的同时,在第二阶段固件中实现安全升级功能模块,同时第二阶段固件借助FPGA片内的高速网络接口,以及微处理器核还有IPSec安全模块,实现外部管理服务端的安全通信通道,以保证远程传输的FPGA固件数据安全,实现安全升级。[0095] 在一些实施例中,请参照图6所示,本发明还提供了一种用于智能网卡中FPGA的固件升级装置300,所述装置包括:[0096] 固件加载单元301,所述固件加载单元配置用于响应于检测到FPGA上电,则从FPGA挂载的FLASH中依次加载运行基础固件和初始业务固件,其中,所述基础固件用于使FPGA分别与远程管理端和主机端进行通信;[0097] 验证单元302,所述验证单元配置用于响应于FPGA接收到远程管理端发送的固件升级请求,则对FPGA与远程管理端之间通信链路的安全性进行验证;[0098] 固件写入单元303,所述固件写入单元配置用于响应于确认FPGA与远程管理端之间的通信链路安全,则从远程管理端读取目标业务固件,并将所述目标业务固件写入FPGA挂载的FLASH。[0099] 上述一种用于智能网卡中FPGA的固件升级装置,当检测到FPGA上电时从FPGA挂载的FLASH中加载运行基础固件和初始业务固件,从而保证FPGA基于基础固件分别与远程管理端和主机端进行通信,当FPGA接收到远程管理端发送的固件升级请求时对FPGA与远程管理端之间通信链路的安全性进行验证,如果确认FPGA与远程管理端之间的通信链路安全,则从远程管理端读取目标业务固件并将目标业务固件写入FPGA挂载的FLASH,实现了在不借助外部CPU或SoC芯片参与的情况下从远程管理端安全地获取智能网卡FPGA业务固件进行升级,易于部署实现的同时也保证安全性。[0100] 需要说明的是,关于用于智能网卡中FPGA的固件升级装置的具体限定可以参见上文中对用于智能网卡中FPGA的固件升级方法的限定,在此不再赘述。上述用于智能网卡中FPGA的固件升级装置中的各个单元可全部或部分通过软件、硬件及其组合来实现。上述各单元可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个单元对应的操作。[0101] 根据本发明的另一方面,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图请参照图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时实现以上所述的用于智能网卡中FPGA的固件升级方法,具体来说,所述方法包括以下步骤:[0102] 响应于检测到FPGA上电,则从FPGA挂载的FLASH中依次加载运行基础固件和初始业务固件,其中,所述基础固件用于使FPGA分别与远程管理端和主机端进行通信;[0103] 响应于FPGA接收到远程管理端发送的固件升级请求,则对FPGA与远程管理端之间通信链路的安全性进行验证;[0104] 响应于确认FPGA与远程管理端之间的通信链路安全,则从远程管理端读取目标业务固件,并将所述目标业务固件写入FPGA挂载的FLASH。[0105] 根据本发明的又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上所述的用于智能网卡中FPGA的固件升级方法,具体来说,包括执行以下步骤:[0106] 响应于检测到FPGA上电,则从FPGA挂载的FLASH中依次加载运行基础固件和初始业务固件,其中,所述基础固件用于使FPGA分别与远程管理端和主机端进行通信;[0107] 响应于FPGA接收到远程管理端发送的固件升级请求,则对FPGA与远程管理端之间通信链路的安全性进行验证;[0108] 响应于确认FPGA与远程管理端之间的通信链路安全,则从远程管理端读取目标业务固件,并将所述目标业务固件写入FPGA挂载的FLASH。[0109] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。[0110] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。[0111] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
专利地区:山东
专利申请日期:2022-01-26
专利公开日期:2024-07-26
专利公告号:CN114567550B