用于由智能网络接口控制器处理网络分组的技术的制作方法

文档序号:17049192发布日期:2019-03-05 19:51阅读:264来源:国知局
用于由智能网络接口控制器处理网络分组的技术的制作方法

本申请要求2016年11月29日提交的美国临时专利申请第62/427,268号和2017年8月30日提交的印度临时专利申请第201741030632号的权益。



背景技术:

在当前的分组交换网络体系结构中,数据以飞快的速度在计算设备和/或设备组件之间以网络分组的形式进行传输。在高级别,数据被打包成网络分组,该网络分组由一个网络计算设备的网络接口控制器(nic)发送并由另一个网络计算设备的nic接收。在接收时,通常对网络分组进行处理,分类等,并且通常将有效载荷写入存储器(例如,高速缓存、主存储器等)。在将网络分组数据写入存储器之后,接收nic接着可以向主机中央处理单元(cpu)通知该数据可用于进一步处理。然而,将网络分组数据的内容从nic写入存储器以供主机cpu处理可能是昂贵的并且会引入等待时间,或者以其他方式具有一些其他负面的性能影响。

附图说明

这里描述的概念在附图中通过示例而不是限制的方式示出。为了说明的简单和清楚,附图中示出的元件不一定按比例绘制。在认为合适的情况下,在附图中重复使用附图标记以指示相应或类似的元件。

图1是根据各种实施例在其中可以实现本文描述的一种或多种技术的数据中心的概念性概览的图;

图2是图1的数据中心的机架的逻辑配置的示例实施例的图;

图3是根据各种实施例在其中可以实现本文描述的一种或多种技术的另一数据中心的示例实施例的图;

图4是根据各种实施例在其中可以实现本文描述的一种或多种技术的数据中心的另一示例实施例的图;

图5是表示可以在图1、图3和图4的数据中心的各种托架(sled)之间建立的链路层连接的连接方案的图;

图6是根据一些实施例可以表示在图1-4中示出的任何特定一个机架的体系结构的机架体系结构的图;

图7是可以与图6的机架体系结构一起使用的托架的示例实施例的图;

图8是用于为以扩展能力为特征的托架提供支持的机架体系结构的示例实施例的图;

图9是根据图8的机架体系结构实现的机架的示例实施例的图;

图10是被设计用于与图9的机架结合使用的托架的示例实施例的图;

图11是根据各种实施例在其中可以实现本文描述的一种或多种技术的数据中心的示例实施例的图;

图12是用于通过计算设备的智能网络接口控制器(nic)处理网络分组的计算设备的至少一个实施例的简化框图;

图13是可以由图12的智能nic建立的环境的至少一个实施例的简化框图;

图14是可以由图12的智能nic建立的另一环境的至少一个实施例的简化框图;

图15是可以由图12-14的智能nic的网络接口执行的用于响应于接收到网络分组而生成事件消息的方法的至少一个实施例的简化流程图;

图16是可以由图13和图14的智能nic的分组处理器执行的用于响应于接收到事件消息而生成网络分组接收消息的方法的至少一个实施例的简化流程图;

图17是可以由图13和图14的智能nic的分组处理器执行的用于响应于接收到事件消息而将流与接收的网络分组相关联的方法的至少一个实施例的简化流程图;

图18是可以由智能nic的控制器设备执行的用于促进响应于已经接收到消息而执行的操作的方法的至少一个实施例的简化流程图;

图19是可以由图13和图14的智能nic的管芯上核心执行的用于识别与接收的网络分组相关联的主机接口的方法的至少一个实施例的简化流程图;以及

图20是可以由图13和图14的智能nic的网络接口执行的用于处理出站网络分组的至少一个实施例的简化通信流程图。

具体实施方式

虽然本公开的概念易于具有各种修改和替换形式,但是其具体实施例已经通过附图中的示例示出并且将在本文中进行详细描述。然而,应该理解的是,并不意在将本公开的概念限制于所公开的特定形式,而是相反,意在覆盖与本公开和所附权利要求一致的所有修改、等同物和替代方案。

说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以包括或可以不必包括该特定特征、结构或特性。而且,这些短语不一定指代同一实施例。此外,当结合实施例描述特定特征、结构或特性时,认为结合其他实施例实现这样的特征、结构或特性在本领域技术人员的知识范围内,无论该其他实施例是否被明确描述。另外,应当意识到,以“至少一个a,b和c”的形式包括在列表中的项目可以表示(a);(b);(c);(a和b);(a和c);(b和c);或(a,b和c)。类似地,以“a,b或c中的至少一个”形式列出的项目可以表示(a);(b);(c);(a和b);(a和c);(b和c);或(a,b和c)。

在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以实现为由暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储的指令,该指令可以由一个或多个处理器读取和执行。机器可读存储介质可以被体现为用于以机器可读形式存储或传输信息的任何存储设备、机制或其他物理结构(例如,易失性或非易失性存储器、介质盘或其他介质设备)。

在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不要求这样的特定布置和/或顺序。而是,在一些实施例中,这些特征可以按照与说明性附图中所示出的方式和/或顺序不同的方式和/或顺序来布置。另外,在特定图中包含结构或方法特征并不意味着暗示在所有实施例中都要求这样的特征,并且在一些实施例中,可以不包括这些特征或者可以将这些特征与其他特征进行组合。

图1示出了根据各种实施例的数据中心100的概念性概览,该数据中心100通常可以代表在其中/关于其可以实现本文描述的一种或多种技术的数据中心或其他类型的计算网络。如图1所示,数据中心100通常可以包含多个机架,每个机架可以容纳包括相应的一组物理资源的计算设备。在图1中描绘的特定非限制性示例中,数据中心100包含四个机架102a至102d,机架容纳包括各组物理资源(pcr)105a至105d的计算设备。根据该示例,数据中心100的一组集合物理资源106包括分布在机架102a至102d之间的各组物理资源105a至105d。物理资源106可以包括多种类型的资源,例如以处理器、协处理器、加速器、现场可编程门阵列(fpga)、存储器和存储装置为例。实施例不限于这些示例。

说明性数据中心100在许多方面不同于典型的数据中心。例如,在说明性实施例中,其上放置诸如cpu、存储器的组件和其他组件的电路板(“托架”)被设计用于提高热性能。特别地,在说明性实施例中,托架比典型的板要浅。换句话说,托架从前面到后面变短,冷却风扇位于后面。这减少了空气必须穿过板上组件的路径的长度。此外,托架上的组件与典型的电路板相比间隔得更远,并且这些组件被布置成减少或消除阴影(即,一个组件在另一组件的空气流动路径中)。在说明性实施例中,诸如处理器的处理组件位于托架的顶侧,而诸如dimm的附近存储器位于托架的底侧。由于该设计提供的增强的气流,组件可以在比典型系统更高的频率和功率水平下操作,从而提高性能。此外,托架被配置成与每个机架102a,102b,102c,102d中的电源和数据通信电缆盲匹配,这增强了它们被快速移除、升级、重新安装和/或更换的能力。类似地,位于托架上的各个组件(例如处理器、加速器、存储器和数据存储驱动器)被配置为由于它们彼此增加的间隔而容易进行升级。在说明性实施例中,组件还包括硬件证明特征以证明其真实性。

此外,在说明性实施例中,数据中心100利用支持包括以太网和omni-path在内的多个其他网络体系结构的单个网络体系结构(“结构”)。在说明性实施例中,托架经由光纤耦合到交换机,光纤比典型的双绞线布线(例如,类别5,类别5e,类别6等)提供更高的带宽和更低的延迟。由于高带宽、低延迟互连和网络体系结构,数据中心100可以在使用中汇集物理分散的资源,例如存储器、加速器(例如,图形加速器、fpga、asic等)以及数据存储驱动器,并且根据需要将它们提供给计算资源(例如,处理器),使计算资源能够访问池化资源,就好像它们是本地的一样。说明性数据中心100另外接收各种资源的利用率信息,基于过去的资源利用率预测不同类型的工作负荷的资源利用率,并基于该信息动态地重新分配资源。

数据中心100的机架102a,102b,102c,102d可以包括便于各种类型的维护任务的自动化的物理设计特征。例如,数据中心100可以使用被设计为机器人可访问并且接受和容纳机器人可操纵的资源托架的机架来实现。此外,在说明性实施例中,机架102a,102b,102c,102d包括集成电源,其接收比电源典型的电压更大的电压。增加的电压使电源能够为每个托架上的组件提供额外的电力,使该组件能够以高于典型频率的频率进行操作。

图2示出了数据中心100的机架202的示例性逻辑配置。如图2所示,机架202通常可以容纳多个托架,每个托架可以包括相应的一组物理资源。在图2中描绘的特定非限制性示例中,机架202容纳包括相应的物理资源集205-1至205-4的托架204-1至204-4,每组物理资源构成包括在机架202中的一组集合物理资源206的一部分。关于图1,如果机架202代表例如机架102a,则物理资源206可以对应于机架102a中包括的物理资源105a。在该示例的上下文中,物理资源105a因此可以由相应的物理资源集组成,包括包含在机架202的托架204-1至204-4中的物理存储资源205-1、物理加速器资源205-2、物理存储器资源205-3和物理计算资源205-4。实施例不限于该示例。每个托架可以包含各种类型的物理资源(例如,计算、存储器、加速器、存储装置)中的每一个的池。通过具有包括分散的资源的机器人可访问和机器人可操纵的托架,每种类型的资源能够彼此独立地并且以其自己的优化刷新率进行升级。

