设备固件更新技术的制作方法

专利2023-08-31  129

设备固件更新技术
1.要求优先权本技术根据要求2020年4月24日提交的题为“设备固件更新技术”的美国专利申请号16/858504的优先权,其整体结合到本技术中。
2.描述计算设备可以包括用于硬件初始化、低级硬件管理和管理设备引导操作的固件。除了平台固件之外,计算设备还可以包括用于控制器芯片、外围设备或其他组件的专用固件。固件可以在运行时间和在引导期间被读取,但是可以在专门的固件更新过程期间被更新。
附图说明
3.图1描绘一种示例性系统。
4.图2描绘可以被执行以使用接收到的分组来配置用于固件更新的设备的一个示例性过程。
5.图3a和3b描绘示例性系统。
6.图4a和4b描绘转换到使用另一接口的一个示例。
7.图5描绘一个示例性过程。
8.图6描绘一个示例性系统。
9.图7a-7d描绘在固件更新期间的系统状态和交互的一个示例。
10.图8a-8c描绘用于跨组件通信和活动以检索固件或其它软件的一个过程。
11.图9描绘一个系统。
12.图10描绘数据中心的一个示例。
13.图11描绘一个环境。
具体实施方式
14.在数据中心中,可以在单独的网络接口卡(nic)上执行nic上的非易失性存储器(nvm)固件更新,这可能会花费大量时间。例如,管理员可以在本地登录到连接到nic的计算系统以执行nvm(例如,固件)更新。一些解决方案可以经由板管理控制器(bmc)远程更新系统(例如,主板上的lan)上的局域网(lan)固件,bmc是厂商专用的,但是不允许针对厂商不可知的网络接口设备的固件更新或网络上的固件更新。当处理固件更新时通常会使用大量网络接口停机时间,并且由于没有利用设备并且客户可能没有接收到服务,因此这种停机时间是昂贵的。
15.各种实施例允许网络的管理员更新数据中心中的任意数量的异构服务器的lan控制器固件存储装置(例如,非易失性存储器(nvm)),而无需本地干预(例如,本地登录到服务器)。各种实施例提供了经由分组和网络服务来更新网络接口卡(nic)。
16.图1描绘了一个示例性系统。根据本文所述的实施例,该系统可用于更新一个或多个设备的固件。平台150可发起或提供固件更新给计算平台100-0至100-n(其中,n≥1)中的
任何一个。计算平台100可以指计算平台100-0至100-n中的任何一个或全部,并且计算平台100-0的任何组件可以指计算平台100-0至100-n中的任何一个或全部中的类似组件。在一些示例中,处理器102-0可以包括以下各项中的一个或多个:中央处理单元(cpu)、图形处理单元(gpu)、现场可编程门阵列(fpga)或专用集成电路(asic)。在一些示例中,cpu可以是由 intel
®
、arm
®
、amd
®
、qualcomm
®
、ibm
®
、texas instruments
®
等出售或设计的。处理器102-0可以执行os 108-0。在一些示例中,os 108-0可以是linux
®
、windows
®
、freebsd
®
、android
®
、macos
®
、ios
®
, 或任何其他操作系统。存储器104-0可以是任何类型的易失性或非易失性存储器。
17.计算平台100可以至少使用处理器102-0和存储器104-0来执行操作系统108-0、应用或虚拟化执行环境(vee)。虚拟化执行环境可以至少包括虚拟机或容器。虚拟机(vm)可以是运行操作系统和一个或多个应用的软件。vm可以由规范、配置文件、虚拟磁盘文件、非易失性随机存取存储器(nvram)设置文件和日志文件来限定,并由主机计算平台的物理资源来支持。vm可以是安装在软件上的操作系统(os)或应用环境,其模仿了专用硬件。最终用户在虚拟机上可以具有与他们在专用硬件上一样的体验。被称为管理程序(supervisor)的专用软件完全仿真了pc客户端或服务器的cpu、存储器、硬盘、网络和其它硬件资源,从而使虚拟机能够共享资源。管理程序可以仿真彼此隔离的多个虚拟硬件平台,从而使虚拟机在同一底层物理主机上运行linux
®
、windows
®ꢀ
服务器、vmware esxi和其他操作系统。
18.容器可以是应用、配置和依赖关系的软件包,因此应用在一个计算环境到另一个计算环境上可靠地运行。容器可以共享安装在服务器平台上的操作系统,并且作为隔离的进程运行。容器可以是包含软件需要运行的所有东西的软件包,诸如系统工具、库和设置。容器不像传统软件程序那样安装,这允许它们与其它软件和操作系统本身隔离。容器的隔离性质提供了若干益处。首先,容器中的软件将在不同的环境中运行相同的软件。例如,包括php和mysql的容器可以在linux
®
计算机和windows
®
机器上同样地运行。第二,容器提供了附加的安全性,因为软件将不会影响主机操作系统。尽管安装的应用可以更改系统设置并修改诸如windows注册表等资源,但容器可以仅修改该容器内的设置。
19.平台100-0可支持单引导i/o虚拟化(sr-iov)。sr-iov是描述在单个的根端口下使用单个的pcie物理设备以对于管理程序或客户操作系统表现为多个单独的物理设备的规范。sr-iov使用物理功能(pf)和虚拟功能(vf)来管理sr-iov设备的全局功能。pf可以是能够配置和管理sr-iov功能的pcie功能。例如,pf可以配置或控制pcie设备,并且pf具有将数据移入和移出pcie设备的能力。例如,对于网络适配器,pf是支持sr-iov的网络适配器的pcie功能。pf包括配置和管理网络适配器的sr-iov功能的能力,诸如使得能够实现虚拟化和管理pcie vf。vf与网络适配器上的pcie pf相关联,并且vf表示网络适配器的虚拟化实例。vf可以具有其自己的pcie配置空间,但是可以与pf和其他pf或其他vf共享网络适配器上的一个或多个物理资源,诸如外部网络端口。
20.平台100-0可以使用网络接口110-0来使用连接130发送或接收内容。注意,网络接口110可以指代网络接口110-0至110-n中的任何一个。在一些实施例中,管理员可以使用在平台150上执行的固件更新管理器154来在计算平台100中选择设备以接收固件更新以及要接收哪个固件更新。在一些示例中,管理员可以访问图形用户界面以选择一个或多个设备来接收固件更新。在指示固件更新成功时,管理员可以根据操作系统来部署驱动器更新。
21.根据各种实施例,在平台150上执行的固件更新管理器154 (例如,编排器或其他软件和/或硬件)就可以经由网络接口108向任何计算平台100发出固件或其他软件更新,以至少更新网络接口108中的固件,而不中断网络接口108的操作并且经受本文描述的认证过程。任何计算平台100中的任何设备的固件或其他软件更新可以发生,并且设备可以包括以下中的一个或多个:板管理控制器(bmc)、cpu、cpu插槽、存储控制器、存储器控制器、显示引擎、图形处理单元(gpu)、加速器设备、或任何外围设备116-0。在一些示例中,网络接口108可以在固件更新期间至少维持可管理性连接。在一些示例中,在更新网络接口108上的固件期间,网络接口108可以在使用当前固件的第一通道或虚拟接口的使用与使用第二固件的第二通道或虚拟接口的使用之间切换,同时维持与一个或多个设备的连接性。在一些示例中,在引导时或响应于固件刷新触发,计算平台100中的任何设备(例如,板管理控制器(bmc)、cpu、cpu插槽、网络接口108、以太网控制器、存储控制器、存储器控制器、显示引擎、图形处理单元(gpu)、加速器设备或任何外围设备116-0)可以请求平台150提供固件以供执行,并且经历本文描述的认证过程,可以将固件保存到其固件存储器(例如,易失性存储器)中并执行固件。
22.例如,在平台150上执行的固件更新管理器154可以通过向网络接口108发送具有固件更新开始指示的分组来发起网络接口108(或其他设备)上的固件或其他软件更新。固件更新开始指示警报可以被广播到例如广播域中的特定虚拟lan(vlan)上的所有主机,或者经由编排服务来管理。计算平台100-0的固件更新工具106-0被警报要发生更新。在一些示例中,在发送了固件更新开始指示之后,平台150就可以以一个或多个分组将固件更新可执行二进制文件发送到目标计算平台100。在一些示例中,基于固件更新开始指示的内容,计算平台100使用到被设置为活动的辅存储器或闪速存储器位置的安全连接从远程位置下载并安装固件更新映像。在各种实施例中,固件更新开始指示、固件更新分组和/或下载的固件更新都可以由平台150或可信源签名,并且由网络接口108或计算平台100(例如,固件更新工具106-0)验证。
23.处理器102-0可以执行固件更新工具106-0,以识别何时发起更新固件的尝试,以及验证和准许或拒绝更新网络接口108或其他设备的固件的尝试。固件更新工具106-0可以确定固件更新是否是比当前运行的固件版本更新的版本(例如,更高的构建或版本号),并且还确定是否已经通过了一个或多个安全校验。如果两者都为真,则固件更新工具106-0可以将固件更新软件(例如二进制)复制到存储器中,设备可以从该存储器访问固件并运行固件更新。在一些示例中,网络接口108(或任何设备)可以在接受固件更新之前执行安全和损坏校验。固件更新工具106-0可以发起固件更新(例如,经由os或uefi/bios选项来传输二进制)。在一些示例中,设备将重新引导或电力循环(例如,在被提高到操作功率水平之前功率被减少到零达一定时间量)以执行固件更新。
24.在尝试的固件更新之后,固件更新工具106-0可以指示固件更新是否成功的状态。例如,固件更新工具106-0可以写入到通知地址(例如,tcp地址或mac地址)以指示成功或失败以及失败的原因(例如,分组安全签名、更新失败-坏的nvm签名、更新被忽略-不是较新的版本,或其他)。
25.在一些示例中,固件可以是控制设备操作的指令(例如,二进制代码)。例如,对于网络接口来说,固件可以添加或更新协议支持、更新物理功能(pf)列表、更新网表、更新以
太网消息传递(emp)固件(例如,暴露软件和与链路管理代理进行通信的接口)、更新链路建立状态机(lesm)、辅助链路管理代理获得链路、网表(例如,定制网络接口端口的配置)、配置管理队列、配置网络接口默认、配置远程直接存储器访问(rdma)固件、配置预引导二进制可执行文件、配置定制模拟设置、配置物理层(phy)固件等。在一些实施例中,固件可以包括以下中的一个或多个:基本输入/输出系统(bios)、通用可扩展固件接口(uefi)、引导加载器、融合安全和管理引擎(csme)固件、平台安全处理器固件和bmc固件等。bios固件可以预先安装在个人计算机的系统板上,或者可通过spi接口从引导存储装置(例如闪速存储器)访问。在一些示例中,bios可以存储在设备上,并且可由一个或多个核或cpu使用诸如串行外围接口(spi)或其他接口(例如,pcie)的接口从设备访问。bios可以初始化和测试系统硬件组件,并且从存储器设备加载引导加载器,该引导加载器初始化和执行操作系统。本文提供了固件的各种非限制性示例。注意,在一些示例中,对固件的引用可以指任何软件更新(例如,驱动器、操作系统、应用、系统软件等)。
26.连接130可以提供任何计算平台100之间以及任何计算平台100和平台150之间的通信。连接130可以提供与以下各项中的一项或多项可兼容或符合以下一项或多项的通信:以太网(ieee 802.3)、远程直接存储器访问(rdma)、infiniband、fibrechannel、因特网广域rdma协议(iwarp)、传输控制协议(tcp)、用户数据报协议(udp)、快速udp因特网连接(quic)、融合以太网(roce)上的rdma、外围组件互连(pcie)、英特尔快速路径互连(qpi)、英特尔超路径互连(upi)、英特尔片上系统结构(iosf)、omnipath、计算快速链路(cxl)、超传输(hypertransport)、高速结构、nvlink、高级微控制器总线架构(amba)互连、opencapi、gen-z、加速器的高速缓存一致互连(ccix)、3gpp长期演进(lte)(4g)、3gpp 5g、结构接口及其变型。可以使用诸如结构上的nvme(nvme-of)或nvme之类的协议将数据复制或存储到虚拟化存储节点。
27.图2描绘了可以被执行以使用通过网络或结构传输的分组来配置用于固件更新的设备的一个示例性过程。分组可以例如包括可以在网络上发送的格式化的比特集合,诸如以太网帧、ip分组、tcp段、udp数据报或者其它标准化的或专有的格式。此外,如在本文件中所使用的,对l2、l3、l4和l7层(或层2、层3、层4和层7)的引用分别是对osi(开放系统互连)层模型的第二数据链路层、第三网络层、第四传输层和第七应用层的引用。在一些示例中,该过程可以由具有网络或结构接口的计算平台执行。
28.在202,可以选择要接收固件更新的一个或多个设备。例如,网络管理员可以配置一个或多个硬件设备以支持通过分组来收到固件更新。例如,网络管理员可以配置使用图形用户界面或脚本来选择要接收固件更新的设备。管理员可以配置所选择的设备以响应某些分组,所述分组指示了固件更新将跟随、提供固件更新、或终止固件更新。管理员可以使用数据中心管理或编排软件来识别一个或多个设备,以更新和发送出“更新”或“监听模式开始”分组到一个或多个目标设备。在一些示例中,数据中心管理或编排软件是由接收设备信任的,以执行固件更新。例如,可以通过使用分组传输来更新固件的一个或多个设备可以包括板管理控制器(bmc)、cpu、cpu插槽、网络接口、以太网控制器、存储控制器、存储器控制器、显示引擎、图形处理单元(gpu)、加速器设备、任何外围设备等等。
29.在204,监听模式开始分组可被发送到所选择的一个或多个设备。管理员可以使用软件在使固件更新被发送到所选择的一个或多个设备之前就发送监听模式开始分组。监听
模式开始分组可用于指示固件更新将在监听模式开始分组之后被传送。例如,监听模式开始分组可被广播或顺序地发送到所选择的一个或多个设备。监听模式开始分组可以包括指示签名的有效载荷,接收器可读取所述签名以识别固件更新将跟随在一个或多个其它分组中。在一些示例中,监听模式开始分组的报头字段(例如,特定的ethertype)可以指示分组是监听模式开始分组。在一些示例中,监听模式开始分组的报头字段(例如,源ip地址)可将监听模式开始分组的发送方标识为可信源。主机系统可处理监听模式开始分组以确定固件更新将跟随在随后的分组中。在一些示例中,监听模式开始分组可以包括有效载荷,所述有效载荷还包括固件更新的一部分。
30.在206,将一个或多个固件更新分组传送到网络接口,该网络接口将接收用于要接收固件更新的所选择的一个或多个设备的分组。网络接口可以通过一个或多个端口接收更新分组。在一些示例中,更新分组的报头字段(例如,ethertype)可以将该分组标识为传送固件更新的分组。更新分组的有效载荷可以包括以下中的一个或多个:固件更新、包括从其下载固件更新的位置的地址的元数据、或用于通知固件更新状态的通知地址。例如,一个或多个固件更新分组可以包括固件二进制文件。一个或多个固件更新分组可以由固件存储库设备通过到网络接口的连接来传送。发送监听模式开始分组的相同或不同平台也可以发送一个或多个固件更新分组。
31.在一些示例中,在一个或多个固件更新分组中提供固件更新之后,在206,监听模式结束分组可被发送到尝试对其进行设备固件更新的平台,以便通知平台固件更新已完成。发送一个或多个固件更新分组的相同或不同平台也可以发送监听模式结束分组。
32.在208,所选择的硬件设备尝试使用一个或多个分组中的所接收的内容来进行固件更新。例如,主机系统可以执行固件更新工具,诸如intel
®
nvm更新工具版本7.1(或任何更早或更晚的版本),以管理连接到主机系统的一个或多个设备的固件更新。例如,主机计算系统可以通过对所接收的分组的内容执行安全散列以确定计算值是否匹配期望值来认证所接收的内容。主机系统可以确定固件版本是否比当前运行的固件版本新。如果固件更新版本较新并且安全校验已通过,则主机可以验证允许固件更新。设备可以将固件更新下载到存储器。在一些示例中,设备可以执行固件更新被接受的其自己的验证,诸如附加安全校验(例如,固件具有无效的安全签名或者不是设备的正确固件)。该设备可以向主机计算系统指示在存储器处成功地接收到固件更新并且成功地或不成功地应用了固件更新。
33.在接收到监听模式结束分组且验证固件之后,接收固件更新的设备可经受电力循环(例如,设备的电力减少或丢失,随后是恢复的电力)以使固件更新由设备来执行。
34.在210,在尝试的固件更新之后,主机可以确定固件更新是成功的还是不成功的。为了指示更新是成功还是不成功,主机可以向通知地址写入。通知地址(例如,tcp地址或mac地址)可与监听模式开始分组一起提供。对于成功的固件更新,212可以跟随,其中,成功的指示被写入到通知地址。对于不成功的固件更新,220可以跟随,其中,到不成功的固件更新的通知地址的返回代码可以包括:更新失败-坏的更新包安全签名、更新失败-坏的固件签名(例如,固件具有有效安全签名并且是有效固件,但不是设备的正确固件)、更新被忽略-版本不是新的等等。
35.用于固件更新的通道切换用于诸如网络接口的设备的固件更新可以包括用于以太网固件、物理层接口
(phy)固件的更新,以及诸如对bmc的更新的可管理性更新。应用在网络接口上的固件更新可以使得网络接口在固件更新期间被禁用,并且一些解决方案在固件更新期间丢弃可管理性端口上的链路。可管理性网络端口提供心跳分组、探测消息、遥测收集和各种保活发送/接收分组,包括地址解析协议(arp)消息、确认(ack)、邻居请求和其他发现协议。可管理性分组允许网络群集至少为了高可用性(ha)、容错和可管理性而保持在线。链路的丢失可能会导致遥测业务丢失、虚拟功能(vf)被丢弃、连接丢失等等,这可能会导致违反服务等级协议(sla)或增加总拥有成本(tco),因为设备不可供使用。
36.各种实施例可以在固件更新期间维护网络接口的可管理性使能端口上的网络连接性。各种实施例可以在引导时或在运行时间期间发生,而不丢弃发送或接收的分组或重置网络接口。各种实施例允许远程管理员在固件更新期间维护可管理性服务时,在未知的时间量内维护到他们正在更新的系统的连接。因此,可管理性服务可以在固件更新期间继续以维持依赖于与另一设备的活动链路的网络服务。各种实施例提供用于存储在固件存储器中的至少两个版本的固件的接口或通道。例如,对于当前固件版本,第一接口或通道可以执行当前固件版本。如果在固件更新中接收到固件更新,则具有与第一接口或通道的mac地址相同的mac地址的另一接口或通道可以执行固件更新并维护链路(例如,可管理性服务)。各种实施例可以高速缓存或存储在下行链路期间接收或发送的分组,并且允许在链路恢复之后的稍后时间存储和处理接收的分组或传送的分组。
37.图3a和3b描绘了示例性系统。在图3a和3b的示例中,主机系统300可以包括具有处理器、存储器和其他组件的计算平台。为了清楚起见,主机系统300的所有组件未被示出。如稍后更详细地描述的,固件(fw)更新工具302可以选择端口接口要使用哪个固件。然而,在一些示例中,在固件更新改变多个配置的物理功能(pf)或端口速度的情况下,如果主机300被重新引导,则主机300可被重置并且可能中断主机系统300或设备320的操作。os 304可以使用驱动器提供主机系统300和设备320之间的交互。在图3a和3b的示例中,主机系统300可以仅仅指示使用哪个固件库,并且fw代理322可以决定使用哪个接口而无需控制或管理主机300。换句话说,使用哪个接口的改变可以不受主机系统300的控制而发生,并且主机系统300不接收或存储关于设备320包括多个接口的任何配置信息。
38.接口310可以提供主机系统300和设备320之间的连接性。例如,设备320可以是主机系统300的外围设备,并且通过接口310连接。接口310可以包括信号导体并且使用协议来访问。例如,接口310可以包括总线、互连、网格、引脚或其他导电电路或信号(例如,电或光)传导材料。接口310可以提供与任何公共标准或专用规范的通信。例如,接口310可以提供符合快速外围组件互连(pcie)、nvlink、快速计算链路(cxl)和其他标准或规范的通信。
39.在图3a的示例中,设备320可以包括多个固件存储库,以便在固件更新之后经历不期望的行为的情况下便于固件回退。例如,固件存储器324-0可以将固件版本存储在固件库0和固件库1中,其可用于由接口326-0的相应接口0和1执行。在一些示例中,接口326-0的接口0或1被耦合以使用端口328-0至328-z中的一个或多个来传送或接收分组。固件存储器324-0可以包括多个固件库(例如,固件库0和1)。固件库可独立操作以便允许在不中断物理端口所使用的活动接口的情况下重新加载。
40.在一些示例中,接口0执行来自固件库0的固件,并且固件库1可以被更新以存储固件更新。最初,接口0从固件库0加载固件,并且在对固件库1的固件更新之后,接口1可以从
固件库1加载并运行固件。固件代理322可以选择接口326-0的接口1以执行来自固件存储器324-0的固件库1的固件,使得对于端口328-0到328-z-1,设备320可以使用运行固件库1中的固件的接口1来使用端口328-0到328-z-1维护与设备(例如,链路伙伴)的连接性。
41.注意,在一些示例中,接口0可以执行来自固件库1的固件,并且接口1可以执行来自固件库0的固件。
42.固件代理322可以被实现为硅设备、可编程处理器或设备,其控制接口将从固件存储器使用哪个固件并且控制哪个接口对于端口是可操作的或活动的。固件代理322可以被编程或控制以选择固件存储库供主机系统300的固件更新工具302使用。接口的选择可以通过使用由主机系统300设置的比特来执行,以指示哪个固件库是活动的,不过选择的这个示例是非限制性的,并且可以使用指定哪个固件存储库的其它方式。
43.在该示例中,固件存储器324-z可以包括单个固件版本,并且接口326-z包括单个接口,并且该接口耦合到端口328-z。在其他示例中,多于两个接口或多于两个固件库可以用于一个或多个端口。在一些示例中,在接口与固件库之间存在一一对应,使得接口从其对应固件库运行固件,并且选择固件库以供使用可以使得其对应接口被使用。
44.例如,接口0和1可以是能够运行相同或不同固件以执行由固件指定的操作的复制电路。接口0和1可以执行为ieee 802.3-2018中的以太网网络接口定义的操作,诸如以下各项中的一个或多个:物理(phy)层操作、介质无关接口(mii)连接、介质访问控制(mac)层、物理介质相关(pmd)操作、前向纠错(fec)、物理编码子层(pcs)操作等。接口0和1可以执行由其它规范定义的操作,诸如但不限于rdma、infiniband和其它协议规范。
45.在一些示例中,端口328-0是可管理性网络端口,其用于提供心跳分组、探测消息、遥测收集和各种保活发送/接收分组,包括地址解析协议(arp)消息、确认(ack)、邻居请求和其他发现协议。在固件更新期间维护端口328-0的操作可以防止可管理性操作的中断。
46.图3b描绘了一个示例性系统,其中,设备320包括用于端口的多个接口。例如,如在图3a的示例中,固件存储器324-0可以包括可由接口0和1访问的固件库0和1,然而,一个或多个接口可以每个端口可用。例如,端口328-0可以耦合到接口326-0的接口0或1,并且端口328-z可以耦合到接口326-z的接口0或1。注意,在一些示例中,接口0可以执行来自固件库1的固件,并且接口1可以执行来自固件库0的固件。
47.图4a和4b描绘了从使用端口0的接口0到使用端口1的接口1的转换的一个示例。在图4a中,接口0使用端口0执行来自固件库0(固件0)的固件以进行通信。对于固件更新来说,固件在固件库1(固件1)中可用,并且接口1可以执行来自固件1的固件。如图4b所示,fw代理选择接口1用于端口0和主机系统之间的连接性。
48.图5描绘了一个示例性过程。该过程可以由网络接口执行,以在固件更新期间维护网络接口的(多个)可管理性使能端口或其他端口上的网络连接性。该过程可以应用于不需要网络接口的功率重置或功率循环的情况。注意,在使用更新的固件之前发生网络接口的功率重置或功率循环的情况下,可以应用功率重置,并且在功率重置之后发生固件更新。
49.在502,网络接口可以接收固件更新可用于使用的指示。例如,在通过接口连接到网络接口的主机设备上执行的固件更新工具可以向网络接口所使用的固件代理或其他设备或处理器指示固件更新或其他固件版本可供使用。固件可被存储在诸如易失性或非易失性存储器设备的存储器设备中,并且根据本文描述的各种实施例或根据任何方式来接收。
在一些示例中,存储器设备中的可用于网络接口的多个区域可用于存储多个相同或不同版本的固件,使得第一区域可以存储第一版本的固件并且第二区域可以存储第二或相同版本的固件。第二存储器区域可以被认为是第二库,并且在诸如如果固件的更新版本导致设备故障或其他原因网络接口要回滚到使用固件的较早版本的情况下,则第二库可以用于回滚到存储固件的先前版本。网络接口内通道或接口可以暴露来自第一区域的第一版本的固件,同时固件更新被写入第二区域。网络接口的固件代理或其它设备或处理器内的通道或接口可以是可以被配置用于使用固件进行操作的电路。例如,通道或接口可以根据网络接口的应用规范,诸如以太网、rdma infiniband和其它协议规范,执行物理接口操作。
50.在504,网络接口可以使第二通道或接口加载并执行来自第二区域的固件更新。例如,网络接口的固件代理或其他设备或处理器可以使网络接口的第二通道或第二接口使用来自第二存储器区域的更新的固件来操作。例如,第二通道或接口能够处理使用与使用第一版本固件操作的通道或接口的物理或虚拟端口相同的物理或虚拟端口发送或接收的分组。固件代理或其他设备或处理器可以通过使第二通道或接口加载并使用更新的固件操作来切换到固件更新的使用。
51.在506,网络接口的活动状态可以被复制到第二存储器区域以供第二通道或接口使用。例如,活动状态可以包括配置空间信息,诸如pcie配置信息、物理功能驱动器资源(例如队列等)或外部以太网端口配置。
52.在508,第二通道或接口可被用于处理分组,同时保持从相同端口传送或接收分组。在第二通道或接口已经加载了固件更新并模拟了通道或接口的活动状态之后,固件代理可以通过第二通道或接口将分组路由到端口和从端口路由分组,而不丢弃链路。nvm更新(nut)可被用于管理固件更新,并且确定和报告更新是否已经成功发生。
53.远程固件更新在数据中心中,平台配置可以在初始供应时被设置并且本地存储在串行外围互连(spi)可访问的闪速存储器设备上。本地闪速存储器可被用来存储基本平台固件(例如,bios、uefi、csme、bmc等)和相应的配置。固定的固件配置可能使平台管理复杂化。在一些情况下,数据中心管理员可以通过诸如智能平台管理接口(ipmi)或redfish
®
的现有管理接口来单独地管理每个平台,但是在不经历重置循环(例如bios配置)的情况下,设置可能不可用于编辑。在一些情况下,平台配置更新涉及更新被提交给spi闪速存储器,其易于出错并且可能会导致固件和/或配置的损坏。另外,低级固件和配置正成为恶意黑客攻击的目标,在极端情况下,恶意黑客攻击可能会导致永久性rootkit插入或永久性拒绝服务(pdos)。
54.bmc控制器可被用于更新固件,但是可能不允许将平台固件返回到原始状态,这使得在平台生命周期内在平台闪速存储器中留下了恶意代码(和潜在的rootkit)的开口。在一些服务器平台中,闪速存储器管理可以使用增强的串行外围接口(espi)。然而,spi或espi闪速存储器的持久性在整个供应链和平台传输过程中会留下用于恶意代码插入的开口,并且造成恶意代码将永久地驻留在平台闪速存储器中的风险。
55.对于单和多服务器平台固件更新来说,各种实施例提供了独立于平台功率状态的固件或设备固件的无缝更新(例如,潜在地避免了固件更新之后的平台重置),并且潜在地减少了主机运行操作系统时的cpu循环(例如,系统管理中断)以监督固件更新。各种实施例
通过与固件存储库的相互认证和安全的通道来管理平台和设备固件更新和配置。平台可以将平台固件存储在易失性存储器或任何类型的存储器(例如,持久性闪速存储装置)中。远程固件存储库可由平台固件配置服务(pfcs)管理,pfcs可便于同时向数据中心内的一个或大量服务器发送、提供或流传输固件。pfcs可管理固件更新、回滚策略,同时确保满足固件组件依赖性。平台级机制可以发出固件更新通知,包括描述改变的清单。固件激活策略可以由固件消费者(例如,设备或平台)自我管理。
56.各种实施例降低了对平台固件的恶意软件攻击的风险,该恶意软件攻击可能会在功率循环上持续,因为固件和配置都不以持续状态存储在平台或设备上。各种实施例提供了安全的初始供应和保护,以防止对固件配置的供应链攻击,因为平台没有嵌入的持久或非易失性固件存储装置,并且可以被供应来自管理网络中的认证存储库/服务的最新的可信固件。各种实施例提供了一种用于固件更新的无缝方式,因为平台高速缓存并认证最新的、验证的固件,并且可以立即回复到最后已知良好(lkg)配置。各种实施例提供了数据中心管理过程,因为当平台向存储库服务器验证其自身时,远程固件配置存储库可自动地为平台调整固件配置。各种实施例提供了独立于主机状态的配置改变,并且可以在任何系统功率状态下远程地执行。
57.各种实施例提供了用于固件存储库的单个访问点,以潜在地避免在固件更新期间的spi访问同步问题,由此多个设备尝试使用spi接口来访问固件更新。各种实施例可以改进整体固件安全性,因为单个或分布式系统可以负责认证所有下载或高速缓存的固件,并且保护高速缓存的固件映像免受恶意篡改。
58.各种实施例允许暴露虚拟闪速存储器以使设备对由主机系统和管理控制器发出的业务执行附加遥测。
59.各种实施例潜在地消除了用于固件更新的中断期,因为配置是由远程代理管理的。例如,uefi nv get/set操作可以由平台固件配置服务转发和处理,其可以在所有时间都可用。
60.图6描绘了一个示例性系统。各种实施例使用了平台信任根(prot)602和平台固件配置服务(pfcs)650。服务器平台的prot 602可以利用片上存储器用于其自身的安全引导,并且使用用于板管理控制器(bmc)的初始自举(bootstrap)固件映像来向prot 602提供到数据中心管理网络的网络接口。使用网络或结构,prot 602可以从pfcs 650获得固件。在一些情况下,通过在引导或其他原因或触发(例如,定时器到期)时更新固件,可以避免在制造商和客户之间的传输期间对存储固件的只读存储器(rom)或其他存储器设备的攻击。例如,通过使用prot 602向pfcs 650请求设备固件,可以实现永久拒绝服务(pdos)篡改固件的可能性降低。
61.prot 602可以包括密码身份(例如,由平台所有者或管理员签署的唯一x.509证书链)和平台配置的清单。在平台启动期间,prot 602可将密码身份传送到pfcs 650,以便向pfcs 650认证平台(及其自身),同时还认证pfcs 650(使用提供的pfcs凭证)并建立受保护会话。如果在会话期间要发送任何秘密,则可以使用会话的机密性。
62.当prot 602向pfcs 650认证平台时,prot 602可以呈递平台配置的清单,其允许pfcs 650通过使用由pfcs 650管理的固件模板来组装定制的固件分组。固件模板可以定义诸如可执行二进制文件、配置参数、升级/降级策略(例如,包括系统或设备重置要求)、外部
组件依赖性以及安全或执行流策略(例如,基于重置/功率流来排除区域)之类的组件。当prot 602与pfcs 650建立安全会话时或之后,prot 602可接收预先组装的固件包,该固件分组将通过平台启动的剩余步骤而被使用。固件包可以包括诸如运行时bmc固件、服务器平台服务(sps)固件、管理引擎(me)固件、bios固件映像、uefi或引导加载器之类的组件,以及用于包括电力供应单元(psu)、电压调节器(例如,digvr)和可编程背板(例如,热插拔背板固件(hsbp))的各种平台组件的固件配置。如果prot 602执行平台上的附加卡的带外发现,则prot 602可请求与pfcs 650库中的更新包相关的任何更新包。
63.在运行时,prot 602可以在受保护的存储器区域中维护高速缓存的固件代码和配置,并且执行主动过滤以实施固件执行流策略并防止潜在的恶意命令,诸如对固件的活动/静态区域的擦除/写入。pfcs 650可对任何高速缓存的代码和配置发起完整性和配置校验。pfcs 650还可以在由平台管理员触发的情况下在任何时间使恢复过程无效并强制其加载固件。还应当注意,在任何时刻,prot 602可以发起与pfcs 650的完整性和配置校验,以检索最新的固件。例如,固件检索的触发可以是在功率状态转变时,例如热重置、在主动过滤期间发现的可疑活动、或定时器期满。
64.pfcs 650可以存储和维护用于准备平台特定映像的固件和配置模板。数据中心管理可以创建策略和配置组,并且根据策略和对pfcs 650的平台认证的结果,将它们选择性地应用于平台,因此简化和自动化了配置过程。数据中心管理还可以准备用于特定平台的特定配置,以便例如执行像调试之类的特殊任务等。
65.在一些示例中,prot 602可以在诸如网络接口、交换机或cpu的任何设备中使用。例如,网络接口、bmc或其它设备可以独立于其主机系统使用prot 602来从pfcs 650中检索固件。在启动或重启时,网络接口可以使用存储在rom中的固件代码与prot 602通信,并以这里描述的方式从易失性存储器中检索固件以运行。网络接口接下来可以检索bmc、然后主机系统中的可管理性引擎(me)和其它设备的固件。网络接口或bmc对于另一设备可以表现为虚拟串行外围接口(spi)固件设备,从该固件设备检索各种设备的固件,并且该设备可以从网络接口或bmc的存储器检索固件。
66.图7a-7d描绘了在固件更新期间的系统状态和交互的一个示例。在图7a的场景中,在平台加电时,潜在地只有平台信任根(prot)702利用内部配置加电。prot 702可以应用bmc 706的基板管理控制器(bmc)自举映像。芯片组704可以控制数据路径,并支持与cpu 708-0和708-1中的任何一个结合使用的功能,诸如对系统时钟、柔性显示接口(fdi)和直接媒体接口(dmi)的访问。在一些示例中,当芯片组704支持具有集成图形的处理器时,使用fdi。这样,可以在芯片组704与cpu 708-0和708-1中的任何一个之间分配i/o功能。芯片组704可以包括平台控制器中枢(pch)。芯片组704可以包括存储器控制器、pcie通道或其它输入/输出控制器、以及英特尔管理引擎(me)或其它远程控制设备。
67.在图7b的场景中,prot 702对bmc 706加电,并且向bmc 706提供初始自举映像。初始自举映像可向prot 702提供到管理网络的网络连接性,以与平台固件配置服务710通信。prot 702可以将平台证书传送到平台固件配置服务710。例如,bmc 706可以是测量系统或设备温度、电力供应电压、系统湿度、风扇速度、操作系统(os)功能或通信参数的设备。在一些示例中,bmc 706可被信任来检索用于包括prot 702或cpu 708-0到708-1的其它设备的固件。
68.在图7c的场景中,平台固件配置服务710尝试基于接收的证书来认证prot 702。如果证书或基于证书的计算(例如,散列)与期望的证书或值匹配,则平台固件配置服务710组装以下各项中的一个或多个的完整固件(fw)映像:bmc、cpu、cpu插槽(例如,csme、认证代码模块(acm)等)以及具有预配置设置的任何其它可编程设备。固件映像可以包括诸如运行时bmc固件、sps/me和bios固件映像的组件,以及用于包括电力供应单元(psu)、电压调节器(digvr)和可编程背板(hsbp)的各种平台组件的固件/配置。平台固件配置服务710可以使用预先存储的固件模板来基于平台700的硬件配置创建固件映像(ifwi)。固件模板可以定义诸如可执行二进制文件、配置参数、升级/降级策略(包括重置要求)、外部成分依赖性和安全/执行流策略(例如,基于重置/功率流的排除区域)之类的组件。平台固件配置服务710可将固件映像传送到平台700。prot 702可以使用唯一硬件id、计算的散列或其它安全认证方法来认证固件映像。如果固件映像被认证或验证,prot 702就将固件映像加载到固件存储器(例如加密的易失性存储器)中。prot 702可以使用认证的固件映像重新配置bmc 706,并允许cpu 708-0或708-1加电和使用固件来引导。例如,可以从平台固件配置服务710接收固件。
69.在图7d的场景中,在prot 702和平台固件配置服务710之间发生用于证明和更新目的通信。在运行时间期间,平台固件配置服务710可将固件更新或其它软件发送到prot 702或平台700中的其它设备(例如,cpu 708-0或708-1)以供执行。在另一重引导或其它触发或条件下,平台固件配置服务710可将当前固件版本或其它软件发送到prot 702或平台700中的其它设备(例如,cpu 708-0或708-1)以供执行。
70.图8a-8c描绘了用于跨组件通信和活动以检索固件或其它软件的一个过程。图8a描绘了初始平台加电或重引导过程的一个示例。该过程可以由要执行固件的设备来执行。设备可以在启动、重启、重引导或在任何时间或任何配置的触发时请求固件。在802,平台信任根执行加电和自配置,以准备设备的固件的配置。在804,平台信任根建立初始设备自举,以便为设备提供初始固件以在引导时使用。在830,设备使用初始固件来引导。在一些示例中,初始固件使设备从平台信任根请求固件。在一些示例中,设备是bmc,但是任何设备可以被配置成使用本文描述的过程。例如,该设备可以包括以下中的一个或多个:网络接口、bmc、cpu、任何外围设备等等。连接到同一平台的多个设备可以使用过程来在相同或重叠的时间或不同的时间获得固件。在832,设备建立与平台信任根的网络通信以请求固件。该请求可以使得平台信任根向远程平台固件配置服务(pfcs)发送通信,以发起对供设备执行的固件的检索。通信可以作为一个或多个分组经由网络或总线或互连来发送。在806,平台信任根联系pfcs以请求生成用于设备的固件配置。
71.图8b描绘了在平台信任根和pfcs之间的相互认证和安全会话建立的一个示例。在840,pfcs可以建立以与平台信任根进行通信。在808,平台信任根可以触发与pfcs的相互认证,并且在810,平台信任根可以向远程pfcs发送标识平台信任根的证书。该证书可以与x.509或诸如简单产品密钥基础设施(spki)或相当好的隐私(pgp)等其它标准兼容。x.509证书可以包括使用x.509公共密钥基础设施(pki)标准来验证公共密钥属于用户的数字证书。
72.在842,远程pfcs可认证从平台信任根接收的平台证书。例如,认证可以包括验证证书是否与预期证书匹配。在844,远程pfcs可以向平台信任根发送标识pfcs的证书。在
846,远程pfcs可以在存在相互认证的情况下准备用于平台的固件分组。
73.在812,平台信任根可认证从远程pfcs接收的证书。例如,认证可以包括验证证书是否与预期证书匹配。如果认证通过,则过程继续到814。然而,如果认证失败(未示出),则至少在该过程的这一迭代中,该过程可以终止并且设备不从平台信任根接收固件。可以警告管理员以采取动作并识别访问固件的潜在恶意行为或更新用于认证的证书。
74.在814,平台信任根触发与远程pfcs的相互密钥交换,由此在816和848,远程pfcs和平台信任根执行相互密钥交换。远程pfcs和平台信任根可以执行与平台信任根的密钥交换,以便在一些密钥可能过期或者可能被损坏时更新密钥。例如,可以使用椭圆曲线diffie-hellman(ecdh)密钥协商协议,其中,各方具有椭圆曲线公钥-私钥对来建立共享的秘密。可以使用其它方案,诸如三重数据加密标准(3des)、高级加密标准(aes)、数字签名算法(dsa)、rivest-shamir-adleman(rsa)算法、椭圆曲线数字签名算法(ecdsa)或其它。
75.如果密钥交换既通过远程pfcs又通过平台信任根,则过程继续到850。然而,如果认证失败(未示出),则至少在该过程的这一迭代中,该过程可以终止并且设备不从平台信任根接收固件。如在验证证书失败的情况下,可以警告管理员以采取行动并识别访问固件的潜在的恶意行为或更新用于认证的密钥。
76.参考图8c,在850,远程平台使用安全会话向平台信任根发送潜在定制的固件包。例如,可以使用共享密钥或通过使用安全套接字层(ssl)或传输层安全(tls)或其他安全通信协议来实现安全会话。
77.在818,平台信任根接收并使用共享密钥认证固件包。如果固件包被认证,则在820,平台信任根向设备提供固件。在834,设备利用固件来引导。在836,与设备相关联的cpu和芯片组复合体可以以完整固件来开始。
78.图9描绘了一个系统。该系统可以使用本文描述的实施例来执行固件加载或更新。系统900包括处理器910,其提供用于系统900的指令的处理、操作管理和执行。处理器910可以包括任何类型的微处理器、中央处理单元(cpu)、图形处理单元(gpu)、处理核、或为系统900提供处理的其他处理硬件、或处理器的组合。处理器910控制系统900的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(dsp)、可编程控制器、专用集成电路(asic)、可编程逻辑设备(pld)等,或这些设备的组合。
79.在一个示例中,系统900包括耦合到处理器910的接口912,其可以表示用于需要更高带宽连接的系统组件的更高速接口或高吞吐量接口,所述系统组件诸如存储器子系统920或图形接口组件940或加速器942。接口912表示接口电路,其可以是独立组件或集成到处理器管芯上。在存在的情况下,图形接口940与图形组件对接,以便向系统900的用户提供可视显示。在一个示例中,图形接口940可以驱动向用户提供输出的高清晰度(hd)显示器。高清晰度可以指具有大约100 ppi(每英寸的像素)或更大的像素密度的显示器,并且可以包括诸如全hd(例如1080p)、视网膜显示器、4k(超高清或uhd)或其它的格式。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口940基于存储在存储器930中的数据或基于由处理器910执行的操作或两者来生成显示。在一个示例中,图形接口940基于存储在存储器930中的数据或基于由处理器910执行的操作或两者来生成显示。
80.加速器942可以是可编程或固定功能卸载引擎,其可以由处理器910访问或使用。例如,加速器942中的加速器可以提供压缩(dc)能力、诸如公共密钥加密(pke)的密码服务、
密码、散列/认证能力、解密或其他能力或服务。在一些实施例中,作为补充或替选,加速器942中的加速器可以提供如本文所述的现场选择控制器能力。在一些情况下,加速器942可以集成到cpu中或通过各种设备(例如,到主板或电路板的连接器,其包括cpu并提供与cpu的电接口)连接到cpu。例如,加速器942可以包括单核或多核处理器、图形处理单元、逻辑执行单元、单级或多级高速缓存、可用于独立执行程序或线程的功能单元、专用集成电路(asic)、神经网络处理器(nnp)、可编程控制逻辑、以及诸如现场可编程门阵列(fpga)的可编程处理元件。加速器942可以提供多个神经网络、cpu、处理器核、通用图形处理单元,或者可以使图形处理单元可供人工智能(ai)或机器学习(ml)模型使用。例如,ai模型可以使用或包括强化学习方案、q学习方案、深度q学习或异步优势动作者-评论家(a3c)、组合神经网络、循环组合神经网络或其他ai或ml模型中的任何一个或其组合。可以使多个神经网络、处理器核或图形处理单元可用于由ai或ml模型使用。
81.存储器子系统920表示系统900的主存储器,并且提供用于要由处理器910执行的代码或要在执行例程时使用的数据值的存储。存储器子系统920可以包括一个或多个存储器设备930,诸如只读存储器(rom)、闪速存储器、诸如dram的一种或多种随机存取存储器(ram)、或其他存储器设备、或这样的设备的组合。存储器930存储和托管操作系统(os)932等,以提供用于执行系统900中的指令的软件平台。另外,应用934可以从存储器930在os 932的软件平台上执行。应用934表示具有其自己的操作逻辑以执行一个或多个功能的程序。过程936表示向os 932或一个或多个应用934或其组合提供辅助功能的代理或例程。os 932、应用934和过程936提供软件逻辑以提供系统900的功能。在一个示例中,存储器子系统920包括存储器控制器922,其是用于生成命令并将命令发布到存储器930的存储器控制器。应当理解,存储器控制器922可以是处理器910的物理部分或接口912的物理部分。例如,存储器控制器922可以是集成到具有处理器910的电路上的集成存储器控制器。
82.虽然没有具体示出,但是应当理解,系统900可以包括设备之间的一个或多个总线或总线系统,诸如存储器总线、图形总线、接口总线或其他。总线或其它信号线可以将组件通信地或电气地耦合在一起,或者既通信地又电气地耦合组件。总线可以包括物理通信线、点对点连接、桥、适配器、控制器或其他电路或组合。总线可以包括例如系统总线、外围组件互连(pci)总线、超传输或工业标准架构(isa)总线、小型计算机系统接口(scsi)总线、通用串行总线(usb)或电气和电子工程师协会(ieee)标准1394总线(火线)中的一个或多个。
83.在一个示例中,系统900包括接口914,其可以耦合到接口912。在一个示例中,接口914表示接口电路,其可以包括独立组件和集成电路。在一个示例中,多个用户接口组件或外围组件或两者耦合到接口914。网络接口950向系统900提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口950可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、usb(通用串行总线)或其它基于有线或无线标准的或专有的接口。网络接口950可以将数据发送到在同一数据中心或机架中的设备或远程设备,这可以包括发送存储在存储器中的数据。网络接口950可以从远程设备接收数据,这可以包括将所接收的数据存储到存储器中。各种实施例可以结合网络接口950、处理器910和存储器子系统920使用。
84.在一个示例中,系统900包括一个或多个输入/输出(i/o)接口960。i/o接口960可以包括一个或多个接口组件,用户通过所述接口组件与系统900交互(例如,音频、字母数
字、触觉/触摸或其他接口)。外围接口970可以包括上面没有具体提到的任何硬件接口。外围设备通常是指依赖地连接到系统900的设备。依赖连接是系统900提供在其上执行操作并且用户与其交互的软件平台或硬件平台或两者的连接。
85.在一个示例中,系统900包括以非易失性方式存储数据的存储子系统980。在一个示例中,在某些系统实施方式中,存储装置980的至少某些组件可以与存储器子系统920的组件重叠。存储子系统980包括(多个)存储设备984,其可以是或包括用于以非易失性方式存储大量数据的任何常规介质,诸如一个或多个基于磁、固态或光的盘或其组合。存储装置984以持久状态保持代码或指令和数据986(例如,尽管系统900的电力中断,值仍被保留)。存储装置984一般可被认为是“存储器”,尽管存储器930通常是向处理器910提供指令的执行或操作存储器。尽管存储装置984是非易失性的,但是存储器930也可以包括易失性存储器(例如,如果系统900的电力中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统980包括与存储装置984对接的控制器982。在一个示例中,控制器982是接口914或处理器910的物理部分,或者可以包括处理器910和接口914二者中的电路或逻辑。
86.易失性存储器是如果设备的电力中断则其状态(以及因此存储在其中的数据)不确定的存储器。动态易失性存储器需要刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括dram (动态随机存取存储器),或一些变体,诸如同步dram(sdram)。易失性存储器的另一个示例包括高速缓存或静态随机存取存储器(sram)。如本文所述的存储器子系统可与多种存储器技术兼容,诸如ddr3(双数据速率版本3,由jedec(联合电子设备工程委员会)在june 27,2007年的原始公布)。ddr4(ddr版本4,jedec在2012年九月公布的初始规范)、ddr4e(ddr版本4)、lpddr3(低功率ddr版本3、jesd209-3b、jedec在2013年8月公布)、lpddr4(lpddr版本4、jedec在2014年8月原始公布的jesd209-4)、wio2(宽输入/输出版本2、jedec在2014年8月原始公布的jesd229-2、hbm(高带宽存储器,jedec在2013年10月原始公布的jesd325)、lpddr5(jedec目前正在讨论)、hbm2(hbm版本2),jedec目前正在讨论,或者其它或存储器技术的组合,以及基于这些规范的派生或扩展的技术。
87.非易失性存储器(nvm)设备是即使设备的电力中断其状态也是确定的存储器。在一个实施例中,nvm设备可以包括块可寻址存储器设备,诸如nand技术,或者更具体地,多阈值级nand闪速存储器(例如,单级单元(“slc”)、多级单元(“mlc”)、四级单元(“qlc”)、三级单元(“tlc”)或一些其他nand)。nvm设备还可以包括字节可寻址就地写入(write-in-place)三维交叉点存储器设备,或其他字节可寻址就地写入nvm设备(也称为持久性存储器),诸如单级或多级相变存储器(pcm)或具有开关的相变存储器(pcms)、intel
®
optane

存储器、使用硫族化物的相变材料(例如,硫族化物玻璃)的nvm设备、包括金属氧化物基、氧空位基的电阻性存储器和导电桥随机存取存储器(cb-ram)、纳米线存储器、铁电随机存取存储器(feram,fram)、采用忆阻器技术的磁阻随机存取存储器(mram)、自旋转移力矩(stt)-mram、基于自旋电子磁性结存储器的设备、基于磁隧道结(mtj)的设备、基于dw(壁畴)和sot(自旋轨道转移)的设备、基于晶闸管的存储器设备、或以上任何的组合、或其他存储器。
88.电源(未示出)向系统900的组件提供电力。更具体地说,电源通常与系统900中的一个或多个电力供应对接,以便向系统900的组件提供电力。在一个示例中,电力供应包括ac到dc(交流到直流)适配器以插入到壁装插座中。这种ac电力可以是可再生能源(例如太
阳能)电源。在一个示例中,电源包括dc电源,诸如外部ac到dc转换器。在一个示例中,电源或电力供应包括无线充电硬件以经由接近充电场进行充电。在一个示例中,电源可以包括内部电池、交流供应、基于运动的电力供应、太阳能电力供应或燃料电池源。
89.在一个示例中,系统900可以使用处理器、存储器、存储装置、网络接口和其他组件的互连计算雪橇式服务器(sled)来实现。也可以使用高速互连,诸如pcie、以太网或光互连(或其组合)。
90.在一个示例中,系统900可以使用处理器、存储器、存储装置、网络接口和其他组件的互连计算雪橇式服务器来实现。也可以使用高速互连,诸如:以太网(ieee 802.3)、远程直接存储器访问(rdma)、infiniband、因特网广域rdma协议(iwarp)、用户数据报协议(udp)、传输控制协议(tcp)、用户数据报协议(udp)、快速用户数据报协议因特网连接(quic)、融合以太网上的rdma(roce)、外围组件互连高速(pcie)、英特尔快速路径互连(qpi)、英特尔超路径互连(upi)、英特尔片上系统结构(iosf)、omnipath、计算高速链路(cxl)、超传输端口、高速结构、nvlink、高级微控制器总线架构(amba)互连、opencapi、gen-z、加速器高速缓存一致互连(ccix)、3gpp长期演进(lte)(4g)、3gpp 5g及其变型。可以使用诸如结构上的nvme(nvme-of)或nvme之类的协议将数据复制或存储到虚拟化的存储节点上。
91.本文的实施例可以在各种类型的计算、智能电话、平板电脑、个人计算机和联网设备中实现,联网设备诸如交换机、路由器、机架和刀片服务器,诸如在数据中心和/或服务器场环境中采用的那些。在数据中心和服务器场中使用的服务器包括阵列服务器配置,诸如基于机架的服务器或刀片服务器。这些服务器经由各种网络设备通信互连,诸如将服务器集合划分为局域网(lan),在lan之间具有适当的交换和路由设施,以形成专用内联网。例如,云托管设施通常可以采用具有多个服务器的大型数据中心。刀片服务器包括被配置成执行服务器类型功能的单独的计算平台,即“卡上服务器”。因此,每个刀片服务器包括常规服务器所共有的组件,包括主印刷电路板(主板),其提供内部布线(例如,总线)以用于耦合适当的集成电路(ic)和安装到板的其它组件。
92.图10描绘了可以使用实施例或由实施例使用的网络接口。例如,各种实施例可以使用网络接口来访问固件或更新固件。网络接口1000可以包括收发器1002、处理器1004、发送队列1006、接收队列1008、存储器1010、总线接口1012和dma引擎1026。收发器1002能够依照适用的协议(例如ieee 802.3中描述的以太网)接收和发送分组,尽管也可以使用其它协议。收发器1002可以经由网络介质(未示出)从网络接收分组和向网络发送分组。收发器1002可以包括物理层(phy)电路1014和介质访问控制(mac)电路1016。phy电路1014可以包括编码和解码电路(未示出),以根据适用的物理层规范或标准来对数据分组进行编码和解码。mac电路1016可以被配置成将待发送的数据组装成分组,所述分组包括目的地和源地址以及网络控制信息和检错散列值。mac电路1016可以被配置成通过验证数据完整性、去除前导码和填充符、以及提供分组内容以供较高层处理,来处理接收到的分组的mac报头。
93.处理器1004可以是以下各项的任何组合:处理器、核、图形处理单元(gpu)、现场可编程门阵列(fpga)、专用集成电路(asic)或允许对网络接口1000进行编程的其他可编程硬件设备。例如,处理器1004可以提供中间队列的分配或解除分配。例如,“智能网络接口”可以使用处理器1004在网络接口中提供分组处理能力。
94.分组分配器1024可以使用这里描述的时隙分配或rss来提供所接收的分组的分发以供多个cpu或核来进行处理。当分组分配器1024使用rss时,分组分配器1024可以基于接收到的分组的内容来计算散列或做出另一决定,以确定由哪个cpu或核要处理分组。
95.中断合并1022可以执行中断调节,由此网络接口中断合并1022在生成中断给主机系统以处理(多个)接收到的分组之前等待多个分组到达,或者等待超时期满。接收分段合并(rsc)可以由网络接口1000来执行,由此将传入分组的部分组合成分组的分段。网络接口1000将该合并的分组提供给应用。
96.直接存储器访问(dma)引擎1026可将分组报头、分组有效载荷和/或描述符直接从主机存储器复制到网络接口,或反之亦然,而不是将分组复制到主机处的中间缓存器,然后使用另一复制操作从中间缓存器复制到目的地缓存器。
97.存储器1010可以是任何类型的易失性或非易失性存储器设备,并且可以存储用于对网络接口1000进行编程的任何队列或指令。发送队列1006可以包括用于由网络接口发送的数据或对数据的引用。接收队列1008可以包括由网络接口从网络接收的数据或对数据的引用。描述符队列1020可以包括引用发送队列1006或接收队列1008中的数据或分组的描述符。总线接口1012可以提供与主机设备(未示出)的接口。例如,总线接口1012可与外围连接外围组件互连(pci)、快速pci、pci-x、串行ata(sata)和/或通用串行总线(usb)兼容接口兼容(但也可使用其它互连标准)。
98.图11描绘了环境1100包括多个计算机架1102,一些包括机架顶部(tor)交换机1104、pod管理器1106和多个池化系统抽屉(drawer)。各种实施例可以用于根据本文描述的实施例来更新环境1100的组件的固件要素。通常,池化系统抽屉可以包括池化计算抽屉和池化存储抽屉。可选地,池化系统抽屉还可以包括池化存储器抽屉和池化输入/输出(i/o)抽屉。在所示的实施例中,池化系统抽屉包括intel
®
xeon
®
池化计算机抽屉1108和intel
®
atom
™ꢀ
池化计算机抽屉1110、池化存储抽屉1112、池化存储器抽屉1114和池化i/o抽屉1116。一些池化系统抽屉经由高速链路1118连接到tor交换机1104,诸如40吉比特/秒(gb/s)或100gb/s以太网链路或100+gb/s硅光子(siph)光链路。在一个实施例中,高速链路1118包括800 gb/s的siph光链路。
99.多个计算机架1102可以通过它们的tor交换机1104互连(例如,到pod级交换机或数据中心交换机),如通过到网络1120的连接所示出的。在一些实施例中,计算机架1102的组经由(多个)pod管理器1106作为单独的pod来管理。在一个实施例中,使用单个pod管理器来管理pod中的机架。替代地,分布式pod管理器可以用于pod管理操作。
100.环境1100还包括用于管理环境的各个方面的管理接口1122。这包括管理机架配置,其中,对应的参数被存储为机架配置数据1124。
101.在一些示例中,本文描述的网络接口和其他实施例可以结合基站(例如,3g、4g、5g等)、宏基站(例如,5g网络)、微微站(例如,兼容ieee 802.11的接入点)、纳米站(例如,用于点到多点(ptmp)应用)、户内数据中心、户外数据中心、边缘网络元件、雾网络元件和/或混合数据中心(例如,使用虚拟化、云和软件定义的网络来跨物理数据中心和分布式多云环境递送应用工作负荷的数据中心)来使用。
102.可以使用硬件元件、软件元件或两者的组合来实现各种实施例。在一些示例中,硬件元件可以包括设备、组件、处理器、微处理器、电路元件(例如,晶体管、电阻器、电容器、电
感器等)、集成电路、asic、pld、dsp、fpga、存储器单元、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等。在一些示例中,软件元件可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、api、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现示例可以根据任何数量的因素而变化,诸如期望的计算速率、功率水平、耐热性、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其他设计或性能约束,如给定实现方式所期望的。处理器可以是硬件状态机、数字控制逻辑、中央处理单元或任何硬件、固件和/或软件元件的一个或多个的组合。
103.一些示例可以使用或作为制品或至少一个计算机可读介质来实现。计算机可读介质可以包括用于存储逻辑的非暂时性存储介质。在一些示例中,非暂时性存储介质可以包括能够存储电子数据的一种或多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写或可重写存储器等。在一些示例中,逻辑可以包括各种软件元件,诸如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、api、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。
104.根据一些示例,计算机可读介质可以包括非暂时性存储介质,以存储或维护指令,所述指令在由机器、计算设备或系统执行时,使得所述机器、计算设备或系统执行根据所描述的示例的方法和/或操作。指令可以包括任何合适类型的代码,诸如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。指令可以根据预定义的计算机语言、方式或语法来实现,以用于指示机器、计算设备或系统执行特定功能。指令可以使用任何合适的高级、低级、面向对象、可视、编译和/或解释编程语言来实现。
105.至少一个示例的一个或多个方面可以由存储在至少一个机器可读介质上的代表性指令来实现,该代表性指令表示处理器内的各种逻辑,当由机器、计算设备或系统读取时,该代表性指令使机器、计算设备或系统构造逻辑以执行本文描述的技术。被称为“ip核”的这种表示可以存储在有形的机器可读介质上,并且可以提供给各种客户或制造设施以加载到实际制造逻辑或处理器的构造机器中。
106.短语“一个示例”或“示例”的出现不一定全部指代相同的示例或实施例。本文描述的任何方面可以与本文描述的任何其他方面或类似方面组合,而不管这些方面是否是参考相同的附图或要素来描述的。附图中所描绘的功能块的划分、省略或包括不能推断出用于实现这些功能的硬件组件、电路、软件和/或元件将必须被划分、省略或包括在实施例中。
107.一些示例可以使用表述“耦合”和“连接”以及它们的派生词来描述。这些术语不一定意图彼此作为同义词。例如,使用术语“连接”和/或“耦合”的描述可以提示两个或更多元件彼此直接物理或电接触。然而,术语“耦合”也可以意味着两个或更多元件可以彼此不直接接触,但是仍然彼此协作或交互。
108.术语“第一”、“第二”等在此不表示任何顺序、数量或重要性,而是用于将一个元件与另一个元件区分开。术语“一”和“一个”在此不表示数量的限制,而是表示存在至少一个所引用的项目。这里参考信号使用的术语“断言”表示信号的状态,其中,信号是活动的,并
且可以通过向信号施加逻辑0或逻辑1中的任何逻辑电平来实现。术语“跟随”或“之后”可以指紧随或跟随在一些其他事件之后。根据一些替选实施例,也可以执行其它步骤序列。此外,根据特定的应用,可以添加或去除附加的步骤。可以使用改变的任何组合,并且受益于本公开的本领域普通技术人员应当理解其许多变化、修改和替选实施例。
109.除非另外具体说明,否则诸如短语“x、y或z中的至少一个”的选言性语言在如一般使用的上下文中理解为表示项、术语等可以是x、y或z或其任何组合(例如,x、y和/或z)。因此,这种选言性语言通常不意图也不应当暗示某些实施例需要x中的至少一个、y中的至少一个或z中的至少一个各自存在。另外,除非另有明确说明,诸如短语“x、y和z中的至少一个”的合取性语言也应当被理解为表示x、y、z或其任何组合,包括“x、y和/或z”。
110.下面提供了本文公开的设备、系统和方法的说明性示例。设备、系统和方法的实施例可以包括以下描述的示例中的任何一个或多个以及任何组合。
111.示例1包括一种方法,包括:在网络接口处,在一个或多个分组中接收用于网络接口的固件更新。
112.示例2包括任何示例,并且包括认证固件更新并且基于固件更新的认证,准许网络接口的固件更新。
113.示例3包括任何示例,并且包括在网络接口处,在一个或多个分组中接收设备的固件更新,其中,设备包括以下中的一个或多个:板管理控制器(bmc)、中央处理单元(cpu)、存储控制器、存储器控制器、显示引擎、图形处理单元(gpu)、加速器设备或外围设备;认证设备的固件更新;以及,基于对设备的固件更新的认证,准许设备的固件更新。
114.示例4包括任何示例,并且包括在网络地址处将固件更新的状态指示为成功或不成功。
115.示例5包括任何示例,并且包括将固件更新存储在固件存储器区域中以供访问;选择第二接口,用于访问固件更新和到网络接口端口的连接;以及,从到网络接口端口的连接取消选择使用当前固件的第一接口。
116.示例6包括任何示例,并且包括在固件改变期间使用网络接口端口来维持通信。
117.示例7包括任何示例,其中,网络接口端口被分配用于可管理性通信,可管理性通信包括以下中的一个或多个:心跳分组、探测消息、遥测收集和各种保活分组、地址解析协议(arp)消息、确认(ack)或邻居请求。
118.示例8包括任何示例,并且包括发起从远程信任源传输固件更新;以及,将所接收的固件更新存储到易失性存储器设备中。
119.示例9包括任何示例,并且包括从易失性存储器设备访问固件的一个或多个设备,所述一个或多个设备包括:板管理控制器(bmc)、中央处理单元(cpu)、网络接口、存储控制器、存储器控制器、显示引擎、图形处理单元(gpu)、加速器设备或外围设备。
120.示例10包括任何示例,并且包括基于对易失性存储器设备去除电力而从易失性存储器设备擦除固件更新。
121.示例11包括任何示例,并且包括一种装置,该装置包括网络接口以从一个或多个分组接收用于网络接口的固件更新。
122.示例12包括任何示例,并且包括至少一个处理器,用于:认证固件更新,并且基于对固件更新的认证,准许网络接口的固件更新。
123.示例13包括任何示例,并且包括至少一个处理器,并且其中,在网络接口处,在一个或多个分组中接收设备的固件更新,其中,设备包括以下中的一个或多个:板管理控制器(bmc)、中央处理单元(cpu)、存储控制器、存储器控制器、显示引擎、图形处理单元(gpu)、加速器设备或外围设备;所述至少一个处理器用于认证所述设备的固件更新;以及,基于对设备的固件更新的认证,至少一个处理器准许设备的固件更新。
124.示例14包括任何示例,并且包括至少一个处理器,用于:在网络地址处将固件更新的状态指示为成功或不成功。
125.示例15包括任何示例,并且包括至少一个处理器,用于:将所述固件更新存储在固件存储器区域中以供访问;选择第二接口以用于访问固件更新和到网络接口端口的连接;以及,从到网络接口端口的连接中取消选择使用当前固件的第一接口。
126.示例16包括任何示例,其中,网络接口用于在固件改变期间使用网络接口端口来维持通信。
127.示例17包括任何示例,其中,端口被分配用于可管理性通信,可管理性通信包括以下中的一个或多个:心跳分组、探测消息、遥测收集和各种保活分组、地址解析协议(arp)消息、确认(ack)或邻居请求。
128.示例18包括任何示例,并且包括至少一个处理器,以:发起从远程可信源传输固件更新;以及,将所接收的固件更新存储到易失性存储器设备中。
129.示例19包括任何示例,其中,一个或多个设备将从易失性存储器设备访问固件,所述一个或多个设备包括:板管理控制器(bmc)、中央处理单元(cpu)、网络接口、存储控制器、存储器控制器、显示引擎、图形处理单元(gpu)、加速器设备或外围设备。
130.示例20包括任何示例,其中,基于对易失性存储器设备去除电力,从易失性存储器设备擦除固件更新。
131.示例21包括任何示例,并且包括服务器、数据中心或机架。

技术特征:
1.一种方法,包括:在网络接口处,在一个或多个分组中接收用于网络接口的固件更新。2.根据权利要求1所述的方法,包括:认证固件更新,以及基于对所述固件更新的认证,准许所述网络接口的固件更新。3.根据权利要求1所述的方法,包括:在所述网络接口处,在一个或多个分组中接收设备的固件更新,其中,所述设备包括以下各项中的一项或多项:板管理控制器(bmc)、中央处理单元(cpu)、存储控制器、存储器控制器、显示引擎、图形处理单元(gpu)、加速器设备或外围设备;认证设备的固件更新;以及基于对所述设备的固件更新的认证,准许所述设备的固件更新。4.根据权利要求1所述的方法,包括:在网络地址处将固件更新的状态指示为成功或不成功。5.根据权利要求1所述的方法,包括:将所述固件更新存储在固件存储器区域中以供访问;选择第二接口,用于访问固件更新和到网络接口端口的连接;以及从到所述网络接口端口的连接取消选择使用当前固件的第一接口。6.根据权利要求5所述的方法,包括在固件改变期间使用所述网络接口端口来维持通信。7.根据权利要求5所述的方法,其中,所述网络接口端口被分配用于可管理性通信,所述可管理性通信包括以下中的一个或多个:心跳分组、探测消息、遥测收集和各种保活分组、地址解析协议(arp)消息、确认(ack)或邻居请求。8.根据权利要求1所述的方法,包括:发起从远程可信源传输固件更新;以及将所接收的固件更新存储到易失性存储器设备中。9.根据权利要求8所述的方法,包括:一个或多个设备从所述易失性存储器设备访问固件,所述一个或多个设备包括:板管理控制器(bmc)、中央处理单元(cpu)、网络接口、存储控制器、存储器控制器、显示引擎、图形处理单元(gpu)、加速器设备或外围设备。10.根据权利要求8所述的方法,包括:基于对所述易失性存储器设备去除电力,从所述易失性存储器设备擦除所述固件更新。11.一种装置,包括:网络接口,用于从一个或多个分组接收用于所述网络接口的固件更新。12.根据权利要求11所述的装置,包括至少一个处理器,用于:认证固件更新,以及基于对所述固件更新的认证,准许所述网络接口的固件更新。13.根据权利要求11所述的装置,包括至少一个处理器,并且其中,在所述网络接口处,在一个或多个分组中接收设备的固件更新,其中,所述设备包括以
下各项中的一项或多项:板管理控制器(bmc)、中央处理单元(cpu)、存储控制器、存储器控制器、显示引擎、图形处理单元(gpu)、加速器设备或外围设备;所述至少一个处理器用于认证所述设备的固件更新;以及基于对所述设备的固件更新的认证,所述至少一个处理器准许所述设备的固件更新。14.根据权利要求11所述的装置,包括至少一个处理器,用于:在网络地址处将固件更新的状态指示为成功或不成功。15.根据权利要求11所述的装置,包括至少一个处理器,用于:将所述固件更新存储在固件存储器区域中以供访问;选择第二接口以用于访问固件更新和到网络接口端口的连接;以及从到网络接口端口的连接取消选择使用当前固件的第一接口。16.根据权利要求15所述的装置,其中,所述网络接口用于在固件改变期间使用所述网络接口端口来维持通信。17.根据权利要求15所述的装置,其中,所述端口被分配用于可管理性通信,所述可管理性通信包括以下中的一个或多个:心跳分组、探测消息、遥测收集和各种保活分组、地址解析协议(arp)消息、确认(ack)或邻居请求。18.根据权利要求11所述的装置,包括至少一个处理器,用于:发起从远程可信源传输固件更新;以及将所接收的固件更新存储到易失性存储器设备中。19.根据权利要求18所述的装置,其中,一个或多个设备要从所述易失性存储器设备访问固件,所述一个或多个设备包括:板管理控制器(bmc)、中央处理单元(cpu)、网络接口、存储控制器、存储器控制器、显示引擎、图形处理单元(gpu)、加速器设备或外围设备。20.根据权利要求19所述的装置,其中,基于对所述易失性存储器设备去除电力,从所述易失性存储器设备擦除所述固件更新。21.根据权利要求11所述的装置,包括服务器、数据中心或机架,其中在所述固件更新之后,所述服务器、数据中心或机架要使用网络接口发送或接收分组。

技术总结
本文描述的示例涉及从一个或多个分组接收固件更新的网络接口。在一些示例中,一个或多个分组指示固件更新的开始。在一些示例中,网络接口还可以执行对固件更新指示的开始的认证,并且基于对固件更新的认证,准许设备的固件更新。在一些示例中,该设备是以下中的一个或多个:板管理控制器(BMC)、中央处理单元(CPU)、网络接口、以太网控制器、存储控制器、存储器控制器、显示引擎、图形处理单元(GPU)、加速器设备或外围设备。在一些示例中,在一个或多个分组中接收固件更新指示符的结束。在一些示例中,在固件改变期间通过端口维持通信。在固件改变期间通过端口维持通信。在固件改变期间通过端口维持通信。


技术研发人员:K
受保护的技术使用者:英特尔公司
技术研发日:2020.12.11
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-4814.html

最新回复(0)