内联网络加速器的制作方法

文档序号:14293398阅读:359来源:国知局



背景技术:

数据网络化涉及硬件和软件。在软件方面,网络化协议通常针对当前或近期硬件能力而进行设计。协议通常在网络化硬件改进的同时变得适应广泛。处理器变得更有效且有能力,并且通信介质获得可靠性和容量。随着时间过去,在过去设计的网络化协议可能变得不太适合于当前可用的硬件。例如,传送协议可能具有用于确保可靠性、对拥塞的响应以及按序递送的机制。这种机制通常不太适合于新的类型的网络。而且,为了维持连续的网络间可操作,较老的协议修改起来是不太实际的。存在对能够将网络化技术中的改进转化成可能较老的协议的总体性能中的改进而无需改变这些协议或它们现有的实现的技术的需要。

此外,网络化硬件的一些能力尚未得到完全地认识和意识。所谓的智能nic(网络接口卡)(例如fpga(现场可编程门阵列)nic)已经变得更普遍。这些较新的接口(与传统nic相似)提供物理和介质连接。它们还包括附加的处理能力,有时以可重配置电路(例如fpga)的形式。这些处理增强nic可以允许一些协议的特征从主机的cpu(中央处理单元)卸载到nic的特征。一些智能nic可以甚至允许整个传送协议从主机的cpu完全卸载到智能nic。然而,该方法通常需要显著的主机侧变化。例如,主机侧软件可能需要被重写以经由定制应用编程接口(api)而非经由标准传送协议与它的nic直接通信。另外,具有卸载功能的大多数智能nic不会用作“撞线”(“内联”)设备(即,连接到主机的现有nic的设备)。因此,为了将主机从普通nic升级到智能nic,主机的普通nic必须利用新的智能nic来进行物理替换。大规模升级能够是昂贵的且破坏性的。存在对能够被提供给主机以改进网络和主机性能而不必要求主机侧软件或硬件变化的智能nic的需要。

此外,如仅由发明人意识到的,智能nic的发展也已经使得将应用级功能卸载到智能nic成为可能。例如,分布式应用可能具有贯穿数据中心中的需要交换数据的元件。这些元件中的一些或它们的助手代理可以能够由智能nic运行。然而,尚未意识到的是:内联智能nic上的应用级代码(或其他代码)可能能够进行直接网络通信而无需遍历它们各自的主机和主机网络栈。

下面描述与以上提到的问题有关的技术。



技术实现要素:

以下发明内容仅被包含以引入下面的具体实施方式中讨论的一些构思。本发明内容不是全面的并且不旨在描绘所要求保护的主题的范围,其由最后呈现的权利要求来阐述。

提供了一种智能nic(网络接口卡),其具有使得智能nic能够用作主机的nic与网络之间的内联nic(in-linenic)的特征。智能nic提供针对主机的网络流的通过传输。被发送到主机的和从主机发送的分组通过智能nic。作为通过点,智能nic能够通过分析分组、插入分组、丢弃分组、插入或识别拥塞信息等来加速通过网络的性能。另外,智能nic提供轻量级传送协议(ltp)模块,其使得该智能nic能够在不将网络业务通过它们各自的主机的情况下与其他智能nic直接通信。

下面将参考结合附图考虑的以下详细描述来解释伴随的特征中的许多特征。

附图说明

本说明书将从鉴于附图阅读的以下详细描述得到更好理解,其中类似的参考数字用于指代随附描述中的类似的部分。

图1示出了被布置为经由数据网络彼此通信的主机。

图2示出了内联智能nic的高级特征。

图3示出了智能nic的另一视图。

图4示出了交换机的细节。

图5示出了轻量级传送协议(ltp)模块的细节。

图6示出了用于传输应用ltp数据的过程。

具体实施方式

下面描述的实施例涉及加速为其提供网络连接的主机的网络流的内联智能nic。下面描述的实施例也涉及实现直接nic间网络通信。下面还描述了支持并增强这些特征的技术细节。