图3示出了根据各种实施例的数据中心300的示例,该数据中心300通常可以表示在其中/关于其可以实现本文描述的一种或多种技术的一个数据中心。在图3中描绘的特定非限制性示例中,数据中心300包括机架302-1至302-32。在各种实施例中,数据中心300的机架可以以限定和/或容纳各种访问路径的方式进行布置。例如,如图3所示,数据中心300的机架可以以限定和/或容纳访问路径311a,311b,311c和311d的方式进行布置。在一些实施例中,这种访问路径的存在通常使得自动维护设备(例如机器人维护设备)能够物理地访问容纳在数据中心300的各种机架中的计算设备并执行自动维护任务(例如,替换故障的托架,升级托架)。在各种实施例中,可以选择访问路径311a,311b,311c和311d的尺寸、机架302-1至302-32的尺寸和/或数据中心300的物理布局的一个或多个其他方面以促进这种自动化操作。实施例不限于这一上下文。

图4示出了根据各种实施例的数据中心400的示例,该数据中心400通常可以代表在其中/关于其可以实现本文描述的一种或多种技术的一个数据中心。如图4所示,数据中心400可以以光学结构412为特征。光学结构412通常可以包括光学信令介质(例如光学电缆)和光学交换基础设施的组合,数据中心400中的任何特定托架可以经由该组合向数据中心400中的每个其他托架发送信号(并且从其接收信号)。光学结构412提供给任何给定托架的信令连接可以包括到同一机架中的其他托架和到其他机架中的托架的连接。在图4中描绘的特定非限制性示例中,数据中心400包括四个机架402a至402d。机架402a至402d容纳各对托架404a-1和404a-2、404b-1和404b-2、404c-1和404c-2以及404d-1和404d-2。因此,在该示例中,数据中心400包括总共八个托架。经由光学结构412,每个这样的托架可以具有与数据中心400中的七个其他托架中的每一个的信令连接。例如,经由光学结构412,机架402a中的托架404a-1可以具有与机架402a中的托架404a-2的信令连接,以及与分布在数据中心400的其他机架402b、402c和402d之间的六个其他托架404b-1、404b-2、404c-1、404c-2、404d-1和404d-2的信令连接。实施例不限于该示例。

图5示出了连接方案500的概述,该连接方案500通常可以表示在一些实施例中可以在数据中心的各种托架之间建立的链路层连接,该数据中心例如是图1、图3和图4的示例数据中心100、300和400中的任何一个。可以使用以双模光学交换基础设施514为特征的光学结构来实现连接方案500。双模光学交换基础设施514通常可以包括能够经由相同的统一光学信令介质集根据多个链路层协议接收通信并且正确地切换这种通信的交换基础设施。在各种实施例中,可以使用一个或多个双模光学交换机515来实现双模光学交换基础设施514。在各种实施例中,双模光学交换机515通常可以包括高基数交换机。在一些实施例中,双模光学交换机515可以包括多层交换机,例如四层交换机。在各种实施例中,双模光学交换机515可以以集成硅光子学为特征,与传统交换设备相比,集成硅光子学能够以显著减少的延迟切换通信。在一些实施例中,双模光学交换机515可以包括叶脊架构形式的叶片交换机530,该叶脊架构另外包括一个或多个双模光学脊交换机520。

在各种实施例中,双模光学交换机可以能够经由光学结构的光学信令介质接收承载因特网协议(ip分组)的以太网协议通信和根据第二高性能计算(hpc)链路层协议(例如,英特尔的omni-patharchitecture,infiniband)的通信。如图5所反映的,对于具有到光学结构的光学信令连接的任何特定的一对托架504a和504b,连接方案500因此可以经由以太网链路和hpc链路二者提供对链路层连接的支持。因此,单个高带宽、低延迟交换结构可以支持以太网和hpc通信二者。实施例不限于该示例。

图6示出了根据一些实施例的机架体系结构600的总体概述,该机架体系结构600可以代表图1至图4中描绘的任何特定机架中的一个的体系结构。如图6所反映的,机架体系结构600可以通常以多个托架空间为特征,托架可以插入到托架空间中,并且每个托架空间经由机架访问区域601可以是机器人可访问的。在图6所示的特定非限制性示例中,机架体系结构600以五个托架空间603-1至603-5为特征。托架空间603-1至603-5具有相应的多功能连接器模块(mpcm)616-1至616-5。

图7示出了可以代表这种类型的托架的托架704的示例。如图7所示,托架704可以包括一组物理资源705以及mpcm716,该mpcm716被设计成当托架704被插入托架空间(例如图6中的任何托架空间603-1至603-5)时与配对mpcm耦合。托架704可以还以扩展连接器717为特征。扩展连接器717通常可以包括插座、插槽或其他类型的连接元件,其能够接受一种或多种类型的扩展模块,例如扩展托架718。通过与扩展托架718上的配对连接器耦合,扩展连接器717可以为物理资源705提供对驻留在扩展托架718上的补充计算资源705b的访问。实施例不限于此上下文。

图8示出了机架体系结构800的示例,该机架体系结构800可以表示可以被实现以便为以扩展能力为特征的托架,例如图7的托架704,提供支持的机架体系结构。在图8中描绘的特定非限制性示例中,机架体系结构800包括七个托架空间803-1至803-7,其以相应的mpcm816-1至816-7为特征。托架空间803-1至803-7包括相应的主区域803-1a至803-7a和相应的扩展区域803-1b至803-7b。关于每个这样的托架空间,当相应的mpcm与插入的托架的配对mpcm耦合时,主要区域通常可以构成物理地容纳插入的托架的托架空间的区域。在插入的托架配置有这种模块的情况下,扩展区域通常可以构成可以物理地容纳扩展模块的托架空间的区域,例如图7的扩展托架718。

图9示出了根据一些实施例的机架902的示例,其可以代表根据图8的机架体系结构800实现的机架。在图9中描绘的特定非限制性示例中,机架902以七个托架空间903-1至903-7为特征,其包括相应的主区域903-1a至903-7a和相应的扩展区域903-1b至903-7b。在各种实施例中,可以使用空气冷却系统来实现机架902中的温度控制。例如,如图9中所反映的,机架902可以以多个风扇919为特征,多个风扇919通常布置成在各种托架空间903-1至903-7内提供空气冷却。在一些实施例中,托架空间的高度大于传统的“1u”服务器高度。在这样的实施例中,与在传统机架配置中使用的风扇相比,风扇919通常可以包括相对慢的大直径冷却风扇。相对于以较高速度运行的较小直径的冷却风扇而言,以较低速度运行较大直径的冷却风扇可以延长风扇寿命,同时仍能提供相同的冷却量。托架比传统的机架尺寸物理上更浅。此外,组件被布置在每个托架上以减少热阴影(即,没有沿气流方向串行布置)。因此,更宽、更浅的托架允许设备性能的提高,因为由于改进的冷却,设备可以在更高的热封套(例如,250w)下操作(即,没有热阴影,设备之间的空间更多,用于较大散热器的更多空间等)。

mpcm916-1至916-7可以被配置为向插入的托架提供对由相应的功率模块920-1至920-7提供的功率的访问,每个功率模块可以从外部电源921汲取功率。在各种实施例中,外部电源921可以向机架902输送交流(ac)功率,并且功率模块920-1至920-7可以被配置为将这种ac功率转换为直流(dc)功率以供应到插入的托架。在一些实施例中,例如,功率模块920-1至920-7可以被配置为将277伏ac功率转换为12伏dc功率,以经由相应的mpcm916-1至916-7提供给插入的托架。实施例不限于该示例。

mpcm916-1至916-7还可以被布置为向插入的托架提供与双模光学交换基础设施914的光学信令连接,其可以与图5的双模光学交换基础设施514相同或相似。在各种实施例中,包含在mpcm916-1至916-7中的光学连接器可以被设计成与插入的托架的mpcm中包含的配对光学连接器耦合,以向这种托架提供经由各自长度的光缆922-1至922-7与双模光学交换基础设施914的光学信令连接。在一些实施例中,每个这样长度的光缆可以从其对应的mpcm延伸到在机架902的托架空间外部的光学互连线束923。在各种实施例中,光学互连线束923可以布置成穿过支架902的支撑柱或其他类型的承载元件。实施例不限于此上下文。由于插入的托架经由mpcm连接到光学交换基础设施,因此可以节省通常耗费于手动配置机架布线以适应新插入的托架的资源。

