CN107980213B - 内联网络接口卡、网络接口卡、以及调节tcp/ip流的方法 - Google Patents

内联网络接口卡、网络接口卡、以及调节tcp/ip流的方法 Download PDF

Info

Publication number
CN107980213B
CN107980213B CN201680033099.2A CN201680033099A CN107980213B CN 107980213 B CN107980213 B CN 107980213B CN 201680033099 A CN201680033099 A CN 201680033099A CN 107980213 B CN107980213 B CN 107980213B
Authority
CN
China
Prior art keywords
nic
flow
tcp
packets
network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680033099.2A
Other languages
English (en)
Other versions
CN107980213A (zh
Inventor
A·考尔菲尔德
E·钟
D·伯格
D·邱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN107980213A publication Critical patent/CN107980213A/zh
Application granted granted Critical
Publication of CN107980213B publication Critical patent/CN107980213B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/122Avoiding congestion; Recovering from congestion by diverting traffic away from congested entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0882Utilisation of link capacity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/31Flow control; Congestion control by tagging of packets, e.g. using discard eligibility [DE] bits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Abstract

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

Description

内联网络接口卡、网络接口卡、以及调节TCP/IP流的方法
背景技术
数据网络化涉及硬件和软件。在软件方面,网络化协议通常针对当前或近期硬件能力而进行设计。协议通常在网络化硬件改进的同时变得适应广泛。处理器变得更有效且有能力,并且通信介质获得可靠性和容量。随着时间过去,在过去设计的网络化协议可能变得不太适合于当前可用的硬件。例如,传送协议可能具有用于确保可靠性、对拥塞的响应以及按序递送的机制。这种机制通常不太适合于新的类型的网络。而且,为了维持连续的网络间可操作,较老的协议修改起来是不太实际的。存在对能够将网络化技术中的改进转化成可能较老的协议的总体性能中的改进而无需改变这些协议或它们现有的实现的技术的需要。
此外,网络化硬件的一些能力尚未得到完全地认识和意识。所谓的智能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-line NIC)的特征。智能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被提供具有各自的智能NIC 104。主机100可以具有它们自己的NIC(未示出),并且智能NIC 104(其还被称为“内联NIC”)被配置为中继在主机NIC与数据网络102之间的网络流106。网络流106可以例如为传输控制协议(TCP)流。智能NIC 104能够经由介质/物理链路105与数据网络102交换网络分组,并且能够经由到主机NIC的介质/物理链路(未示出)与它们各自的主机100交换网络分组。如图1所示,主机100能够使用所中继的网络流106彼此(以及与其他节点)通信。简言之,主机100的智能NIC 104将中继在主机100处到达的网络流106的分组。如下面进一步描述的,由智能NIC 104提供的中继的类型的范围能够从不试图影响它的网络流106的基本通过逻辑到能够改善它的网络流106的性能的通过逻辑。
如下面还将进一步描述的,智能NIC 104可以实施轻量级传送协议(LTP)。LTP是以低开销提供可靠性和排序的面向连接的协议。如图1中所示出的,LTP连接108在智能NIC104处开始和结束,并且因此提供不给主机100加负担的NIC间通信的形式,这是因为主机100不接收或处理LTP分组。智能NIC 104能够它们自己主动地:(i)打开和关闭LTP连接108,(ii)生成LTP分组,以及(iii)经由LTP连接108发送和接收LTP分组。
图2示出了内联智能NIC 104的高级特征。如以上所提到的,智能NIC 104可以被内联布置在主机100与数据网络102之间(如本文所使用的,“内联”是用于标识一种类型的智能NIC的术语并且不暗示这种NIC当前连接到主机和网络)。具体地,智能NIC 104可以具有将智能NIC 104与其主机100物理地连接的第一物理/链路连接120。智能NIC还具有连接到数据网络120的第二物理/链路连接122。物理/链路连接可以各自为任何类型的,例如以太网、纤维信道、无限带宽,等等。物理/链路连接还可以为无线介质。如参考图3所讨论的,智能NIC被提供具有介质访问控制器(MAC)以与物理/链路连接120、122进行对接。
为了促进网络流106的通过中继,智能NIC 104被提供具有一个或多个通过部件124。通过部件124提供流分组的存储和转发缓冲。通过部件124还可以包括用于改进其正在处理的流的性能的逻辑。如下面进一步描述的,通过部件124能够使用各种因素来改进流的性能,包括例如显式拥塞通知(ECN)、流的分类(例如,有损的和无损的)、关于网络102的状态的信息、流它们本身的特征,等等。如下面还描述的,可以采取各种动作来影响流的行为,例如将分组插入到流中,将优先级流控制(PFC)标记插入到流分组中,对流进行暂停或节流,流分组的随机早期丢弃(RED),等等。
由应用用于交换数据的网络流106可以如下地通过智能NIC进行传递。基于主机的应用126(主机100上的任何应用层代码)具有要传达的数据。数据通过操作系统API/设施(例如,流或套接字)被传递到网络栈128,其中数据被放置在被封装在(一个或多个)网络分组(例如,具有主机的IP地址作为发送者的IP分组)中的(一个或多个)传送分组(例如,TCP分组)中,(一个或多个)网络分组继而被放置在物理层帧(例如,以太网帧)的(一个或多个)有效负荷中。帧通过第一物理/链路连接120被传递到智能NIC 104。智能NIC 104剥开网络帧、存储传送分组并且可选地检查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,智能NIC 104可以被提供具有各自的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(通用数据报协议)。如下面所描述的,智能NIC 104能够包括FPGA 131或者其他形式的可编程逻辑器件。FPGA 131能够被配置为实施LTP模块130、通过部件124、基于NIC的应用132或者智能NIC的其他元件。
图3示出了智能NIC 104的另一视图。智能NIC 104包括第一MAC 150、第二MAC152、旁路模块154、交换机156、LTP模块130以及基于NIC的应用132。旁路模块154能够实施针对智能NIC的流分组的基本“无能的”通过处理。交换机156能够扩展通过处理以包括流处理功能,例如将分组注入到流中,从流中移除分组,更改流行为,等等。
旁路电路154允许智能NIC 104在流处理可能不可用时的情况下用作基本桥。例如,当智能NIC处于诸如启动状态、重置状态、错误状态等的某些状态中时。能够向旁路控制158发信号以使MAC 150、152经由它们各自的FIFO缓冲直接通信,或者通过将分组通过交换机156传递以进行内联处理来间接通信。交换机156还能够向旁路控制158发信号(参见从交换机156至旁路控制158的虚线)。
更具体地,智能NIC可以包括错误检查设施以确定旁路是否应当被激活。如果检测到错误条件,则进入旁路模式。可检测到的条件可以为:正发送尚未准备好数据(数据断续)的分组,出现两个分组结束标志而在它们之间没有分组开始标志,或者出现两个分组开始标志而在它们之间没有分组结束标志。
除了以上固定条件,智能NIC还能够跟踪两个MAC上的分组进入和外出计数,并且能够提供能够指示错误条件的可配置的最小每间隔分组水平。进入/外出计数器能够用于确定在任一方向上通过智能NIC的业务是否已经停止流动,或者内部产生的业务是否已经停止。
图4示出了交换机156的细节(实线表示数据路径,并且虚线表示控制信号)。交换机156提供允许智能NIC 104将分组添加到流出网络绑定流并且防止LTP分组被发送到主机系统的特征。如果数据网络102支持若干无损类别的业务,则交换机156能够被配置为提供足够的支持以将传入无损流缓冲和暂停,从而允许其将它自己的业务插入到网络中。为了支持这一点,交换机156能够被配置为将无损业务类别(例如,远程直接存储器访问(RDMA)与流的有损例如,TCP/IP)类别区分开。分组头中的字段能够用于标识分组属于哪种业务类别。
交换机156具有连接到第一MAC 150的第一端口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的特征看出的,智能NIC 104能够用作针对其主机的吞吐量,同时改进主机的流的性能。能够在分组遍历主机及其网络栈之前在分组或流中检测拥塞的迹象。智能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被发送以确认接收。每个LTP ACK包括被确认的LTP分组的序列号。当LTP分组被确认时,能够将其从传输缓冲192中移除。在一个实施例中,否定确认(NAKS)和/或超时能够用于触发缓冲的LTP分组的重传。
LTP模块130还处理传入的LTP分组。当分组从交换机130到达本地端口174时,LTP模块130确定连接表194中的哪个条目与分组配对。如果不存在匹配的条目,则丢弃该分组。LTP模块130检查传入的序列号与来自连接表194条目的期望值是否匹配。如果序列号大于连接表条目,则丢弃该分组。如果序列号小于期望,则生成LTP ACK并丢弃分组。如果传入LTP分组的序列号与连接表194中的条目匹配,则卸载分组的有效负荷并将其传递到与连接相关联的应用或流(根据情况而定)。如果LTP模块130不能够中止有效负荷数据,则传入LTL分组能够被丢弃。一旦已经接受了传入的LTP分组,就生成LTP ACK并且在连接表194中使针对连接的序列号递增。在另一实施例中,入站LTP分组能够被缓冲以对无序的分组重新排序。此外,可以在(经由跳过的序列号等)检测到丢弃的分组时生成NACK。
由于LTP业务由交换机156来处理,因而能够以与能够管理基于主机的网络流的分组相同的方式来对LTP分组进行分类和管理。LTP连接因此能够遵从例如PFC档和ECN。LTP业务还能够被提供具有带宽量或者服务设置的质量。未使用的头空间(在可用时)能够用于发送ECN和/或QCN/DC(利用基于延迟的拥塞检测的量化拥塞通知)信息。