图1示出了被布置为经由数据网络102彼此通信的主机100。主机100可以是能够用作网络流端点的任何类型的计算设备。主机100的形式不重要(例如,刀片式服务器、工作站、笔记本,等等),但是假定了处理硬件(例如,cpu、图形处理单元,等等)、存储硬件(例如,存储器、盘驱动器,等等)以及用于它们的协作的硬件(总线、输入/输出控制器和端口,等等)。为了本文的目的,数据网络102的细节不重要。例如,数据网络102在物理/链路层可以包括共享介质(例如以太网)、一个或多个交换结构(例如,无限带宽或交换结构光纤信道)、令牌环等的段。可以使用能够提供主机100或其他设备之间的网络层路由的任何类型的已知数据网络102。为了讨论,将假设数据网络102为因特网协议(ip)网络,其为主机100提供ip路由,主机100具有被分配给它们的各自的ip地址。

主机100被提供具有各自的智能nic104。主机100可以具有它们自己的nic(未示出),并且智能nic104(其还被称为“内联nic”)被配置为中继在主机nic与数据网络102之间的网络流106。网络流106可以例如为传输控制协议(tcp)流。智能nic104能够经由介质/物理链路105与数据网络102交换网络分组,并且能够经由到主机nic的介质/物理链路(未示出)与它们各自的主机100交换网络分组。如图1所示,主机100能够使用所中继的网络流106彼此(以及与其他节点)通信。简言之,主机100的智能nic104将中继在主机100处到达的网络流106的分组。如下面进一步描述的,由智能nic104提供的中继的类型的范围能够从不试图影响它的网络流106的基本通过逻辑到能够改善它的网络流106的性能的通过逻辑。

如下面还将进一步描述的,智能nic104可以实施轻量级传送协议(ltp)。ltp是以低开销提供可靠性和排序的面向连接的协议。如图1中所示出的,ltp连接108在智能nic104处开始和结束,并且因此提供不给主机100加负担的nic间通信的形式,这是因为主机100不接收或处理ltp分组。智能nic104能够它们自己主动地:(i)打开和关闭ltp连接108,(ii)生成ltp分组,以及(iii)经由ltp连接108发送和接收ltp分组。

图2示出了内联智能nic104的高级特征。如以上所提到的,智能nic104可以被内联布置在主机100与数据网络102之间(如本文所使用的,“内联”是用于标识一种类型的智能nic的术语并且不暗示这种nic当前连接到主机和网络)。具体地,智能nic104可以具有将智能nic104与其主机100物理地连接的第一物理/链路连接120。智能nic还具有连接到数据网络120的第二物理/链路连接122。物理/链路连接可以各自为任何类型的,例如以太网、纤维信道、无限带宽,等等。物理/链路连接还可以为无线介质。如参考图3所讨论的,智能nic被提供具有介质访问控制器(mac)以与物理/链路连接120、122进行对接。

为了促进网络流106的通过中继,智能nic104被提供具有一个或多个通过部件124。通过部件124提供流分组的存储和转发缓冲。通过部件124还可以包括用于改进其正在处理的流的性能的逻辑。如下面进一步描述的,通过部件124能够使用各种因素来改进流的性能,包括例如显式拥塞通知(ecn)、流的分类(例如,有损的和无损的)、关于网络102的状态的信息、流它们本身的特征,等等。如下面还描述的,可以采取各种动作来影响流的行为,例如将分组插入到流中,将优先级流控制(pfc)标记插入到流分组中,对流进行暂停或节流,流分组的随机早期丢弃(red),等等。