图10示出了根据一些实施例的托架1004的示例,其可以代表设计用于与图9的机架902结合使用的托架。托架1004可以以mpcm1016为特征,mpcm1016包括光学连接器1016a和功率连接器1016b,并且被设计成与将mpcm1016插入到托架空间中相结合而与托架空间的配对mpcm耦合。将mpcm1016与这样的配对mpcm耦合可以使功率连接器1016与配对mpcm中包括的功率连接器耦合。这通常使得托架1004的物理资源1005能够经由功率连接器1016和功率传输介质1024从外部源获取功率,功率传输介质1024将功率连接器1016导电地耦合到物理资源1005。

托架1004还可以包括双模光学网络接口电路1026。双模光学网络接口电路1026通常可以包括能够根据由图9的双模光学交换基础设施914支持的多个链路层协议中的每一个通过光学信令介质进行通信的电路。在一些实施例中,双模光学网络接口电路1026可以能够进行以太网协议通信和根据第二高性能协议的通信。在各种实施例中,双模光学网络接口电路1026可以包括一个或多个光学收发器模块1027,每个光学收发器模块1027可以能够在一个或多个光学信道中的每一个上发送和接收光学信号。实施例不限于此上下文。

将mpcm1016与给定机架中的托架空间的配对mpcm耦合可以使光学连接器1016a与包括在配对mpcm中的光学连接器耦合。这通常可以经由一组光学信道1025中的每一个在托架的光缆与双模光学网络接口电路1026之间建立光学连接。双模光学网络接口电路1026可以经由电信令介质1028与托架1004的物理资源1005进行通信。除了提供改进的冷却并且能够在相对较高的热封套(例如,250w)下操作的托架的尺寸和托架上组件的布置之外,如上面参考图9所述,在一些实施例中,托架还可以包括一个或多个附加特征以便于空气冷却,例如布置成耗散由物理资源1005生成的热量的热管和/或散热器。值得注意的是,尽管图10中描绘的示例性托架1004没有以扩展连接器为特征,但是根据一些实施例以托架1004的设计元件为特征的任何给定托架也可以以扩展连接器为特征。实施例不限于此上下文。

图11示出了根据各种实施例的数据中心1100的示例,该数据中心1100通常可以表示可以在其中/对于其实现本文描述的一种或多种技术的一个数据中心。如图11所反映的,物理基础设施管理框架1150a可以被实现为便于管理数据中心1100的物理基础设施1100a。在各种实施例中,物理基础设施管理框架1150a的一个功能可以是管理数据中心1100内的自动维护功能,例如使用机器人维护设备来为物理基础设施1100a内的计算设备提供服务。在一些实施例中,物理基础设施1100a可以以先进的遥测系统为特征,该遥测系统执行遥测报告,该遥测报告足够稳健以支持物理基础设施1100a的远程自动化管理。在各种实施例中,由这种先进的遥测系统提供的遥测信息可以支持诸如故障预测/预防能力和容量规划能力的特征。在一些实施例中,物理基础设施管理框架1150a还可以被配置为使用硬件证明技术来管理物理基础设施组件的认证。例如,机器人可以在安装之前通过分析从与要安装的每个组件相关联的射频识别(rfid)标签收集的信息来验证组件的真实性。实施例不限于此上下文。

如图11所示,数据中心1100的物理基础设施1100a可以包括光学结构1112,其可以包括双模光学交换基础设施1114。光学结构1112和双模光学交换基础设施1114可以分别与图4的光学结构412和图5的双模光学交换基础设施514相同或相似,并且可以在数据中心1100的托架之间提供高带宽、低延迟、多协议连接。如上所述,参考图1,在各种实施例中,这种连接的可用性可以使得分散和动态地汇集诸如加速器、存储器和存储装置的资源成为可能。在一些实施例中,例如,一个或多个汇集的加速器托架1130可以被包括在数据中心1100的物理基础设施1100a中,每个物理基础设施1100a可以包括加速器资源池,例如以协处理器和/或fpga为例,它们经由光学结构1112和双模光学交换基础设施1114对于其他托架是可全局访问的。

在另一个示例中,在各种实施例中,一个或多个汇集的存储托架1132可以被包括在数据中心1100的物理基础设施1100a中,每个物理基础设施1100a可以包括经由光学结构1112和双模光学交换基础设施1114对于其他托架可全局访问的存储资源池。在一些实施例中,这种汇集的存储托架1132可以包括固态存储设备池,例如固态驱动器(ssd)。在各种实施例中,一个或多个高性能处理托架1134可以被包括在数据中心1100的物理基础设施1100a中。在一些实施例中,高性能处理托架1134可以包括高性能处理器池以及增强空气冷却从而产生高达250w或更高的较高热封套的冷却特征。在各种实施例中,任何给定的高性能处理托架1134可以以扩展连接器1117为特征,该扩展连接器1117可以接受远端存储器扩展托架,使得对于该高性能处理托架1134本地可用的远端存储器与包含在托架上的处理器和附近存储器分散开来。在一些实施例中,这样的高性能处理托架1134可以使用包括低延迟ssd存储的扩展托架而配置有远端存储器。光学基础设施允许一个托架上的计算资源利用远程加速器/fpga、存储器和/或ssd资源,这些资源在位于同一机架或数据中心的任何其他机架上的托架上分散。远程资源可以远离上面参考图5描述的脊-叶网络体系结构的一个交换机跳跃或两个交换机跳跃。实施例不限于此上下文。

在各种实施例中,可以将一个或多个抽象层应用于物理基础设施1100a的物理资源,以便定义虚拟基础设施,例如软件定义的基础设施1100b。在一些实施例中,可以分配软件定义的基础设施1100b的虚拟计算资源1136以支持提供云服务1140。在各种实施例中,可以将特定的虚拟计算资源集1136分组以便以sdi服务1138的形式提供给云服务1140。云服务1140的示例可以包括但不限于软件即服务(saas)服务1142、平台即服务(paas)服务1144以及基础设施即服务(iaas)服务1146。

在一些实施例中,可以使用虚拟基础设施管理框架1150b来进行软件定义的基础设施1100b的管理。在各种实施例中,虚拟基础设施管理框架1150b可以被设计为结合管理虚拟计算资源1136和/或sdi服务1138到云服务1140的分配来实现工作负载指纹技术和/或机器学习技术。在一些实施例中,虚拟基础设施管理框架1150b可以结合执行这样的资源分配来使用/咨询遥测数据。在各种实施例中,可以实现应用/服务管理框架1150c以便为云服务1140提供qos管理能力。实施例不限于此上下文。

现在参考图12,用于通过智能网络接口控制器(nic)(例如,通信电路1212的nic1214)处理网络分组的说明性计算设备1200包括计算引擎1202、数据存储设备1210和通信电路1212以及其他组件。计算设备1200可以被体现为数据中心中的服务器(例如,单机服务器、机架服务器、刀片服务器等)、计算节点、存储节点、交换机(例如,分散的交换机、机架安装式交换机、单机交换机、完全管理型交换机、部分管理型交换机、全双工交换机和/或半双工通信模式启用交换机)、路由器和/或托架(例如,托架204、404、504、1004、1130、1132、1134中的一个),其中的任何一个可以被体现为一个或多个物理和/或虚拟设备。

在使用中,如下面进一步详细描述的,计算设备1200的智能nic1214从另一计算设备(未示出)接收网络分组(例如,在图13和14的智能nic1214的网络接口1302中的一个处)。其他计算设备可以被体现为任何类型的计算设备,诸如移动计算设备(例如,智能手机、膝上型/平板计算设备、可穿戴计算设备等)、桌面计算设备、物联网(iot)设备、服务器(例如,单机服务器,机架式服务器,刀片式服务器等)、交换机(例如,分散的交换机、机架安装式交换机、单机交换机、完全管理型交换机、部分管理型交换机、全双工交换机和/或半双工通信模式启用交换机)、路由器、网络设备、web设备、分布式计算系统、基于处理器的系统和/或多处理器系统,其中任何一个都可以被体现为一个或多个物理和/或虚拟设备。在说明性实施例中,源计算设备可以被体现为另一服务器托架,例如上述的托架204、404、504、1004、1130、1132、1134中的一个。

在接收到网络分组时,智能nic1214的网络接口(例如,图13和14的网络接口1302)被配置为将所接收的网络分组的内容(例如,报头、有效载荷、页脚等)以分布式方式写入智能nic1214的存储器结构(例如,图13和14的存储器结构1304)。因此,应当意识到,存储器结构1304包括多个存储器存储组件(未示出),这里被称为段,每个存储器存储组件可用于支持所接收的网络分组的内容的存储。网络接口1302还被配置为在将所接收的网络分组的内容写入到存储器结构之后,将事件消息发送到分组处理器,该分组处理器被说明性地示出为图13和14中的智能nic1214的灵活分组处理器(fxp)1306,指示已经接收到网络分组。

在已经接收到事件消息之后,fxp1306可以识别与所接收的网络分组相关联的分组流,或者确定是否要对所接收的网络分组执行一个或多个操作。为了识别关联或确定是否要执行操作,fxp1306被配置为从存储器结构1304中相关部分已被写入的相应存储单元读取网络分组的至少一部分。如果无法识别相关联的分组流(例如,所接收的分组是分组流的第一网络分组)或者fxp1306已经确定要对所接收的网络分组执行至少一个操作(例如,诸如可以基于与所接收的网络分组的类型相关联的使用模型来确定),fxp1306被配置为生成消息并将消息发送到智能nic1214的控制器设备,该控制器设备被示例性地示出为图13和14的裸机控制器1314。