Claims (20)

1.一种用于处理符合传送协议的网络流的内联网络接口卡(NIC),所述内联NIC包括:
第一介质访问控制器(MAC),其用于:经由第一物理介质连接到主机的NIC,经由所述第一物理介质向所述NIC传输出站第一物理层帧,以及经由所述第一物理介质从所述NIC接收入站第一物理层帧;
第二MAC,其用于:经由第二物理介质连接到网络,经由所述第二物理介质向所述网络传递出站第二物理层帧,以及经由所述第二物理介质从所述网络接收入站第二物理层帧;
处理硬件,其被配置为:通过以下来提供在所述主机与所述网络之间的所述网络流的分组的通过传输处理:
(i)生成所述出站第二物理层帧以包含来自所述入站第一物理层帧的分组,将所生成的所述出站第二物理层帧缓冲到第一缓冲器,以及将缓冲的所述出站第二物理层帧从所述第二MAC传输到所述第二物理介质,
(ii)生成所述出站第一物理层帧以包含来自所述入站第二物理层帧的分组,将所生成的所述出站第一物理层帧缓冲到第二缓冲器,以及将缓冲的所述出站第一物理层帧从所述第一MAC传输到所述第一物理介质,以及
所述处理硬件还被配置为:通过以下来提供用于所述流的拥塞控制:
(i)在每流的基础上监视所述网络流以确定哪些流正在经历拥塞,所述监视包括通过所述第一缓冲器和/或第二缓冲器来对分组进入和/或分组外出进行计数;以及
(ii)根据所述监视,对被确定为正在经历拥塞的所述流执行拥塞控制动作,所述拥塞控制动作包括以下一项或多项:对来自所述第一缓冲器和/或第二缓冲器的所述传输进行节流,引起拥塞控制消息并且将所述拥塞控制消息插入到所述流中,或者在所述通过传输处理期间将拥塞控制指示符插入到所述流的所述分组中。
2.根据权利要求1所述的内联NIC,其中所述传送协议包括传输控制协议(TCP),并且其中所述主机实现所述传送协议以处理从所述第一MAC发送的所述分组。
3.根据权利要求1所述的内联NIC,其中所述拥塞的标记包括显式拥塞控制(ECN)标记。
4.根据权利要求1所述的内联NIC,其中所述监视所述第一缓冲器和/或所述第二缓冲器包括:对去往/来自所述第一缓冲器和/或所述第二缓冲器的分组或帧的进入或外出进行计数。
5.根据权利要求1所述的内联NIC,其中所述拥塞控制动作包括:从所述网络流移除拥塞控制标记。
6.根据权利要求1所述的内联NIC,其中所述拥塞控制动作包括:回送拥塞标记,并且从要被转发到所述主机的分组移除对应的拥塞标记。
7.根据权利要求1所述的内联NIC,其中所述处理硬件还被配置为对所述网络流的分组实施随机早期丢弃。
8.根据权利要求1所述的内联NIC,其中所述拥塞控制动作包括:传输以太网优先级流控制(PFC)帧或以太网暂停帧。
9.一种网络接口卡(NIC),其用于中继主机与网络之间的因特网协议(IP)流,所述NIC包括:
第一介质访问控制器(MAC);
第二MAC;
控制电路,其被配置为通过以下来存储并且向所述网络和向所述主机转发所述IP流的IP分组:
(i)从所述第一MAC传输第一帧,所述第一帧包含从由所述第二MAC接收到的第二帧中提取的IP分组,以及
(ii)从所述第二MAC传输第三帧,所述第三帧包含从由所述第一MAC接收到的第四帧中提取的IP分组;以及
其中所述控制电路还被配置为通过监视所述IP流来控制所述IP流,以检测拥塞指示符并且根据所述拥塞指示符来调节所述IP流的分组传输,其中所述控制电路被配置为通过将拥塞控制标记插入到所述IP流中的一个或多个中来调节所述分组传输。
10.根据权利要求9所述的NIC,其中监视所述IP流包括检测拥塞。
11.根据权利要求10所述的NIC,其中检测拥塞包括检测由所述网络插入到IP流中的拥塞标记,并且其中所述调节包括对所述IP流进行节流。
12.根据权利要求9所述的NIC,其中所述控制电路被配置为通过监视相应IP流的队列来执行对所述IP流的所述监视。
13.根据权利要求9所述的NIC,其中所述控制电路被配置为在IP流的类别之间进行区分并根据所述IP流的类别来调节所述IP流。
14.根据权利要求13所述的NIC,其中所述类别包括有损类别和无损类别,并且其中所述控制电路还被配置为:检测具有无损类别的IP流的缓冲器何时基本上是满的,并且作为响应,传输基于优先级的流控制帧,所述基于优先级的流控制帧指示所述无损类别的IP流上要被暂停的业务。
15.根据权利要求13所述的NIC,其中控制电路还被配置为检测何时在所述第一MAC或所述第二MAC上接收到第一流控制帧,确定哪个IP流对应于所述第一流控制帧,并且作为响应,停止针对所确定的所述IP流的传输,直到对应的缓冲器基本上是满的。
16.根据权利要求15所述的NIC,其中所述控制电路还被配置为:响应于确定所述缓冲器基本上是满的,传输第二流控制帧,所述第二流控制帧使得远程节点恢复针对所确定的所述IP流的传输。
17.根据权利要求9所述的NIC,其中所述控制电路至少部分地包括可编程逻辑设备。
18.一种调节由内联网络接口卡(NIC)执行的TCP/IP流的方法,所述方法包括:
从主机的NIC接收所述TCP/IP流的第一TCP分组并且将所述第一TCP分组传输到网络,所述内联NIC包括第一MAC和第二MAC,所述第一TCP分组通过所述内联NIC的第一MAC与所述主机的所述NIC之间的第一物理介质连接而被接收;
从所述网络接收所述TCP/IP流的第二TCP分组并且将所述第二TCP分组传输到所述主机的所述NIC,所述第二TCP分组通过所述内联NIC的第二MAC与所述网络之间的第二直接物理介质连接而被接收;
基于接收到的所述第一TCP分组和所述第二TCP分组,监视所述第一TCP/IP流和所述第二TCP/IP流和/或所述第一TCP分组和所述第二TCP分组的一个或多个特征;以及
基于所述TCP/IP流的被监视的特征已经被确定为满足条件,对TCP/IP流进行标识,并且基于对所述TCP/IP流进行所述标识,发起修改所述TCP/IP流如何被传输和/或被接收的动作。
19.根据权利要求18所述的方法,其中所述特征对应于拥塞,并且所述动作解决所述拥塞的原因。
20.根据权利要求19所述的方法,其中所述监视包括对针对TCP/IP流的所发送的TCP/IP分组和接收到的TCP/IP分组进行计数,并且其中所述动作包括以下一项或多项:在传输所述TCP/IP分组之前修改接收到的TCP/IP分组,将分组插入到TCP/IP流中,从TCP/IP流丢弃分组,或者对TCP/IP流进行节流。
CN201680033099.2A 2015-06-26 2016-06-24 内联网络接口卡、网络接口卡、以及调节tcp/ip流的方法 Active CN107980213B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/752,734 US9674090B2 (en) 2015-06-26 2015-06-26 In-line network accelerator
US14/752,734 2015-06-26
PCT/US2016/039141 WO2016210210A1 (en) 2015-06-26 2016-06-24 In-line network accelerator