由应用用于交换数据的网络流106可以如下地通过智能nic进行传递。基于主机的应用126(主机100上的任何应用层代码)具有要传达的数据。数据通过操作系统api/设施(例如,流或套接字)被传递到网络栈128,其中数据被放置在被封装在(一个或多个)网络分组(例如,具有主机的ip地址作为发送者的ip分组)中的(一个或多个)传送分组(例如,tcp分组)中,(一个或多个)网络分组继而被放置在物理层帧(例如,以太网帧)的(一个或多个)有效负荷中。帧通过第一物理/链路连接120被传递到智能nic104。智能nic104剥开网络帧、存储传送分组并且可选地检查ip和/或传送分组的特征,例如ecn标记、流分类标志,等等。当缓冲的分组准备好被发送时,智能nic将它们封装在与从主机接收到的ip分组具有相同的源地址和目的地地址的ip分组中。ip分组之后针对第二物理/链路连接122被构造并且在其上被发送。事实上,由智能nic发送到数据网络的ip分组与从主机原始接收到的ip分组大致相同。

由智能nic从数据网络102接收到的流分组一般以相同的方式被转发到主机,并且主机的网络栈128类似地将应用数据提供到基于主机的应用126。值得注意的是,智能nic的内联布置和分组的双向包装传递允许智能nic和其主机使用相同的ip地址。这能够允许主机的智能nic透明地被添加或移除到主机以及到数据网络的路由。如下面进一步讨论的,ltp分组还能够使用主机的ip地址作为用于ip路由的源地址和目的地地址,即使ltp分组不是由主机发送或接收的。

为了促进nic间ltp连接108,智能nic104可以被提供具有各自的ltp模块130。ltp模块130实施ltp。ltp模块130从基于nic的应用132接收用于发送数据的请求。基于nic的应用132能够是任何类型的代码。例如,基于nic的应用132可以是支持智能nic之间的协作的应用。基于nic的应用可以是通过其他手段与基于主机的应用共享数据的分布式应用的一部分。在一个实施例中,智能nic具有与主机总线(例如,外围部件互连快速总线)连接的总线接口。主机上的软件能够通过总线将数据发送到其智能nic。智能nic上的代理通过以下与本地ltp模块130交互:请求到远程ltp模块的连接(该请求指定目的网络地址),并且将数据提供到ltp模块130,其继而将数据打包成ltp分组并且根据ltp管理ltp分组到远程ltp模块的传输。在一个实施例中,ltp连接108是单向的(而非双向的)。在另一实施例中,由ltp模块130使用的ltp分组是最终在ip分组中被路由的udp(通用数据报协议)。如下面所描述的,智能nic104能够包括fpga131或者其他形式的可编程逻辑器件。fpga131能够被配置为实施ltp模块130、通过部件124、基于nic的应用132或者智能nic的其他元件。

图3示出了智能nic104的另一视图。智能nic104包括第一mac150、第二mac152、旁路模块154、交换机156、ltp模块130以及基于nic的应用132。旁路模块154能够实施针对智能nic的流分组的基本“无能的”通过处理。交换机156能够扩展通过处理以包括流处理功能,例如将分组注入到流中,从流中移除分组,更改流行为,等等。

旁路电路154允许智能nic104在流处理可能不可用时的情况下用作基本桥。例如,当智能nic处于诸如启动状态、重置状态、错误状态等的某些状态中时。能够向旁路控制158发信号以使mac150、152经由它们各自的fifo缓冲直接通信,或者通过将分组通过交换机156传递以进行内联处理来间接通信。交换机156还能够向旁路控制158发信号(参见从交换机156至旁路控制158的虚线)。

更具体地,智能nic可以包括错误检查设施以确定旁路是否应当被激活。如果检测到错误条件,则进入旁路模式。可检测到的条件可以为:正发送尚未准备好数据(数据断续)的分组,出现两个分组结束标志而在它们之间没有分组开始标志,或者出现两个分组开始标志而在它们之间没有分组结束标志。

除了以上固定条件,智能nic还能够跟踪两个mac上的分组进入和外出计数,并且能够提供能够指示错误条件的可配置的最小每间隔分组水平。进入/外出计数器能够用于确定在任一方向上通过智能nic的业务是否已经停止流动,或者内部产生的业务是否已经停止。