在接收到消息时,裸机控制器1314被配置为基于所接收的消息的类型来识别要进行的后续动作。所生成的消息的类型可以取决于要采取的动作(例如,识别分组流,执行操作等)。例如,该消息可以是主机标识符请求消息,其可以由裸机控制器1314使用以指示将识别与所接收的网络分组相关联的分组流,使得可以由此确定相应的主机接口(例如,图13和14的主机接口1312中的一个)。在另一示例中,消息可以是由裸机控制器1314可用以指示要对接收的网络分组执行一个或多个操作(例如,加速器操作)的网络分组接收消息。

如果所接收的消息是主机标识符请求消息,则裸机控制器1314被配置为将消息转发到管芯上核心(例如,图13和14的管芯上核心1318中的一个),使得一个或者多个管芯上核心1318可以执行必要的步骤以识别分组流和相应的一个主机接口1312(例如,参见用于识别与图19的分组流的第一网络分组相关联的主机接口的方法1900)。可替代地,如果接收的消息是网络分组接收消息,则裸机控制器1314被配置为读取所接收的网络分组的至少一部分,用软件触发的动作覆盖读取部分,操纵网络分组的报头以创建保留区域,并将操作请求(例如,加速请求)发送到管芯上核心,使得管芯上核心中的一个或多个可以执行必要的步骤以执行操作(例如,利用图13和图14的加速器代理1308中的一个协调加速操作)。

软件触发的动作可以包括关于在完成由管芯上核心1318对其执行的操作时如何重构网络分组的任何指示。例如,软件触发的动作可以指示裸机控制器1314将字节添加到报头的结构中以用于报头封装或添加网络分组元数据,从报头的结构中移除字节以用于报头解封装或移除现有的网络分组元数据,改变网络分组指针的起始位置,等等。应当意识到,在其他实施例中,裸机控制器1314可以被配置为接收可用于在接收时执行其他后续动作的其他消息类型。

如图12所示,计算设备1200包括计算引擎1202、输入/输出(i/o)子系统1208、一个或多个数据存储设备1210、通信电路1212,并且在一些实施例中,包括一个或多个外围设备1216。当然,在其他实施例中,计算设备1200可以包括其他或附加组件,例如常见于计算设备中的组件(例如,电源、冷却组件、图形处理单元(gpu)等)。另外,在一些实施例中,一个或多个说明性组件可以被并入另一组件中,或者以其他方式形成另一组件的一部分。

计算引擎1202可以被体现为能够执行下面描述的各种计算功能的任何类型的设备或设备集合。在一些实施例中,计算引擎1202可以被体现为单个设备,诸如集成电路、嵌入式系统、fpga、片上系统(soc)或其他集成系统或设备。另外,在一些实施例中,计算引擎1202包括或可以被以其他方式体现为处理器1204和存储器1206。处理器1204可以被体现为能够执行本文描述的功能的任何类型的处理器。例如,处理器1204可以被体现为一个或多个单核或多核处理器、微控制器或其他处理器或处理/控制电路。在一些实施例中,处理器1204可以被体现为、包括或以其他方式耦合到fpga、专用集成电路(asic)、可重新配置的硬件或硬件电路或促进执行本文描述的功能的其他专用硬件。

存储器1206可以被体现为能够执行本文描述的功能的任何类型的易失性(例如,动态随机存取存储器(dram)等)或非易失性存储器或数据存储装置。应当意识到,存储器1206可以包括主存储器(即,主要存储器)和/或高速缓冲存储器(即,可以比主存储器更快地存取的存储器)。易失性存储器可以是要求功率以维持由介质存储的数据的状态的存储介质。易失性存储器的非限制性示例可以包括各种类型的随机存取存储器(ram),诸如动态随机存取存储器(dram)或静态随机存取存储器(sram)。

可以在存储器模块中使用的一种特定类型的dram是同步动态随机存取存储器(sdram)。在特定实施例中,存储器组件的dram可以符合由jedec颁布的标准,例如用于ddrsdram的jesd79f,用于ddr2sdram的jesd79-2f,用于ddr3sdram的jesd79-3f,用于ddr4sdram的jesd79-4a,用于低功率ddr(lpddr)的jesd209,用于lpddr2的jesd209-2,用于lpddr3的jesd209-3和用于lpddr4的jesd209-4(这些标准可在www.jedec.org上获得)。这些标准(和类似标准)可以被称为基于ddr的标准,并且实现这种标准的存储设备的通信接口可以被称为基于ddr的接口。

在一个实施例中,存储器设备是块可寻址存储器设备,诸如基于nand或nor技术的那些设备。存储器设备还可以包括下一代非易失性设备,诸如三维交叉点存储器设备(例如,intel3dxpointtm存储器),或其他字节可寻址的就地写入非易失性存储器设备。在一个实施例中,存储器设备可以是或可以包括使用硫属化合物玻璃的存储器设备,多阈值级nand闪存,nor闪存,单级或多级相变存储器(pcm),电阻存储器,纳米线存储器,铁电晶体管随机存取存储器(fetram),反铁电存储器,采用忆阻器技术的磁阻随机存取存储器(mram)存储器,包括金属氧化物基极、氧空位基极和导电桥随机存取存储器(cb-ram)的电阻存储器,或自旋移矩(stt)-mram,基于自旋电子磁结存储器的设备,基于磁隧道结(mtj)的设备,基于dw(畴壁)和sot(自旋轨道转移)的设备,基于晶闸管的存储器设备,或任何上述设备的组合,或其他存储器。存储器设备可以指代管芯本身和/或封装的存储器产品。

在一些实施例中,3d交叉点存储器(例如,intel3dxpointtm存储器)可以包括无晶体管的可堆叠交叉点体系结构,其中存储器单元位于字线和位线的交叉处并且可单独寻址并且其中位存储是基于体电阻的变化的。在一些实施例中,存储器1206的全部或一部分可以被集成到处理器1204中。在操作中,存储器1206可以存储在操作期间使用的各种软件和数据,诸如作业请求数据、内核映射数据、遥测数据、应用程序、程序、库和驱动程序。