Publications (2)

Publication Number Publication Date
CN107980213A CN107980213A (zh) 2018-05-01
CN107980213B true CN107980213B (zh) 2021-02-09

Family

ID=56555724

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680033099.2A Active CN107980213B (zh) 2015-06-26 2016-06-24 内联网络接口卡、网络接口卡、以及调节tcp/ip流的方法

Country Status (4)

Country Link
US (2) US9674090B2 (zh)
EP (1) EP3298738A1 (zh)
CN (1) CN107980213B (zh)
WO (1) WO2016210210A1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3146682B1 (en) * 2014-07-16 2019-09-04 NEC Corporation Method and system for managing flows in a network
US10708158B2 (en) * 2015-04-10 2020-07-07 Hewlett Packard Enterprise Development Lp Network address of a computing device
US9888095B2 (en) * 2015-06-26 2018-02-06 Microsoft Technology Licensing, Llc Lightweight transport protocol
US9960953B2 (en) * 2016-01-26 2018-05-01 Gigamon Inc. Bypass switch for redundant in-line network switch appliance
US10491400B2 (en) * 2016-08-23 2019-11-26 Solarflare Communications, Inc. System and apparatus for providing network security
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
CN113709057B (zh) * 2017-08-11 2023-05-05 华为技术有限公司 网络拥塞的通告方法、代理节点、网络节点及计算机设备
US10382346B2 (en) 2017-10-24 2019-08-13 Cisco Technology, Inc. Method and device for offloading processing of data flows
US10778508B2 (en) * 2017-11-09 2020-09-15 Keysight Technologies, Inc. Bypass switch with evaluation mode for in-line monitoring of network traffic
US10785161B2 (en) * 2018-07-10 2020-09-22 Cisco Technology, Inc. Automatic rate limiting based on explicit network congestion notification in smart network interface card
CN108989235B (zh) * 2018-08-28 2022-11-01 新华三技术有限公司 一种报文转发控制方法及装置
US11051319B2 (en) * 2018-09-04 2021-06-29 Qualcomm Incorporated Techniques for low latency communications in wireless local area networks
US11150963B2 (en) * 2019-02-28 2021-10-19 Cisco Technology, Inc. Remote smart NIC-based service acceleration
US10904167B2 (en) 2019-04-25 2021-01-26 Red Hat, Inc. Incoming packet processing for a computer system
CN113728599A (zh) 2019-05-23 2021-11-30 慧与发展有限责任合伙企业 促进将包高效地注入网络接口控制器(nic)中的输出缓冲区中的系统和方法
US11669468B2 (en) 2019-06-28 2023-06-06 Hewlett Packard Enterprise Development Lp Interconnect module for smart I/O
US11593140B2 (en) 2019-06-28 2023-02-28 Hewlett Packard Enterprise Development Lp Smart network interface card for smart I/O
DE102020113346A1 (de) 2019-07-02 2021-01-07 Hewlett Packard Enterprise Development Lp Bereitstellen von service-containern in einer adaptervorrichtung
US11296988B2 (en) 2019-11-14 2022-04-05 Mellanox Technologies, Ltd. Programmable congestion control communication scheme
CN111031011B (zh) * 2019-11-26 2020-12-25 中科驭数(北京)科技有限公司 Tcp/ip加速器的交互方法和装置
CN111107061A (zh) * 2019-11-30 2020-05-05 浪潮(北京)电子信息产业有限公司 一种智能网卡及其通讯方法
CN114070794A (zh) * 2020-08-06 2022-02-18 迈络思科技有限公司 可编程拥塞控制通信方案
US11503140B2 (en) 2020-12-11 2022-11-15 Western Digital Technologies, Inc. Packet processing by programmable network interface
CN113050703B (zh) * 2021-02-05 2022-11-18 新华三技术有限公司 一种流量控制方法及设备
US20230041806A1 (en) * 2021-08-04 2023-02-09 Oracle International Corporation Location-independent programming data plane for packet processing
US11888753B2 (en) * 2021-08-10 2024-01-30 Mellanox Technologies, Ltd. Ethernet pause aggregation for a relay device
US20220231991A1 (en) * 2022-03-28 2022-07-21 Intel Corporation Method, system and apparatus for inline decryption analysis and detection
US11902106B2 (en) 2022-06-27 2024-02-13 Dell Products L.P. Client isolation internal/external fabric LCS provisioning system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1695130A (zh) * 2002-08-30 2005-11-09 英特尔公司 网状结构内的多端口高速串行结构互连芯片
CN1953351A (zh) * 2005-10-21 2007-04-25 国际商业机器公司 用于数据传输的自适应控制的方法和装置
CN101321189A (zh) * 2007-06-07 2008-12-10 国际商业机器公司 基于发送方的流量控制的随机控制优化
CN102725995A (zh) * 2010-01-28 2012-10-10 英特尔公司 至少部分地在节点之间建立安全通信信道以至少部分地允许节点之间至少部分地执行的经加密通信的检查
CN103354989A (zh) * 2010-08-12 2013-10-16 思杰系统有限公司 用于中间装置中的多级服务质量分类的系统和方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7076568B2 (en) 1997-10-14 2006-07-11 Alacritech, Inc. Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
CA2237264A1 (en) 1998-05-08 1999-11-08 Northern Telecom Limited Receiver based congestion control
US7058723B2 (en) * 2000-03-14 2006-06-06 Adaptec, Inc. Congestion control for internet protocol storage
US20020107949A1 (en) * 2001-02-08 2002-08-08 International Business Machines Corporation Polling for and transfer of protocol data units in a data processing network
US7143159B1 (en) 2001-03-12 2006-11-28 3Com Corporation Method for correlating and presenting network management data
US7587587B2 (en) 2002-12-05 2009-09-08 Broadcom Corporation Data path security processing
JP4174054B2 (ja) * 2003-01-28 2008-10-29 テレフオンアクチーボラゲット エル エム エリクソン(パブル) さまざまな輻輳要因を知らせる、パケットネットワークにおける輻輳通知のための方法及び装置
US8353003B2 (en) 2004-10-01 2013-01-08 Exelis Inc. System and method for controlling a flow of data a network interface controller to a host processor
US7620057B1 (en) 2004-10-19 2009-11-17 Broadcom Corporation Cache line replacement with zero latency
US20060203730A1 (en) * 2005-03-14 2006-09-14 Zur Uri E Method and system for reducing end station latency in response to network congestion
US8311059B2 (en) * 2005-09-07 2012-11-13 Emulex Design & Manufacturing Corporation Receive coalescing and automatic acknowledge in network interface controller
US7746901B2 (en) 2006-12-14 2010-06-29 Oracle America, Inc. Method and system for offloaded transport layer protocol switching
US7843821B2 (en) 2006-12-21 2010-11-30 Oracle America, Inc. Method, apparatus and program product to use factory-defined multiple MAC addresses for virtual NICS
US7904629B2 (en) * 2007-10-02 2011-03-08 NVON, Inc. Virtualized bus device
US8644157B2 (en) 2011-03-28 2014-02-04 Citrix Systems, Inc. Systems and methods for handling NIC congestion via NIC aware application
CN103249090A (zh) 2012-02-14 2013-08-14 华为技术有限公司 一种缓存状态报告方法及装置
KR101745846B1 (ko) * 2012-05-02 2017-06-12 인텔 코포레이션 다수의 미디어 액세스 제어기들을 이용하는 데이터의 패킷 프로세싱
US8861538B2 (en) 2012-09-06 2014-10-14 Unisys Corporation Throttling for fast data packet transfer operations
US9602334B2 (en) 2013-01-22 2017-03-21 International Business Machines Corporation Independent network interfaces for virtual network environments
US9178815B2 (en) 2013-03-05 2015-11-03 Intel Corporation NIC flow switching
US9166925B2 (en) 2013-04-05 2015-10-20 International Business Machines Corporation Virtual quantized congestion notification
US9967199B2 (en) 2013-12-09 2018-05-08 Nicira, Inc. Inspecting operations of a machine to detect elephant flows

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1695130A (zh) * 2002-08-30 2005-11-09 英特尔公司 网状结构内的多端口高速串行结构互连芯片
CN1953351A (zh) * 2005-10-21 2007-04-25 国际商业机器公司 用于数据传输的自适应控制的方法和装置
CN101321189A (zh) * 2007-06-07 2008-12-10 国际商业机器公司 基于发送方的流量控制的随机控制优化
CN102725995A (zh) * 2010-01-28 2012-10-10 英特尔公司 至少部分地在节点之间建立安全通信信道以至少部分地允许节点之间至少部分地执行的经加密通信的检查
CN103354989A (zh) * 2010-08-12 2013-10-16 思杰系统有限公司 用于中间装置中的多级服务质量分类的系统和方法