图4示出了交换机156的细节(实线表示数据路径,并且虚线表示控制信号)。交换机156提供允许智能nic104将分组添加到流出网络绑定流并且防止ltp分组被发送到主机系统的特征。如果数据网络102支持若干无损类别的业务,则交换机156能够被配置为提供足够的支持以将传入无损流缓冲和暂停,从而允许其将它自己的业务插入到网络中。为了支持这一点,交换机156能够被配置为将无损业务类别(例如,远程直接存储器访问(rdma)与流的有损例如,tcp/ip)类别区分开。分组头中的字段能够用于标识分组属于哪种业务类别。

交换机156具有连接到第一mac150的第一端口170(主机侧)和连接到第二mac152的第二端口172(网络侧)。第三本地端口174将内部服务提供到智能nic,例如提供到ltp模块130。该端口能够在需要时应用反压力。在一些限制下,交换机156可以大致用作网络交换机。具体地,交换机156可以被配置为将在本地端口174上接收到的分组(例如,ltp分组)仅传递到第二端口172(而非第一端口170)。类似地,交换机156可以被设计为不将分组从第一端口170递送到本地端口174。

在内部,交换机156具有两个分组缓冲;一个用于接收(rx)第一端口170,而另一个用于接收第二端口172。分组缓冲被拆分成若干区域。每个区域对应于分组业务类别。当分组到达并且从它们的帧(例如,以太网帧)中被提取时,通过分组分类器将它们分类成可用分组类别(有损、无损等)中的一种并将它们写入到对应的分组缓冲中。如果没有缓冲空间可用于入站分组,则该分组将被丢弃。一旦分组被存储并且准备好发送,仲裁器从可用分组之中选择并且发送分组(分组可以由交换机156或智能nic的另一元件构造)。pfc插入块允许交换机156在端口170、172中的任一的发送一半时将pfc帧插入在流分组之间。

交换机156能够如下地处理无损业务类别。在第一端口170的接收一半上和在第二端口172的接收一半上到达的所有分组应当最终在端口的对应的发送(tx)一半上被发送。分组被存储并且被转发路由。优先级流控制(pfc)能够被实施以避免分组损失。对于无损业务类别,交换机156可以生成pfc消息,并且在第一端口170和第二端口172的发送部分上发送它们。在一个实施例中,当分组缓冲填满时,发送pfc消息。当缓冲已满或者将要满时,pfc消息被发送到请求该类别的业务被暂停的链路伙伴。还能够接收pfc消息并在pfc消息上采取动作。如果在第一端口170或第二端口172的接收部分上接收到针对无损业务类别的pfc控制帧,则交换机156将暂停在接收到控制帧的端口的发送部分上发送分组。分组将在内部缓冲直到缓冲满为止,在此刻pfc帧将被生成到链路伙伴。

交换机156能够如下地处理有损业务类别。有损业务(没有被分类为无损的一切)在力所能及的基础上被转发。如果遭遇拥塞,则交换机156自由丢弃分组。能够在第一端口170的接收部分上实施随机早期丢弃(red)。red能够帮助将主机生成的有损业务限定到目标带宽。有限主机带宽确保当智能nic开始引入它自己的业务时,将不存在可用带宽中的对应的突然下降,其将使用链路与tcp/ip流不良地交互。控制参数能够被提供以设置red阈值。

如能够从交换机156的特征看出的,智能nic104能够用作针对其主机的吞吐量,同时改进主机的流的性能。能够在分组遍历主机及其网络栈之前在分组或流中检测拥塞的迹象。智能nic能够比主机更快地对这些迹象做出反应。例如,如果在分组中在其到主机的路径中检测到了拥塞标记,则智能nic能够在拥塞的效应开始在主机处表现之前快速地停止或开始流,增大或减小可用带宽,对其他流/连接进行节流,等等。此外,拥塞标记等能够在它们达到主机之前从流中被移除,由此减少在主机处的流处理负载。结果,主机能够运行普通网络栈(例如,tcp/ip),并且该栈的高开销特征中的许多能够保持休眠。例如,窗口大小调节能够被最小化或避免,可能需要较少的分组缓冲,畸形的或不一致的分组的处理可能不是必需的(智能nic能够拦截并移除这样的分组,并且可能请求重传),拥塞信令能够在主机处变得不必要,分组分段或mtu调节的需要,等等。还能够透明地假定流转换,诸如压缩、加密和流表。

在解释ltp模块130之前,还将有用的是理解ltp的功能以及能够如何使用它。智能nic总体上是利用可能对于nic的最小联网功能不需要的处理硬件增强的普通nic。伴随有静态存储器中的合适的软件的通用处理器能够是用于增强nic的一种形式的处理硬件。可重配置的数字电路是由于它们的柔性和速度而方便的另一形式的处理硬件。这种可重配置的电路(本文被称为可编程逻辑器件(pld))能够为fpga或者已知的等效物。基于nic的补充处理还能够被提供具有asic(专用集成电路)、assp(专用标准部分)、soc(片上系统),等等。

智能nic(特别是具有pld的智能nic)能够被配置为用作网络上的瘦自主节点。在一个实施例中,智能nic能够被配置具有任意过程或运行单元能够在其内被实例化的环境或外壳。在任何情况下,基于nic的应用层代码(或硬件)能够由于到网络的紧密接近度和基于主机的负担(例如复杂网络栈、中断处理、资源共享,等等)的缺乏而是有利的。简言之,基于nic的应用可以能够以接近网络上最大可能的延迟和吞吐量进行通信。此外,它们可以能够由于它们对专用硬件的使用而确保性能。如以上所指出的,这样的基于nic的应用代码/电路还能够在智能nic具有与主机的总线连接的情况下以高数据速率与基于主机的软件协作。如能够看到的,智能nic其本身能够是为了其目的而生成和消耗网络业务的种类的代理。为了利用智能nic的位置和处理能力,能够有利的是提供具有用于经由数据网络直接交换数据的其自己的机制或者协议的这种智能nic。

图5示出了ltp模块130的细节。ltp模块130可以包括用于缓冲有效负荷的一个或多个数据缓冲190、传输缓冲192、连接表194、连接管理逻辑196以及数据传输逻辑198。这些元件能够用于提供智能nic之间的有效的且可靠的基于连接的通信。

连接管理逻辑196提供接口,基于nic的应用132能够利用接口打开连接。该应用将目的地网络ip地址传递到连接管理逻辑196。连接管理逻辑196在连接表194中创建新条目。该条目包括索引或句柄、目的地ip地址以及针对连接的当前序列号(最初为零)。ltp连接请求之后被发送到目的地ip。接收方智能nic通过将对应的条目添加到其连接表中来做出响应。在一个实施例中,每个智能nic还维持针对由其他智能nic打开的连接的接收连接表。尽管没有必要,但是对发送连接表和接收连接表两者的使用能够减少开销并且可能避免设备之间的单向通信对比双向通信的显式标识。

在一个实施例中,智能nic可以包括用于提供并且管理针对应用的流或虚拟信道的设施。在该实施例中,应用的连接请求还可以关于所请求的连接指定流200或将流200与所请求的连接相关联。来自流的数据在其变得可用时然后被自动传递到连接。在另一实施例中,应用其本身使用指定连接的索引/句柄将数据传递到其连接。能够通过来自应用的显式调用或者通过移除在定义的时间段内没有活动的连接的监视器来从连接表194中移除连接条目。

图6示出了用于传输由数据传输逻辑198执行的应用数据202的过程。如以上所指出的,应用数据202直接从应用或者从与连接相关联的流200被传递到ltp模块130。在前一情况下,应用传递应用数据202和连接的句柄(例如,图5中的索引“5”)。在步骤220处,接收到应用数据,并且在步骤222处,将传入数据添加到数据缓冲190中的对应缓冲中。在步骤224处,检查缓冲。在一个实施例中,当数据的下一部分(或者当前应用数据202)将缓冲填充到诸如数据网络的最大传输单元(mtu)的大小时,缓冲被认为是满的。简言之,要被传输的传入应用数据被缓冲,直到存在足够的数据来形成ltp分组。如果步骤224确定缓冲未准备好传输,则数据传输逻辑198等待额外的应用数据。为了允许以较低的延迟发送小消息,ltp模块130还可以被配置为接收指示应用数据(例如,消息)完整的标志或信号,其将触发ltp分组的传输。

假定存在足够量的缓冲的数据,则在步骤226处根据缓冲的数据形成ltp有效负荷,并且重置缓冲(传入数据被包含在有效负荷中或者空缓冲中)。在步骤228处,形成针对有效负荷的ltp分组204。在连接表194中使针对相关连接的序列号递增,并将序列号添加到新的ltp分组的头。从连接表194中的合适的条目获得目的地ip地址,并将目的地ip地址添加到ltp分组的头。在一个实施例中,ltp分组204被格式化为标准udp分组。udp分组格式仅仅是益众便利,并且udp标准其本身不需要被实施。由于ltp分组在ip分组中被路由并且仅由智能nic解析,因此任何格式可以用于ltp。如果udp分组格式被使用,则端口号可以被定义以标识ltp分组。以这种方式,智能nic能够在ltp分组与不是ltp分组的udp分组之间进行区分,并且因此不将被传递。ltp控制/开销分组(例如确认分组、连接建立、以及拆毁分组,等等)也被格式化为可识别为ltp分组(例如,具有特定端口号的udp分组)。要指出,在一个实施例中,ltp模块也形成将携带ltp分组的ip分组。也即,交换机接收完整的良好构造的且格式化的分组。

在步骤230处,将ltp分组204复制到传输缓冲192并且然后将其转发到交换机156的本地端口174,其从其第二端口172(面朝网络端口)的发送部分构造并传输ltp分组204。ltp模块提供排序可靠递送。在一个实施例中,确认(ack)ltp分组206被发送以确认接收。每个ltpack包括被确认的ltp分组的序列号。当ltp分组被确认时,能够将其从传输缓冲192中移除。在一个实施例中,否定确认(naks)和/或超时能够用于触发缓冲的ltp分组的重传。

ltp模块130还处理传入的ltp分组。当分组从交换机130到达本地端口174时,ltp模块130确定连接表194中的哪个条目与分组配对。如果不存在匹配的条目,则丢弃该分组。ltp模块130检查传入的序列号与来自连接表194条目的期望值是否匹配。如果序列号大于连接表条目,则丢弃该分组。如果序列号小于期望,则生成ltpack并丢弃分组。如果传入ltp分组的序列号与连接表194中的条目匹配,则卸载分组的有效负荷并将其传递到与连接相关联的应用或流(根据情况而定)。如果ltp模块130不能够中止有效负荷数据,则传入ltl分组能够被丢弃。一旦已经接受了传入的ltp分组,就生成ltpack并且在连接表194中使针对连接的序列号递增。在另一实施例中,入站ltp分组能够被缓冲以对无序的分组重新排序。此外,可以在(经由跳过的序列号等)检测到丢弃的分组时生成nack。

由于ltp业务由交换机156来处理,因而能够以与能够管理基于主机的网络流的分组相同的方式来对ltp分组进行分类和管理。ltp连接因此能够遵从例如pfc档和ecn。ltp业务还能够被提供具有带宽量或者服务设置的质量。未使用的头空间(在可用时)能够用于发送ecn和/或qcn/dc(利用基于延迟的拥塞检测的量化拥塞通知)信息。

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