计算引擎1202经由i/o子系统1208通信地耦合到计算设备1200的其他组件,该i/o子系统1208可以被体现为促进与计算引擎1202(例如,与处理器1204和/或存储器1206)以及计算设备1200的其它组件的输入/输出操作的电路和/或组件。例如,i/o子系统1208可以被体现为或者以其它方式包括存储器控制器集线器、输入/输出控制集线器、集成传感器集线器、固件设备、通信链路(例如,点对点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或促进输入/输出操作的其他组件和子系统。在一些实施例中,i/o子系统1208可以形成soc的一部分,并且与计算设备1200的处理器1204、存储器1206和其他组件中的一个或多个一起被并入计算引擎1202中。

一个或多个数据存储设备1210可以被体现为被配置用于短期或长期存储数据的任何类型的设备,例如以存储器设备和电路、存储卡、硬盘驱动器、固态驱动器或其他数据存储设备为例。每个数据存储设备1210可以包括存储用于数据存储设备1210的数据和固件代码的系统分区。另外,每个数据存储设备1210还可以包括存储操作系统的数据文件和可执行文件的操作系统分区。

通信电路1212可以被体现为能够通过网络(未示出)实现计算设备1200与另一计算设备(例如,源计算设备)之间的网络通信的任何通信电路、设备或其集合。这样的网络可以被体现为任何类型的有线或无线通信网络,包括全球网络(例如,因特网)、局域网(lan)或广域网(wan)、蜂窝网络(例如,全球移动通信系统(gsm)、3g、长期演进(lte)、全球微波接入互操作性(wimax)等)、数字用户线(dsl)网络、有线网络(例如,同轴网络、光纤网络等),或其任何组合。

因此,通信电路1212可以被配置为使用任何一种或多种通信技术(例如,有线或无线通信)和相关联的协议(例如,以太网、wimax等)来实现这种通信。如前所述,说明性通信电路1212包括智能nic1214,其也可以被称为智能nic或智能化/智能主机结构接口(hfi),并且在图13和图14中进一步详细描述。智能nic1214可以被体现为一个或多个内置板、子卡、网络接口卡、控制器芯片、芯片组或可以由计算设备1200用于发送网络通信到另一计算设备/从另一计算设备接收网络通信的其他设备。

外围设备1216可以包括可用于将信息输入到计算设备1200中和/或从计算设备1200接收信息的任何类型的设备。外围设备1216可以被体现为可用于将信息输入计算设备1200的任何辅助设备,例如键盘、鼠标、麦克风、条形码阅读器、图像扫描仪等,或者自计算设备1200输出信息的任何辅助设备,例如显示器、扬声器、图形电路、打印机、投影仪等。应当意识到,在一些实施例中,外围设备1216中的一个或多个可以用作输入设备和输出设备(例如,触摸屏显示器,显示屏顶部上的数字化器等)。应进一步意识到,连接到计算设备1200的外围设备1216的类型可以取决于例如计算设备1200的类型和/或预期用途。另外或替代地,在一些实施例中,外围设备1216可以包括一个或多个端口,例如以用于将外部外围设备连接到计算设备1200的usb端口为例。

现在参考图13,图12的计算设备1200的nic1214可以在操作期间建立环境1300。说明性环境1300包括一个或多个网络接口1302、存储器结构1304、fxp1306、一个或多个加速器代理1308、业务管理器1310、一个或多个主机接口1312、裸机控制器1314、一个或多个管芯上处理核心1318、基础设施1316、存储器控制单元1320、sram1322和一个或多个存储器控制器1324。环境1300的各种组件可以被体现为硬件、固件、软件或其组合。这样,在一些实施例中,环境1300的一个或多个组件可以被体现为电子设备的电路或集合。另外,在一些实施例中,一个或多个说明性组件可以形成另一个组件的一部分和/或一个或多个说明性组件可以彼此独立。

网络接口1302被配置为接收入站网络业务并且路由/发送出站网络业务。为了便于接收去往计算设备1200的入站网络通信(例如,网络业务、网络分组,网络分组流等)和传输来自计算设备1200的出站网络通信(例如,网络业务、网络分组,网络分组流等),网络接口1302被配置为管理(例如,创建,修改,删除等)与智能nic1214的物理和虚拟网络端口(即,虚拟网络接口)的连接,以及与其相关联的入口/出口缓冲器/队列。网络接口1302还被配置为与存储器结构接口1332协调,以将在网络接口1302处接收的网络分组的内容(例如,报头、有效载荷、页脚等)存储到存储器结构1304。

如前所述,存储器结构1304包括可用于存储所接收的网络分组的内容的段(未示出)。因此,应当意识到,存储器结构接口1332被配置为以分布式方式管理对段的数据写入,并且提供可用于识别其中网络分组的内容已被存储在其中的段的存储位置的指示(例如,指针)。另外,存储器结构接口1332被配置为当接收的网络分组已经被存储在存储器结构1304中时通知fxp1306并且将存储器结构位置指针提供给fxp1306。

fxp1306被配置为识别与所接收的网络分组相关联的分组流,并确定是否通知与分组流相对应的主机接口。为了识别分组流,fxp1306可以对表执行查找,该表指示哪些分组流对应于哪个主机接口1312。如果查找失败(例如,相关联的分组流不在查找表中),则fxp1306被配置为生成消息并且向裸机控制器1314发送消息(即,主机标识符请求消息),裸机控制器1314可以使用该消息来采取后续动作以识别相关联的分组流和相应的主机接口1312。在一些实施例中,fxp1306可以另外被配置为在接收到每个网络分组时生成消息(即,网络分组接收消息)并将其发送到裸机控制器1314,使得可以在向适当的主机接口1312通知网络分组的接收之前执行操作。

加速器代理1308均被配置为对网络分组的至少一部分执行加速操作。例如,这种加速器代理1308可以包括远程直接存储器存取(rdma)操作、加密操作或任何其他类型的加速。业务管理器1310被配置为在分组处理数据路径中执行业务管理,例如可以被执行以实施服务级别协议(sla)。

每个主机接口1312被配置为用作主机cpu1328中的相应一个(例如,图12的计算引擎1202的处理器1204中的一个)与智能nic1214之间的接口。例如,主机接口1312被配置为用作主机cpu1328(例如,图12的计算引擎1202的处理器1204)和存储器结构1304(例如,经由存储器结构接口1332)之间的接口,以及主机cpu1328与基础设施1316之间的接口。因此,消息和/或网络分组数据可以经由一个或多个通信链路(例如pcie互连)在其间传递,以提供对主机存储器1330(例如,图12的计算引擎1202的存储器1206)的存取。

裸机控制器1314可以被体现为能够执行本文描述的功能的任何类型的虚拟或物理控制器设备。裸机控制器1314被配置为从fxp1306接收消息,基于所接收的消息的类型识别要进行的后续动作。例如,如前所述,如果接收的消息是网络分组接收消息,则裸机控制器1314被配置为读取所接收的网络分组的至少一部分,用软件触发的动作覆盖读取部分,操纵网络分组的报头以用于创建保留区域,并且将操作请求(例如,加速请求)发送到管芯上核心1318,使得一个或多个管芯上核心1318可以执行必要的步骤以执行操作(例如,利用加速器代理1308中的一个协调加速操作)。应当意识到,在一些实施例中,裸机控制器1314可以被合并到另一个组件中。例如,现在参见图14,图12的计算设备1200的nic1214可以在操作期间建立环境1400,其中裸机控制器1314与主机接口1312集成。应当进一步意识到,在一些实施例中,裸机控制器1314可以是物理或虚拟组件。

返回参考图13,一个或多个管芯上核心1318被配置为执行智能nic1214本地的计算。因此,管芯上核心1318可以提供计算功率以执行某些操作而无需将要操作的数据不得不移动到远离智能nic1214的位置,从而消除了否则通过移动数据而引入的等待时间。基础设施1316可以包括用于管理管芯上核心1318和/或主机接口1312的通信、状态和控制的各种组件,诸如串行通信接口(例如,通用异步接收器和发送器(uart)、串行外围接口(spi)总线等)、测试/调试接口、数字热传感器、i/o控制器等。

sram1322经由存储器控制单元1320通信地耦合到管芯上核心1318,并且可以用于存储管芯上核心1318的数据(例如,工作队列、通知、中断、报头、描述符、关键结构等)。另外,存储器控制单元1320还耦合到一个或多个存储器控制器1324。存储器控制器1324可以是双数据速率(ddr)存储器控制器,其被配置为驱动在智能nic1214外部、但由智能nic1214管理的ddrsdram1326,而不是主机cpu(例如,图12的计算引擎1202的处理器1204)。因此,相对于对主机cpu1328的ddrsdram1330(即,主机存储器)的存取,对ddrsdram1326的存取更快。存储器控制器1324还经由存储器结构接口1332通信地耦合到存储器结构1304,使得存储在ddrsdram1326中的数据可以被传输到存储器结构1304或从存储器结构1304传输。

现在参考图15,在使用中,计算设备1200,或者更具体地,计算设备1200的智能nic1214,可以执行方法1500,用于响应于接收到网络分组而生成事件消息。方法1500开始于框1502,其中智能nic1214,或更具体地智能nic1214的网络接口1302,确定是否已经接收到网络分组。如果为是,则方法1500前进到框1504,其中智能nic1214,或更具体地智能nic1214的存储器结构接口1332,将所接收的网络分组以分布式方式写入智能nic1214的存储器结构(例如,图13的存储器结构1304)。

为此,在框1506中,存储器结构接口1332分配存储器结构1304的多个段并将所接收的网络分组的内容(例如,报头、有效载荷和页脚)写入分配的段。在框1508中,存储器结构接口1332生成事件消息并将事件消息发送到fxp(例如,图13的fxp1306),指示已经接收到所接收的网络分组。另外,在框1510中,存储器结构接口1332包括具有事件消息的存储器结构位置指针,该指针可用于识别已经写入所接收的网络分组的存储器位置。

图16和图17说明性地示出了在接收到事件消息时可以由fxp1306执行的方法的两个示例。例如,在图16的方法1600中,fxp1306可以被配置为向裸机控制器1314通知指示已经接收到网络分组的每个接收到的事件消息。可替代地,在图17的方法1700中,fxp1306可以被配置为在向裸机控制器1314或相应的一个主机接口1312通知所接收的网络分组之前,首先识别与每个接收的事件消息相对应的网络分组相关联的分组流。应当意识到,在一些实施例中,fxp1306可以被配置为对网络分组的至少一部分执行一个或多个附加操作,作为对这里描述的内容的补充或替代,例如在接收到事件消息时,在对网络分组执行附加操作之后(例如,通过管芯上核心1318、代理1308等)等。例如,在一些实施例中,fxp1306可以被配置为在具有预定大小的网络分组的报头中创建保留区域,例如通过移位报头。在这样的实施例中,fxp1306可以创建足够大小的保留区域以将另一个报头封装在网络分组报头中,将特定量的元数据添加到网络分组报头,等等。另外,在这样的实施例中,fxp1306可以是被配置为在完成要在其上执行的操作时压缩保留区域的任何未使用部分。换句话说,fxp1306可以另外被配置为执行否则可能由管芯上核心1318和/或裸机控制器1314执行的操作。

现在参考图16,在使用中,计算设备1200,或者更具体地,计算设备1200的智能nic1214,可以执行方法1600,用于响应于接收到事件消息而生成网络分组接收消息。方法1600开始于框1602,其中智能nic1214,或更具体地智能nic1214的fxp(例如,fxp1306)确定是否已从存储器结构接口1332接收到事件消息(例如,响应于已经接收到与事件消息相关联的网络分组)。应当意识到,事件消息包括存储器结构位置指针,其可用于识别已经在存储器结构1304中写入所接收的网络分组的存储器位置。

如果fxp1306确定已经接收到事件消息,则方法1600前进到框1604,其中fxp1306生成网络分组接收消息并将网络分组接收消息发送到裸机控制器(例如,裸机控制器1314),请求执行操作。在一些实施例中,fxp1306可以被配置为响应于每个接收的网络分组而生成并发送网络分组接收消息。可替代地,在其他实施例中,fxp1306可以被配置为识别所接收的网络分组的一个或多个特性(例如,分组流、源标识符、目的地标识符等)并根据一个或多个识别的特性来确定是否生成和发送网络分组接收消息。另外,在框1606中,fxp1306包括具有网络分组接收消息的存储器结构位置指针。

现在参考图17,在使用中,计算设备1200,或者更具体地,计算设备1200的智能nic1214,可以执行方法1700,用于响应于接收到事件消息而将分组流与接收的网络分组相关联。方法1700开始于框1702,其中智能nic1214,或更具体地智能nic1214的fxp(例如,fxp1306)确定是否已接收到事件消息。如果为是,则方法1700前进到框1704,其中fxp1306读取与所接收的事件消息相关联的网络分组的至少一部分(例如,报头、有效载荷和/或页脚的至少一部分)以识别网络分组的分组流。为此,在框1706中,fxp1306从位于存储器结构1304中的段读取网络分组的至少一部分,该段的位置已经基于与事件消息一起接收的存储器结构位置指针来确定。

在框1708中,fxp1306确定是否已经识别出相关联的分组流。为此,例如,fxp1306可以被配置为对表执行查找,该表指示哪些分组流对应于所接收的网络分组的一个或多个特性(例如,数据类型、源标识符、目的地标识符等)。如果fxp1306确定尚未识别出相关联的分组流(例如,与事件消息相关联的网络分组是分组流的第一网络分组),则方法1700分支到框1710。在框1710中,fxp1306生成主机标识符请求消息并将其发送到裸机控制器1314,请求帮助识别分组流,从而可以从中识别相应的主机接口1312(例如,参见图19的方法1900)。另外,在框1712中,fxp1306包括具有主机标识符请求消息的存储器结构位置指针。

否则,如果fxp1306确定已经识别出相关联的分组流,则方法1700分支到框1714。在框1714中,fxp1306识别与所识别的相关联的分组流相对应的主机接口。为此,例如,fxp1306可以被配置为对可用于识别哪些分组流对应于哪个主机接口1312的表执行查找。在框1716中,fxp1306生成通知消息并向所识别的主机接口发送该通知消息,指示已接收到网络分组。另外,在框1718中,fxp1306包括具有通知消息的存储器结构位置指针。

现在参考图18,在使用中,计算设备1200,或者更具体地,计算设备1200的智能nic1214,可以执行方法1800,用于响应于已经从fxp1306接收到消息而促进对网络分组执行的操作。方法1800开始于框1802,其中智能nic1214,或更具体地,智能nic1214的裸机控制器(例如,图13和14的裸机控制器1314)确定是否已经从fxp1306接收到消息。如果为是,则方法1800前进到框1804,其中裸机控制器1314确定是否识别向哪个主机接口通知接收到与网络分组接收消息相关联的网络分组。为此,裸机控制器1314被配置为确定所接收的消息的类型。例如,所接收的消息可以是网络分组接收消息(例如,由图16的方法1600生成),主机标识符请求消息(例如,由图17的方法1700生成),或其他类型的通知消息(例如,统计更新通知,调度请求通知,调度决定通知等)。因此,应当意识到,可以在接收到另一种类型的通知消息(例如,读取网络分组的一部分)时不执行方法1800的某些部分。

如果裸机控制器1314确定要识别相对应的主机接口(例如,所接收的消息对应于主机标识符请求消息),则方法1800分支到框1806,其中裸机控制器1314与智能nic1214的管芯上核心(例如,图13的核心1318)协调,用于识别主机接口。例如,裸机控制器1314可以写入一个或多个管芯上核心可用的入站描述符,以指示裸机控制器1314请求帮助识别分组流(参见例如图19的方法1900)。否则,如果裸机控制器1314确定不需要识别主机接口(例如,所接收的消息对应于网络分组接收消息),则方法1800分支到框1808。

在框1808中,裸机控制器1314基于与消息一起接收的相应存储器结构位置指针来获取与所接收的消息相关联的网络分组的至少一部分。为此,在框1810中,在一些实施例中,裸机控制器1314可以获取网络分组的报头。可替代地,在框1812中,在其他实施例中,裸机控制器1314可以获取预定大小量的网络分组。在框1814中,裸机控制器1314将所获取的网络分组的部分存储到本地管理的存储位置(例如,sram1322、dram1326等)。在框1816中,裸机控制器1314读取网络分组的存储部分。

在框1818中,裸机控制器1314写入管芯上核心1318可用的入站描述符(例如,到本地管理的存储装置中的位置),以在接收到入站描述符时执行一个或多个操作。另外,裸机控制器1314包括网络分组的本地存储部分的位置的指示(例如,指针)。在一些实施例中,在框1822中,裸机控制器1314可以向管芯上核心1318发送中断以向管芯上核心1318通知入站描述符的存在。

在框1824中,裸机控制器1314确定是否已从管芯上核心1318接收到出站描述符。换句话说,管芯上核心1318被配置为对网络分组的部分执行一个或多个操作,并且在完成时写入出站描述符,该出站描述符向裸机控制器1314通知由管芯上核心1318对网络分组所做的改变(例如,使报头更大或更小,合并或移除元数据等等)。出站描述符可以包括裸机控制器1314可用于识别从本地管理的存储器获取网络分组的更新部分的位置,如何处理网络分组(例如,接收与可用于识别在接收到时要执行的动作的网络分组相关联的事件消息的下一个或最终组件),网络分组的部分结构如何变化等的任何信息。

如果裸机控制器1314已经接收到出站描述符,则该方法前进到框1826,其中裸机控制器1314基于出站描述符中包含的信息来重构网络分组的一部分。例如,裸机控制器1314可以被配置为执行一个或多个硬件级协议转换来重构网络分组的一部分,以考虑到对网络分组的该部分所做的改变(例如,该部分变得更大,该部分变得更小,该部分包括更新的信息等)。在框1828中,裸机控制器1314以分布式方式(例如,经由图13的存储器结构接口1332)将网络分组的重构部分写入存储器结构。在框1830中,裸机控制器1314基于出站描述符的信息识别要对网络分组进行的后续动作(例如,附加处理,发送到另一计算设备,等等)并经由事件消息通知相应的组件(例如,fxp1306、加速器代理1306中的一个、网络接口1302中的一个,等等)。

现在参考图19,在使用中,计算设备1200,或者更具体地,计算设备1200的智能nic1214,可以执行用于识别与接收的网络分组相关联的主机接口的方法1900。方法1900开始于框1902,其中智能nic1214,或更具体地,智能nic1214的一个或多个管芯上核心(例如,图13和14的管芯上核心1318)确定是否已从智能nic1214的裸机控制器(例如,图13和14的裸机控制器1314)接收到消息。如果为是,则方法1900前进到框1904,其中一个管芯上核心1318基于与主机标识请求消息一起接收的存储器结构位置指针来从存储器结构1304获取整个网络分组。在框1906中,管芯上核心1318将网络分组的内容存储在本地控制的存储器(例如,图13的ddrsdram1326)中。

在框1908中,管芯上核心1318处理网络分组数据的至少一部分以确定对应的主机接口。例如,管芯上核心1318可以分析报头的至少一部分以确定网络分组的协议、源标识符(例如,源ip地址、源端口等)、目的地标识符(例如,目的地ip地址、目的地端口等)和/或其他网络业务特性。在另一示例中,管芯上核心1318可以分析网络分组的有效载荷的至少一部分以确定与网络分组相关联的类型或特性,例如有效载荷是否包含音频数据、视频数据、文本、统一资源标识符(uri)等。在框1910中,管芯上核心1318生成所确定的对应主机接口的指示并将其发送到裸机控制器1314。在一些实施例中,在框1912中,管芯上核心1318启动将网络分组写入存储器结构1304或与所识别的主机接口1312对应的主机cpu1328相关联的主机存储器1330。

现在参考图20,用于处理出站网络分组的通信流程2000的实施例包括图12的计算引擎1202和图12-14的nic。说明性通信流程2000包括多个数据流,其中一些数据流可以被单独执行或一起执行,这取决于实施例。在数据流2002中,计算引擎1202的处理器1204生成用于要发送到另一网络设备(未示出)的网络分组的数据。在数据流2004中,处理器1204将数据发送到nic1214,或者更具体地发送到主机接口1312中的一个。在数据流2006中,主机接口1312对接收的数据进行打包,并且在数据流2008中将网络分组转发到存储器结构接口1332。

在数据流2010中,存储器结构接口1332以分布式方式(例如,跨存储器结构1304的多个段)将网络分组写入存储器结构(例如,图13的存储器结构1304)。在数据流2012中,存储器结构接口1332生成指示新网络分组已被写入存储器结构1304的事件消息(例如,新的网络分组事件消息)。在数据流2014中,主机结构接口1318将事件消息转发到fxp1306。应当意识到,在一些实施例中,存储器结构接口1332可以包括一些处理能力,使得一些分析可以由存储器结构接口1332执行,而不需要涉及fxp1306(例如,事件消息可以被直接发送到裸机控制器1314)。例如,在这样的实施例中,存储器结构接口1332可以被配置为在将随后事件消息发送到fxp1306之前识别与网络分组相关联的流,其可以由fxp1306使用以对其执行一个或多个操作(例如,在网络分组的报头中创建保留区域),然后如数据流2020中所述,将后续事件消息发送到裸机控制器。

在接收到事件消息时,在数据流2016中,fxp1306从存储器结构1304获取并读取新网络分组的至少一部分。为此,应当意识到,事件消息可以包括可用于识别存储结构1304中已存储新网络分组的位置的指针。在数据流2018中,fxp1306识别在(例如,经由网络接口1302中的一个)从nic1214发送网络分组之前是否要求管芯上核心1318的附加处理。如果为是,则在数据流2020中,fxp1306生成事件消息(例如,网络分组发送事件消息)并将其发送到裸机控制器1314。在接收时,裸机控制器1314被配置为执行在图18的方法1800中描述的操作。在数据流2022中,在从裸机控制器1314接收到网络分组准备好用于传输的指示之后,存储器结构接口1332从存储器结构1304读取和解除分配整个网络分组以便发送到另一网络设备。例子

以下提供本文公开的技术的说明性示例。这些技术的实施例可以包括下面描述的示例中的任何一个或多个,以及任何组合。

示例1包括一种用于通过所述计算设备的网络接口控制器(nic)处理网络分组的计算设备,所述计算设备包括:分组处理器和控制器设备,所述分组处理器和所述控制器设备中的每一个均通信地耦合到所述nic的存储器结构,其中所述nic用于:由所述控制器设备并且响应于已经从所述分组处理器接收到已经将网络分组写入所述存储器结构的消息而基于与所述消息一起接收到的存储器结构位置指针来从所述存储器结构获取所述网络分组的至少一部分;由所述控制器设备读取经获取的网络分组的部分;由所述控制器设备将入站描述符写入由所述nic管理的存储器中的位置;由所述nic的一个或多个管芯上核心根据包含在所述入站描述符中的信息来对所述经获取的网络分组的部分执行一个或多个操作;由所述一个或多个管芯上核心将出站描述符写入由所述nic管理的存储器中的位置;由所述控制器设备根据包含在所述出站描述符中的信息来重构所述经获取的网络分组的部分的至少一部分;以及由所述控制器设备将经重构的网络分组的部分写入所述存储器结构。

示例2包括示例1的主题,并且还包括:由所述控制器设备将所述经获取的网络分组的部分存储到由所述nic管理的本地临时数据存储装置。

示例3包括示例1和2中任一项的主题,并且其中从所述存储器结构获取所述网络分组的所述部分包括至少获取所述网络分组的报头。

示例4包括示例1-3中任一项的主题,并且其中从所述存储器结构获取所述网络分组的所述部分包括获取所述网络分组的预定大小的量。

示例5包括示例1-4中任一项的主题,并且其中所述存储器结构位置指针对应于所述存储器结构中已经存储有所述网络分组的报头的位置。

示例6包括示例1-5中任一项的主题,并且还包括:由所述控制器设备并且在已经写入所述入站描述符之前,将所述网络分组的报头移位预定大小的量以在所述报头中创建保留区域。

示例7包括示例1-6中任一项的主题,并且还包括:由所述控制器设备并且在已经写入所述入站描述符之后,向所述一个或多个管芯上核心发送中断请求。

示例8包括示例1-7中任一项的主题,并且还包括:由所述分组处理器并且在已经将所述消息发送到所述控制器设备之前,将所述网络分组的报头移位预定大小的量以在所述报头中创建保留区域。

示例9包括示例1-8中任一项的主题,并且其中,根据包含在所述出站描述符中的信息来重构所述经获取的网络分组的部分的所述至少一部分包括以下中的一个:将一个或多个字节添加到所述网络分组的所述部分的结构中,从所述网络分组的所述部分的结构中移除一个或多个字节,或者将指针的起始位置改变到所述网络分组在所述存储器结构中的位置。

示例10包括示例1-9中任一项的主题,并且还包括:由所述控制器设备根据所述出站描述符识别要对所述网络分组执行后续动作的所述nic的组件,并且将另一事件消息发送到经识别的组件,其中,所述另一事件消息能够用于识别要执行的后续动作和所述网络分组在所述存储器结构中的位置。

示例11包括示例1-10中任一项的主题,并且其中识别所述nic的组件包括:识别用于对所述网络分组或者所述nic的网络接口执行加速操作以将所述网络分组发送到另一计算设备的所述nic的加速器代理。

示例12包括示例1-11中任一项的主题,并且还包括:由所述nic的网络接口从另一计算设备接收网络分组;由所述网络接口将接收到的网络包转发到所述存储结构的存储器结构接口;由所述存储器结构接口以分布式方式将所述网络分组写入所述存储器结构;由所述存储器结构接口向所述分组处理器发送事件消息,其中,所述消息指示所述网络分组已经被写入所述存储器结构并且包括所述存储器结构位置指针;以及由所述分组处理器并且在接收到所述事件消息时将所述消息发送到所述控制器设备,其中,所述消息指示网络分组已经被写入所述存储器结构并且包括所述存储器结构位置指针。

示例13包括示例1-12中任一项的主题,并且还包括:由所述分组处理器确定与接收到的网络分组相对应的分组流是否已知;以及由所述分组处理器并且响应于确定所述分组流未知而向所述控制器设备发送主机标识符请求消息,其中,所述主机标识符请求消息能够用于指示与所述网络分组相对应的所述分组流未知。

示例14包括示例1-13中任一项的主题,并且其中确定所述分组流是否已知包括:由所述nic的所述一个或多个管芯上核心从已经存储有所述网络分组的一部分的、由所述nic管理的所述存储器中的位置读取所述网络分组的所述部分,并且至少部分地基于所述网络分组的经读取的部分来执行查找操作以确定所述分组流。

示例15包括示例1-14中任一项的主题,并且还包括:由所述nic的主机接口从计算引擎接收网络分组;由所述主机接口将所述网络分组转发到所述存储器结构的存储器结构接口;由所述存储器结构接口以分布式方式将所述网络分组写入所述存储器结构;由所述存储器结构接口向所述分组处理器发送事件消息,其中,所述事件消息指示已从所述计算引擎接收到所述网络分组;由所述分组处理器识别所述网络分组是否要由所述一个或多个管芯上核心处理;以及由所述分组处理器并且在已经识别出所述网络分组要由所述一个或多个管芯上核心处理之后将另一事件消息发送到所述控制器设备,其中,所述另一事件消息指示所述网络分组已经被接收到并且包括所述存储器结构位置指针。

示例16包括用于通过计算设备的网络接口控制器(nic)处理网络分组的方法,所述计算设备包括:由所述计算设备的网络接口控制器(nic)的控制器设备并且响应于已经从所述nic的分组处理器接收到已经将网络分组写入所述nic的存储器结构的消息而基于与所述消息一起接收到的存储器结构位置指针来从所述存储器结构获取所述网络分组的至少一部分;由所述控制器设备读取经获取的网络分组的部分;由所述控制器设备将入站描述符写入由所述nic管理的存储器中的位置;由所述nic的一个或多个管芯上核心根据包含在所述入站描述符中的信息来对所述经获取的网络分组的部分执行一个或多个操作;由所述一个或多个管芯上核心将出站描述符写入由所述nic管理的存储器中的位置;由所述控制器设备根据包含在所述出站描述符中的信息来重构所述经获取的网络分组的部分的至少一部分;以及由所述控制器设备将经重构的网络分组的部分写入所述存储器结构。

示例17包括示例16的主题,并且还包括:由所述控制器设备将所述经获取的网络分组的部分存储到由所述nic管理的本地临时数据存储装置。

示例18包括示例16和17中任一项的主题,并且其中从所述存储器结构获取所述网络分组的所述部分包括至少获取所述网络分组的报头。

示例19包括示例16-18中任一项的主题,并且其中从所述存储器结构获取所述网络分组的所述部分包括获取所述网络分组的预定大小的量。

示例20包括示例16-19中任一项的主题,并且其中所述存储器结构位置指针与所述存储器结构中已经存储有所述网络分组的报头的位置相对应。

示例21包括示例16-20中任一项的主题,并且还包括由所述控制器设备在写入所述入站描述符之前将所述网络分组的报头移位预定大小的量以在所述报头中创建保留区域。

示例22包括示例16-21中任一项的主题,并且还包括由所述控制器设备在写入所述入站描述符之后向所述一个或多个管芯上核心发送中断请求。

示例23包括示例16-22中任一项的主题,并且还包括由所述分组处理器在已经将消息发送到所述控制器设备之前,将所述网络分组的报头移位预定大小的量以在所述报头中创建保留区域。

示例24包括示例16-23中任一项的主题,并且其中,根据包含在所述出站描述符中的信息重构所述经获取的网络分组的部分的至少一部分包括以下中的一个:(i)将一个或多个字节添加到所述网络分组的所述部分的结构中,(ii)从所述网络分组的所述部分的结构中移除一个或多个字节,或(iii)将指针的起始位置改变到指向所述网络分组在所述存储器结构中的位置。

示例25包括示例16-24中任一项的主题,并且还包括:由所述控制器设备根据所述出站描述符识别要对所述网络分组执行后续动作的所述nic的组件,以及将另一事件消息发送到经识别的组件,其中,所述另一事件消息能够用于识别要执行的后续动作和所述网络分组在所述存储器结构中的位置。

示例26包括示例16-25中任一项的主题,并且其中识别所述nic的组件包括识别用于对所述网络分组或所述nic的网络接口执行加速操作以将所述网络分组发送到另一计算设备的所述nic的加速器代理。

示例27包括示例16-26中任一项的主题,并且还包括:由所述nic的网络接口从另一个计算设备接收网络分组;由所述网络接口将接收到的网络分组转发到所述存储器结构的存储器结构接口;由所述存储器结构接口以分布式方式将所述网络分组写入所述存储器结构;由所述存储器结构接口向所述分组处理器发送事件消息,其中所述消息指示网络分组已经被写入所述存储器结构并且包括所述存储器结构位置指针;以及由所述分组处理器并且在接收到所述事件消息时将所述该消息发送到所述控制器设备,其中所述消息指示所述网络分组已经被写入所述存储器结构并且包括所述存储器结构位置指针。

示例28包括示例16-27中任一项的主题,并且还包括:由所述分组处理器确定与接收到的网络分组相对应的分组流是否已知;以及由所述分组处理器并且响应于确定所述分组流未知而向所述控制器设备发送主机标识符请求消息,其中所述主机标识符请求消息能够用于指示与所述网络分组相对应的所述分组流未知。

示例29包括示例16-28中任一项的主题,并且其中,确定所述分组流是否已知包括:(i)由所述nic的管芯上核心从已经存储有所述网络分组的一部分的、由所述nic管理的所述存储器中的位置读取所述网络分组的所述部分,以及(ii)至少部分地基于经读取的所述网络分组的部分来执行查找操作以确定所述分组流。

示例30包括示例16-29中任一项的主题,并且还包括:由所述nic的主机接口从所述计算引擎接收网络分组;由所述主机接口将所述网络分组转发到所述存储器结构的存储器结构接口;由所述存储器结构接口以分布式方式将所述网络分组写入所述存储器结构;由所述存储器结构接口向所述分组处理器发送事件消息,其中,所述事件消息指示已经从所述计算引擎接收到所述网络分组;由所述分组处理器识别所述网络分组是否要由所述一个或多个管芯上核心处理;以及由所述分组处理器并且在已经识别了要由所述一个或多个管芯上核心处理所述网络分组之后将另一事件消息发送到所述控制器设备,其中,所述另一个事件消息指示所述网络分组已经被接收到并且包括所述存储器结构位置指针。

示例31包括计算设备的网络接口控制器(nic)的一个或多个机器可读存储介质,其包括存储在其上的多个指令,所述指令在被执行时使得所述计算设备的nic执行示例16-30中的任何一个的方法。

示例32包括用于通过计算设备的网络接口控制器(nic)处理网络分组的计算设备,该计算设备包括:一个或多个处理器;以及网络接口控制器(nic),其中存储有多个指令,所述指令在由所述nic执行时,使得所述计算设备执行示例16-30中任一个的方法。

示例33包括用于通过计算设备的网络接口控制器(nic)处理网络分组的计算设备,所述计算设备包括:用于由所述计算设备的网络接口控制器(nic)的控制器设备并且响应于已经从所述nic的分组处理器接收到已经将网络分组写入所述nic的存储器结构的消息而基于与所述消息一起接收到的存储器结构位置指针来从所述存储器结构获取所述网络分组的至少一部分的单元;用于由所述控制器设备读取经获取的网络分组的部分的单元;用于由所述控制器设备将入站描述符写入由所述nic管理的存储器中的位置的单元;用于由所述nic的一个或多个管芯上核心根据包含在所述入站描述符中的信息来对所述经获取的网络分组的部分执行一个或多个操作的单元;用于由所述一个或多个管芯上核心将出站描述符写入由所述nic管理的存储器中的位置的单元;用于由所述控制器设备根据包含在所述出站描述符中的信息来重构所述经获取的网络分组的部分的至少一部分的单元;以及用于由所述控制器设备将经重构的网络分组的部分写入所述存储器结构的单元。

示例34包括示例33的主题,并且还包括用于由所述控制器设备将所述经获取的网络分组的部分存储到由所述nic管理的本地临时数据存储装置的单元。

示例35包括示例33和34中任一项的主题,并且其中用于从所述存储器结构获取所述网络分组的所述部分的单元包括用于至少获取所述网络分组的报头的单元。

示例36包括示例33-35中任一项的主题,并且其中用于从所述存储器结构获取所述网络分组的所述部分的单元包括用于获取所述网络分组的预定大小的量的单元。

示例37包括示例33-36中任一项的主题,并且其中所述存储器结构位置指针与所述存储器结构中已经存储有所述网络分组的报头的位置相对应。

示例38包括示例33-37中任一项的主题,并且还包括用于由所述控制器设备并且在已经写入所述入站描述符之前将所述网络分组的报头移位预定大小的量以在所述报头中创建保留区域的单元。

示例39包括示例33-38中任一项的主题,并且还包括用于由所述控制器设备并且在已经写入所述入站描述符之后将中断请求发送到所述一个或多个管芯上核心的单元。

示例40包括示例33-39中任一项的主题,并且还包括用于由所述分组处理器并且在已经将所述消息发送到所述控制器设备之前将所述网络分组的报头移位预定大小的量以在所述报头中创建保留区域的单元。

示例41包括示例33-40中任一项的主题,并且其中用于根据包含在所述出站描述符中的信息来重构所述经获取的网络分组的部分的至少一部分的单元包括以下中的一个:(i)用于将一个或多个字节添加到所述网络分组的所述部分的结构中的单元,(ii)用于从所述网络分组的所述部分的结构中移除一个或多个字节的单元,或(iii)用于将指针的起始位置改变到指向所述网络分组在所述存储器结构中的位置的单元。

示例42包括示例33-41中任一项的主题,并且还包括用于进行以下操作的单元:(i)由所述控制器设备根据所述出站描述符识别要对所述网络分组执行后续动作的所述nic的组件,以及(ii)将另一事件消息发送到经识别的组件,其中所述另一事件消息能够用于识别要执行的后续动作和所述网络分组在所述存储器结构中的位置。

示例43包括示例33-42中任一项的主题,并且其中所述用于识别所述nic的组件的单元包括用于识别用于对所述网络分组或所述nic的网络接口执行加速操作以将所述网络分组发送到另一计算设备的所述nic的加速器代理的单元。

示例44包括示例33-43中任一项的主题,并且还包括:用于由所述nic的网络接口从另一计算设备接收所述网络分组的单元;用于由所述网络接口将接收到的网络分组转发到所述存储器结构的存储器结构接口的单元;用于由所述存储器结构接口以分布式方式将所述网络分组写入所述存储器结构的单元;用于由所述存储器结构接口向所述分组处理器发送事件消息的单元,其中所述消息指示所述网络分组已经被写入所述存储器结构并且包括所述存储器结构位置指针;以及用于由所述分组处理器并且在接收到所述事件消息时将所述消息发送到所述控制器设备的单元,其中所述消息指示所述网络分组已经被写入所述存储器结构并且包括所述存储器结构位置指针。

示例45包括示例33-44中任一项的主题,并且还包括:用于由所述分组处理器确定与接收到的网络分组相对应的分组流是否已知的单元;以及用于由所述分组处理器并且响应于确定所述分组流未知而向所述控制器设备发送主机标识符请求消息的单元,其中所述主机标识符请求消息能够用于指示与所述网络分组相对应的所述分组流未知。

示例46包括示例33-45中任一项的主题,并且其中所述用于确定所述分组流是否已知的单元包括用于以下操作的单元:(i)由所述nic的管芯上核心从已经存储有所述网络分组的一部分的、由所述nic管理的所述存储器的位置读取所述网络分组的所述部分,以及(ii)至少部分地基于经读取的所述网络分组的部分来执行查找操作以确定所述分组流。

示例47包括示例33-46中任一项的主题,并且还包括:用于由所述nic的主机接口从所述计算引擎接收网络分组的单元;用于由所述主机接口将所述网络分组转发到所述存储器结构的存储器结构接口的单元;用于由所述存储器结构接口以分布式方式将所述网络分组写入所述存储器结构的单元;用于由所述存储器结构接口向所述分组处理器发送事件消息的单元,其中所述事件消息指示已经从所述计算引擎接收到所述网络分组;用于由所述分组处理器识别所述网络分组是否要由所述一个或多个管芯上核心处理的单元;以及用于由所述分组处理器并且在已经识别出要由所述一个或多个管芯上核心处理所述网络分组之后将另一事件消息发送到所述控制器设备的单元,其中所述另一事件消息指示所述网络分组已经被接收到并且包括所述存储器结构位置指针。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1