Also Published As

Publication number Publication date
US20160380896A1 (en) 2016-12-29
CN107980213A (zh) 2018-05-01
US10129153B2 (en) 2018-11-13
US9674090B2 (en) 2017-06-06
US20170250914A1 (en) 2017-08-31
EP3298738A1 (en) 2018-03-28
WO2016210210A1 (en) 2016-12-29

Similar Documents

Publication Publication Date Title
CN107980213B (zh) 内联网络接口卡、网络接口卡、以及调节tcp/ip流的方法
CN107787570B (zh) 网络接口卡和使能网络接口卡间通信的方法
US11863431B2 (en) System and method for facilitating fine-grain flow control in a network interface controller (NIC)
JP6236933B2 (ja) 中継装置
US9961585B2 (en) Network-side buffer management
CN110061923B (zh) 流量控制方法、装置、交换机、发送端服务器及介质
JP5966092B2 (ja) コンテンツベースの過負荷保護
EP3361389A1 (en) Tcp processing for devices
US10326696B2 (en) Transmission of messages by acceleration components configured to accelerate a service
EP3319297B1 (en) Network interface device and host processing device
CN114826496A (zh) 乱序分组处理
RU2715016C1 (ru) Передающее устройство, способ, программа и носитель записи
Chimata Path of a packet in the linux kernel stack
US20240089219A1 (en) Packet buffering technologies
US20240129235A1 (en) Management of packet transmission and responses

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant