CN102792638B - 以避免通信协议栈卷入的方式向设备发出至少一部分分组有效载荷的网络控制器电路 - Google Patents

以避免通信协议栈卷入的方式向设备发出至少一部分分组有效载荷的网络控制器电路 Download PDF

Info

Publication number
CN102792638B
CN102792638B CN201180012920.XA CN201180012920A CN102792638B CN 102792638 B CN102792638 B CN 102792638B CN 201180012920 A CN201180012920 A CN 201180012920A CN 102792638 B CN102792638 B CN 102792638B
Authority
CN
China
Prior art keywords
payload
network controller
controller circuit
another
partially
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
CN201180012920.XA
Other languages
English (en)
Other versions
CN102792638A (zh
Inventor
R·王
T-Y·泰
C·麦西奥科
R·S·亚瓦特卡
L·克里西那莫西
M·J·艾斯皮格
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN102792638A publication Critical patent/CN102792638A/zh
Application granted granted Critical
Publication of CN102792638B publication Critical patent/CN102792638B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/22Parsing or analysis of headers
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • 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]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

实施例可包括包含在第一节点中的网络控制器。该节点可通信耦合于网络并且可包括主机处理器以执行操作系统环境。操作系统环境可至少部分地包括通信协议栈和应用。电路可至少部分地从网络接收分组。分组可至少部分地包括头部和有效载荷。有效载荷的至少一部分可与应用相关联。电路可将头部的至少一部分发送到栈。电路可按避免栈卷入的方式将有效载荷的至少一部分发送到目的地设备。目的地设备可至少部分地由应用指定。很多替换、变型和修改是可能的。

Description

以避免通信协议栈卷入的方式向设备发出至少一部分分组有效载荷的网络控制器电路
技术领域
本公开涉及以避免通信协议栈卷入的方式向目的地设备发出至少一部分分组有效载荷的网络控制器电路,例如用于数据传送同时仍执行一个或多个通信协议控制操作。
背景技术
在一个常规计算配置中,第一主机计算机中的网络输入/输出(I/O)设备从第二主机计算机接收分组。该设备将所接收的分组存储在第一主机计算机中的主机存储器中。第一主机计算机中的主机中央处理器单元(CPU)执行的通信协议栈处理分组的头部并将分组的有效载荷复制到存储器中的用户空间。由CPU执行的应用处理有效载荷并将来自有效载荷的数据发送到第一主机计算机的一个或多个I/O设备。这种I/O设备可包括主机存储、音频和/或显示设备。
以上类型的分组处理包括从第一主机计算机中的存储器和向其传输并复制分组数据所涉及的大量操作。这些操作可施加不期望的大量CPU处理开销,消耗不期望的大量CPU处理带宽,降低CPU的性能,以及增加CPU的功耗和发热。此外,这些操作可导致第一主机计算机的实际分组处理吞吐量显著低于网络的数据传送速率。
在其它的常规配置中,网络I/O设备执行通信协议栈的全部副本,以便准许所有的通信协议栈的处理从CPU卸载到网络I/O设备。不幸的是,这种常规配置显著增加第一主机计算机的成本。
在又一个常规配置中,栈被修改以减少CPU的处理负担。不幸的是,对栈的修改可导致协议、技术生态系和操作系统兼容性问题。
附图说明
随着进行以下详细描述并参考附图,实施例的特征和优点将变得显而易见,其中类似的附图标记描绘类似的部件,其中:
图1示出系统实施例。
图2示出实施例中的特征。
图3示出实施例中的特征。
图4示出实施例中的操作。
图5示出实施例中的操作。
虽然将参考说明性实施例继续进行以下详细描述,但该其替代物、修改以及变型对本领域技术人员而言将显而易见。因此,旨在宽泛地考虑所要求保护的主题。
详细描述
图1示出系统实施例100。系统100可包括节点10,该节点10可经由一个或多个无线和/或有线网络50通信耦合到节点20。节点10和20中的每一个可在地理上彼此远离。在该实施例中,术语“主机计算机”、“主机”、“服务器”、“客户机”、“网络节点”和“节点”可互换地使用,并且可表示,例如但并不限于,一个或多个终端站、移动因特网设备、智能电话、媒体设备、输入/输出(I/O)设备、平板计算机、装置、中间站、网络接口、客户机、服务器和/或其部分。在该实施例中,“网络”可以是或包括至少部分地准许、促进和/或允许两个或更多实体通信耦合在一起的任何机制、手段、形态和/或其一部分。而且在本实施例中,如果第一实体能够向第二实体发送一个或多个命令和/或数据和/或从第二实体接收一个或多个命令和/或数据,则第一实体可“通信耦合”到第二实体。在该实施例中,“无线网络”可表示至少部分地准许至少两个实体至少部分地无线通信耦合的网络。在该实施例中,“有线网络”可表示至少部分地准许至少两个实体至少部分地非无线通信耦合的网络。在该实施例中,数据和信息可互换使用,并且可以是或包括一个或多个命令(例如,一个或多个程序指令),和/或一个或多个这种命令可以是或包括数据和/或信息。而且在该实施例中,“指令”可包括数据和/或一个或多个命令。
节点10可包括电路板(CB)74、电路卡(CC)75和设备124。在该实施例中,CB 74可包括例如系统主板,该系统主板经由未示出的总线连接器/插槽系统物理且通信耦合到CC 75。CB 74可包括一个或多个单核和/或多核主机处理器(HP)12以及计算机可读/可写存储器21。尽管在图中未示出,然而CB 74也可包括一个或多个芯片组(包括例如存储器和/或输入/输出控制器电路)。一个或多个主机处理器12可经由一个或多个芯片组通信耦合到存储器21、CC75和/或设备124。
CC 75可包括网络控制器电路(NCC)118。NCC 118和/或CC 75可直接通信耦合到设备124。作为替代或附加,NCC 118和/或CC 75可经由一个或多个未示出的芯片组通信耦合到设备124。
作为替代或附加,尽管在图中未示出,然而NCC 118和/或其功能和组件中的一些或全部可包含在例如CB 74中(例如,在一个或多个主机处理器12和/或一个或多个未示出的芯片组中)。还作为替换,一个或多个主机处理器12、存储器21、一个或多个未示出的芯片组和/或其功能和/或组件的一些或全部可包含在例如NCC 118和/或CC75中。在不背离该实施例的情况下,很多其它替代是可能的。
设备124可以是或包括大容量存储(MS)和/或一个或多个I/O设备62。在该实施例中,术语“设备”和“I/O设备”可互换使用,并且可表示至少部分地能够接收、处理和/或发射数据和/或一个或多个命令的电路。例如,在该实施例中,一个或多个I/O设备62可至少部分地包括一个或多个媒体、音频、视频、安全、显示和/或成像设备。而且在该实施例中,“存储”、“存储设备”、“大容量存储”和“大容量存储设备”可互换使用以表示可分别向其存储数据和/或从其检索数据的一个或多个装置。在该实施例中,大容量存储60可包括能够进行非易失性数据存储的存储。例如,在该实施例中,大容量存储60可包括但不限于一个或多个非易失性磁、光和/或半导体存储设备。
尽管在图中未示出,节点20可包括节点10的相应组件和/或功能的全部或部分。如本文中使用的,“电路”可包括例如单个或任意组合形式的模拟电路、数字电路、硬连线电路、可编程电路、协处理器电路、状态机电路和/或可包括程序指令的存储器,该程序指令可由可编程电路执行。而且在本实施例中,处理器、处理器核、核及控制器各自可包括能够至少部分地执行一种或多种算法和/或逻辑操作的相应电路,诸如一个或多个相应的中央处理单元。而且在该实施例中,芯片组可包括能够至少部分地通信耦合一个或多个主机处理器、存储、大容量存储、一个或多个节点和/或存储器的电路。尽管在图中未示出,但节点10可包括图形用户界面系统(例如可至少部分地包括一个或多个设备124和/或62或至少部分地包含于其中)。未示出的图形用户界面系统可包括例如相应的键盘、指示设备和显示系统,其可准许人类用户将命令输入到节点10、节点20和/或系统100并监视节点10、节点20和/或系统100的操作。
存储器21可包括以下类型的存储器中的一种或多种:半导体固件存储器、可编程存储器、非易失性存储器、只读存储器、电可编程存储器、随机存取存储器、闪存、磁盘存储器、光盘存储器和/或其它或以后开发的计算机可读和/或可写存储器。一个或多个机器可读程序指令可存储在存储器21和/或NCC118。在节点10的操作中,这些指令可由一个或多个主机处理器12和/或NCC118访问和执行。当由一个或多个主机处理器12执行时,该一个或多个指令可导致操作系统环境(OSE)30至少部分地由一个或多个主机处理器12执行,并且至少部分地驻留在存储器21中。而且当由一个或多个主机处理器12和/或NCC 118执行时,该一个或多个指令可导致一个或多个主机处理器12、NCC 118、OES 30和/或其一个或多个组件执行本文中描述为由系统100的这些组件执行的操作。
在该实施例中,操作系统环境可以是或包括一个或多个操作系统、一个或多个通信协议栈、一个或多个应用、一个或多个接口、一个或多个程序、一个或多个相关联的进程和/或其一个或多个部分中的一个或多个部分。例如,在该实施例中,OSE 30可包括例如操作系统32、一个或多个应用42和/或通信协议栈31。在该实施例中,栈31、一个或多个应用42和/或操作系统32可至少部分地包括相互不同的进程。作为替换,而不背离该实施例,操作系统32可包括一个或多个应用42和/或栈31或者反之亦然。
在该实施例中,实体的一部分可包括实体的全部或部分。而且在该实施例中,进程、程序、驱动器、操作系统和应用可互换地使用,且可包括一个或多个程序指令和/或至少部分地由一个或多个程序指令的执行而导致。在该实施例中,通信协议栈可包括协议处理中至少部分地涉及的一个或多个进程。在该实施例中,协议处理可至少部分地涉及接收、发射、存储、转换、格式变换和/或修改至少一个分组的至少一部分。而且在该实施例中,分组可包括一个或多个码元和/或值。
NCC 118可根据一种或多种通信协议经由一个或多个网络50与一个或多个节点20交换数据和/或命令。例如,在该实施例中,该一种或多种协议可与例如以太网协议、传输控制协议/网际协议(TCP/IP)协议、用户数据报协议(UDP)和/或实时协议/实时传输控制协议(RTP/RTCP)兼容。
可在系统100中使用的以太网协议可服从2000年10月20日出版的电气与电子工程师协会(IEEE)标准802.3,2000版本中描述的协议或与之兼容。可在系统100中使用的TCP/IP协议可服从1981年9月出版的因特网工程任务组(IETF)请求评议(RFC)791和793中描述的协议或与之兼容。可在系统100中使用的UDP协议可服从1980年8月28日出版的IETF RFC 768中描述的协议或与之兼容。可在系统100中使用的RTP/RTCP协议可服从2003年7月出版的IETF RFC 3550中和/或2009年4月出版的IETF RFC 5506中描述的一种或多种协议或与之兼容。尽管具体参考TCP而对系统100进行以下描述,然而很多不同、附加和/或其它协议(包括例如以上所述的那些协议)可用于这种数据和/或命令交换,而不背离该实施例(例如,上述和/或其它协议的较早和/或较晚开发的版本)。
现在特别针对图1和5进行具体参考。图5示出可在系统100中执行的操作600。在系统100的操作中,NCC 118和节点20可经由一个或多个网络50在它们之间建立一个或多个会话51。一个或多个分组90可经由一个或多个会话51和/或一个或多个网络50从节点20发送到NCC 118。如操作602所示,NCC 118可经由一个或多个会话51从一个或多个网络50至少部分地接收一个或多个分组(P)90。在该实施例中,会话可包括至少两个实体之间数据和/命令的交换。
一个或多个分组90可包括一个或多个头部(H)52和一个或多个有效载荷(PL)55。在该实施例中,头部和有效载荷各自分别包括分组的一个或多个相应部分。例如,一个或多个头部52可以分别是或包括一个或多个TCP头部,且一个或多个有效载荷55可以分别是或包括一个或多个TCP有效载荷。
出于说明性示例的目的,在下文中具体参考涉及由NCC 188对一个或多个TCP分组的一个或多个部分(例如,序号、大小信息、校验和和/或有效载荷)的至少部分修改的操作。然而,应意识到除这些修改之外,NCC 118还可对这些TCP分组中包含和/或与这些TCP分组相关联的一个或多个其它分组(例如IP分组)的相应和/或相关部分进行相应和/或相关修改。
在该实施例中,一个或多个分组90可至少部分地与一个或多个应用42和/或一个或多个设备124相关联。例如,一个或多个有效载荷55的一个或多个部分(PT)56可以是或包括与一个或多个应用42和/或一个或多个设备124相关联的数据、去往一个或多个应用42和/或一个或多个设备124的数据、预期将至少部分地由一个或多个应用42和/或一个或多个设备124接收和/或处理的数据。而且,例如,一个或多个头部52的一个或多个部分(PT)54可以是或包括至少部分地标识一个或多个会话51、一个或多个应用42和/或一个或多个设备124的数据。
例如,在至少部分地接收一个或多个分组90之后,NCC 118可至少部分地检查一个或多个头部52的一个或多个部分54。至少部分地基于该检查,NCC118可至少部分地确定一个或多个分组90是否至少部分地与一组404一个或多个预定会话(图示为406A…406N)中包含的一个或多个特定会话(例如,在图3中图示为一个或多个会话(S)406A)相关联。该确定可至少部分地基于诸如插槽标识、源和/或目的地端口、IP地址和/或一个或多个其它参数(例如,由应用确定的)之类的参数。至少部分地基于一个或多个分组90是否至少部分地与一个或多个特定会话406A相关联,NCC 118可至少部分地将一个或多个有效载荷55的一个或多个部分56发送到一个或多个预期的目的地设备124,如图3中的操作604所示。例如,一个或多个会话51可以是或包括一个或多个会话406A,NCC 118可如此确定,并且作为操作604的一部分,NCC 118可至少部分地将一个或多个部分56发送到一个或多个设备124。作为操作604的一部分,NCC 118以避免栈31卷入处理一个或多个部分56的方式(以下描述)至少部分地将一个或多个部分56发送到一个或多个设备124。
相反,NCC 118可至少部分地基于其至少部分地对一个或多个头部52的一个或多个部分54的检查来确定一个或多个分组90至少部分地与另一组414一个或多个其它会话(图示为412A...412N)中包含的一个或多个其它会话(例如,在图3中图示为一个或多个会话412A)相关联。例如,一个或多个会话51可以是或包含一个或多个会话412A。在该实施例中,组414和组404可彼此相互脱离。例如,组414可不具有与组404共用的任何元素。如果NCC 118至少部分地确定一个或多个分组90与一个或多个这种会话412A相关联,则NCC118可将一个或多个分组90(包括例如一个或多个头部52和一个或多个有效载荷55)发送到栈31。之后,栈31可处理一个或多个分组90。
至少部分地出于例如文件下载、媒体(例如,音频、视频和/或成像)流/传送和/或从节点20至节点10的IP语音传输的目的,一个或多个会话406A...406N可以是一个或多个相对持久的会话。一个或多个应用42和/或一个或多个设备124可至少部分地与一个或多个这种目的相关联、卷入在其中和/或促进一个或多个这种目的。然而,该一个或多个会话412A...412N可以不是一个或多个这种相对持久的会话。
如上所述,如果NCC 118至少部分地确定一个或多个分组90至少部分地与一个或多个会话406A相关联,则作为操作604的一部分,NCC 118可按避免栈31卷入处理一个或多个部分56的方式至少部分地将一个或多个部分56发送至一个或多个设备124。NCC 118可至少部分地通过将一个或多个部分56至少部分地存储在至少部分地与一个或多个设备124相关联和/或包含于其中的存储器501中的一个或多个位置504(参见图4)中来完成该操作,该一个或多个设备124可至少部分地与一个或多个会话406A和/或一个或多个应用42相关联。这可至少部分地经由从NCC 118至一个或多个位置504的一个或多个部分56的一个或多个直接存储器访问(DMA)传送502A…502N来实施。在该实施例中,一个或多个应用42可以预先至少部分地指定一个或多个应用42和/或一个或多个会话406A将要至少部分地与之相关联的一个或多个设备124、存储60和/或一个或多个设备62。NCC 118可将此实施,使得一个或多个部分56均不被传送到栈31。
NCC118可至少部分地将一个或多个通知506发送到一个或多个应用42以至少部分地向一个或多个应用42通知一个或多个位置504。至少部分地基于该一个或多个通知506,一个或多个应用402可至少部分地访问、处理和/或利用至少部分地存储在一个或多个位置504中的一个或多个部分56。
参考图2,代替向一个或多个应用42发送一个或多个部分56和/或一个或多个有效载荷55,NCC 118可经由栈31至少部分地将一个或多个有效载荷250发送到一个或多个应用42。在该实施例中,一个或多个有效载荷250可至少部分地与一个或多个有效载荷55和/或一个或多个部分56不同。例如,一个或多个有效载荷250可包括一个或多个虚设字节,且可具有预定的尺寸,该尺寸小于一个或多个部分56和/或一个或多个有效载荷55的尺寸。这可被完成以便防止栈31由于与一个或多个头部相关联的一个或多个有效载荷没有被发送到栈31而发信号通知错误条件。然而,如果栈31不实现一个或多个可靠的协议(例如,TCP)却相反实现不执行这种数据完整性检查的不可靠协议(例如,UDP),则NCC 118可不向栈31发送这种经修改的有效载荷。在接收一个或多个有效载荷250之后,一个或多个应用42可至少部分地忽略一个或多个有效载荷250。例如,在接收一个或多个有效载荷250之后,一个或多个应用42可简单地放弃(例如不进一步处理并准许在存储器210中覆写)一个或多个有效载荷250。
同时,至少部分地在执行操作604和/或向栈31发送一个或多个有效载荷250之后或之前,NCC 118可至少部分地向栈31发送一个或多个头部52的一个或多个部分54(参见图5中的操作606)。在向栈31至少部分地发送一个或多个头部52的一个或多个部分54之前,NCC 118可至少部分地修改TCP序号(SQN)252、TCP尺寸信息(SI)254和/或TCP检验和(CKSM)256,它们可至少部分地包含在一个或多个部分54中。当至少部分地由NCC 118向栈31发送时,一个或多个部分54可至少部分地包括由此修改的序号252、尺寸信息254和/或校验和256。
例如,序号252可至少部分地由NCC 118修改,以反映可被发送到栈31的一个或多个有效载荷250的尺寸(例如,代替与由NCC 118从一个或多个网络50接收的一个或多个分组90的一个或多个有效载荷55的尺寸相一致)以及属于先前由NCC 118发送到栈31的一个或多个部分406A的最近头部的序号。NCC 118可存储和/或维持序号转换(SNT)260,该序号转换(SNT)260可至少部分地将NCC 118经由一个或多个相应会话406A…406N接收的头部的序号映射和/或关联到NCC 118向栈31发送的经修改的头部的相应经修改的序号。因此,NCC 118可至少部分地基于SNT 260和/或一个或多个有效载荷250的尺寸修改序号252。
NCC 118可至少部分地基于经修改序号252和/或一个或多个有效载荷250的尺寸和/或为了反映经修改序号252和/或一个或多个有效载荷250的尺寸,而至少部分地修改尺寸信息254。NCC 118可至少部分地基于经修改序号252、经修改的尺寸信息254和/或一个或多个有效载荷250的尺寸和/或为了反映经修改序号252、经修改的尺寸信息254和/或一个或多个有效载荷250的尺寸,而至少部分地修改校验和256。
栈31可重新计算它从NCC 118接收的一个或多个头部52的一个或多个部分54的校验和。栈31可将重新计算的校验和与来自栈31从NCC 118接收的一个或多个部分54的经修改的校验和进行比较。栈31还可将经修改的序号和经修改的尺寸信息分别与预期的序号和预期的尺寸进行比较。可依据TCP由栈31至少部分地基于栈31从NCC 118接收的一个或多个部分54和一个或多个有效载荷250以及一个或多个会话406A的先前参数而计算预期的序号和预期的尺寸。
如果作为这些比较的结果栈31未检测到错误,则栈31可至少部分地基于其从NCC 118接收的一个或多个部分54而至少部分地生成向节点20的TCP确认(ACK)202,该确认指示节点10已经无差错地接收一个或多个分组90。栈31可至少部分地向NCC 118发送确认202。
NCC 118可确定确认202是否属于组404中的一个或多个会话(例如,一个或多个会话406A)和/或与组404中的一个或多个会话(例如,一个或多个会话406A)相关联,或者相反地,与组414中的一个或多个会话相关联。如果所接收的确认不与组404中的一个或多个会话相关联,则NCC 118可经由一个或多个网络50向节点20发送确认。
相反,如果确认202与组404中的一个或多个会话406A相关联,则NCC 118可按以下方式处理确认202。当由NCC118从栈31接收时,确认202可包括预期的TCP序号204,该预期的TCP序号204可至少部分地基于栈31先前从NCC118接收的一个或多个部分54和一个或多个有效载荷250以及一个或多个会话406A的先前参数和/或反映栈31先前从NCC 118接收的一个或多个部分54和一个或多个有效载荷250以及一个或多个会话406A的先前参数。而且,当由NCC 118从栈31接收时,确认202可包括校验和206,该校验和可至少部分地基于序号204和/或为了反映序号204而计算出。
至少部分地响应于来自栈31的确认202,NCC 118可至少部分地修改确认202中的序号204和校验和206。NCC 118可经由一个或多个网络50向节点20至少部分地发送由此修改的确认202。例如,NCC 118可至少部分地基于利用SNT 260将从栈31接收的序号204反向转换至预期由节点20接收的相应序号,而至少部分地修改序号204。NCC 118可将确认202中的序号204改变成由反向转换得到的该相应序号或包括该相应序号。NCC 118于是可至少部分地基于对序号204的这种改变和/或为了反映这种改变而重新计算和/或修改该校验和206。NCC 118于是可至少部分地将由此修改的确认202发送到节点20。
以上假设栈31执行校验和计算(例如涉及最初生成校验和206)。然而,如果这种计算被卸载到NCC 118,则NCC 118可首先生成这种校验和,而不是最初卷入栈31。
返回图3,如果NCC 118从节点20至少部分地接收一个或多个其它分组410(例如,除一个或多个分组90以外),则NCC 118可检查并确定(以先前描述的方式)至少部分地与一个或多个其它分组410相关联的一个或多个会话。在该示例中,一个或多个分组410可与一个或多个会话(例如,组414中的一个或多个会话412A)相关联,该一个或多个会话可至少部分地不同于一个或多个会话406A。一个或多个分组410可包括一个或多个头部420和一个或多个有效载荷422。在该示例中,由于一个或多个分组410与组414中的一个或多个会话412A相关联,而不是与组404中的一个或多个会话相关联,所以NCC 118可向栈31发送一个或多个头部420及一个或多个有效载荷422以供处理。然而,相反,如果一个或多个分组410已经与组404中的一个或多个会话相关联,则NCC 118将以先前结合一个或多个分组90描述的方式分别对一个或多个有效载荷422和一个或多个头部420执行操作604和606(参见图5)。
另外,NCC 118可至少部分地从节点20接收一个或多个另外的分组450。NCC 118可检查和确定(以先前描述的方式)至少部分地与一个或多个其它分组450相关联的一个或多个会话。在该示例中,如果一个或多个分组450与组404中的一个或多个会话(例如,一个或多个会话406A)相关联,则NCC 118可确定一个或多个分组450是否是一个或多个无序分组454和/或复制分组452。如果NCC 118确定一个或多个分组450是一个或多个无序分组454和/或复制分组452,则NCC 118可放弃一个或多个分组450而不在一个或多个分组450上执行操作604和/或606。有利地,这可准许基于和/或响应于栈31生成的一个或多个相关确认(并且如NCC 118以上述方式修改地),适当重构可包括一个或多个复制和/或无序分组的一个或多个TCP分段,而不涉及由NCC 118临时存储这种分组。
一个或多个会话51可实现一个或多个安全通信协议。尽管在图中未示出,但NCC 118可包括加密/解密电路,该加密/解密电路可准许NCC 118实施上述操作,既使一个或多个分组90、410和/或450依照一种或多种这样的安全协议而被加密。作为替代或附加,取决于所实现的一种或多种安全协议,NCC118能够实施上述操作而不包括这样的加密/解密电路。例如,如果一个或多个头部52未被加密,但一个或多个有效载荷被加密,则NCC 118能够实施上述操作而不包括这样的加密/解密电路。
在该实施例中,“加密”可包括一个或多个操作,该一个或多个操作至少部分地包含在从明文生成密文中、有助于和/或导致从明文生成密文。而且在该实施例中,“解密”可包括一个或多个操作,该一个或多个操作至少部分地包含在从密文生成明文中、有助于和/或导致从密文生成明文。另外,在该实施例中,“明文”可包括至少部分地解密和/或已经进行和/或目前正在进行加密和/或解密的数据。
因此,实施例可包括包含在第一节点中的网络控制器电路。该节点可通信耦合于网络并且可包括主机处理器以执行操作系统环境。操作系统环境可至少部分地包括通信协议栈和应用。电路可至少部分地从网络接收分组。分组可至少部分地包括头部和有效载荷。有效载荷的至少一部分可与应用相关联。电路可将头部的至少一部分发送到栈。电路可按避免栈卷入的方式将有效载荷的至少一部分发送到目的地设备。目的地设备可至少部分地由应用指定。
因此,在该实施例中,对于一个或多个预定/特定的会话406A,NCC 118可将一个或多个有效载荷55的一个或多个部分56发出和/或直接存储(例如,经由一个或多个DMA事务)在与一个或多个设备124相关联的一个或多个位置504中,而不卷入操作系统环境30、栈31和/或主机处理器12。有利地,在该实施例中,这可减少从存储器和向存储器传送和复制分组数据所涉及的操作的数量以及所消耗的主机存储器的量。而且,有利地,在该实施例中,这可减少主机处理器处理开销的量和所消耗的处理带宽以及主机处理器功耗和发热的量。另外,有利地,这可导致改进的分组处理吞吐量。
而且,在该实施例中,栈31可以是常规通信协议栈,且可用于一个或多个其它会话412的常规处理,并且从栈31的角度看,NCC 118与栈31之间的交互看似以常规方式实施。有利地,这可降低该实施例的成本,同时维持栈的常规协议处理、技术生态系和操作系统兼容性。

Claims (18)

1.一种在第一节点中使用的设备,包括:
包含在所述第一节点中的网络控制器电路,所述第一节点通信耦合于网络并且包括主机处理器以执行操作系统环境,所述操作系统环境至少部分地包括通信协议栈和应用,所述电路至少部分地从网络接收分组,所述分组至少部分地包括头部和有效载荷,所述电路将所述头部的至少一部分发送到所述栈,有效载荷的至少一部分与应用相关联,所述电路按避免栈卷入的方式将所述有效载荷的至少一部分发送到目的地设备,所述目的地设备至少部分地由应用指定,
其中所述网络控制器电路至少部分地确定所述分组是否与特定会话相关联,所述特定会话包含在一个或多个预定会话的组中;以及
至少部分地基于分组是否与特定会话相关联,所述网络控制器电路以避免栈卷入的方式将有效载荷的至少一部分发送到目的地设备;
所述网络控制器电路还接收与另一会话相关联的另一分组,所述另一会话包含在一个或多个相应会话的另一组中,一个或多个预定会话的所述组和所述另一组彼此相互分离;
所述另一分组包括另一头部和另一有效载荷;以及
所述网络控制器电路至少部分地将另一头部以及至少部分地将另一有效载荷发送到栈。
2.如权利要求1所述的设备,其特征在于:
所述目的地设备包括至少部分地包含在第一节点中的大容量存储和输入/输出设备中的至少一个;
电路卡至少部分地包括网络控制器电路;以及
所述第一节点包括耦合到电路卡的电路板。
3.如权利要求1所述的设备,其特征在于:
所述通信协议栈至少部分地基于所述头部的至少一部分而至少部分地生成向第二节点的确认,所述确认指示所述第一节点已经接收所述分组,所述确认包括序号;
所述网络控制器电路至少部分地修改所述确认中的序号;以及
所述网络控制器电路至少部分地经由网络将所述确认发送到第二节点。
4.如权利要求1所述的设备,其特征在于:
所述另一有效载荷至少部分地不同于所述有效载荷的至少一部分;以及
在将所述头部的至少一部分发送到栈之前,所述网络控制器电路至少部分地修改所述头部的至少一部分中的序号、尺寸信息和校验和,所述序号由所述网络控制器电路至少部分地基于序号转换而至少部分地修改,所述尺寸信息和校验和至少部分地基于至少部分修改的序号和另一有效载荷而被至少部分地修改。
5.如权利要求1所述的设备,其特征在于:
所述网络控制器电路还接收第三分组,所述第三分组与特定会话相关联,所述第三分组是复制分组和无序分组中的至少一个;以及
在确定第三分组是复制分组和无序分组中的至少一个之后,所述网络控制器电路放弃第三分组。
6.如权利要求1所述的设备,其特征在于:
所述网络控制器电路至少部分地经由一个或多个直接存储器转移将所述有效载荷的至少一部分存储在与所述目的地设备相关联的一个或多个位置;
所述应用至少部分地通知所述一个或多个位置;
所述另一有效载荷至少部分地不同于所述有效载荷的至少一部分;以及
所述应用至少部分地忽略所述另一有效载荷。
7.一种包括使用网络控制器电路的方法,所述方法包括:
由所述网络控制器电路至少部分地从网络接收分组,所述网络控制器电路包含在第一节点中,所述第一节点通信耦合于网络并且包括主机处理器以执行操作系统环境,所述操作系统环境至少部分地包括通信协议栈和应用,所述分组至少部分地包括头部和有效载荷;
将所述头部的至少一部分从所述电路发送到所述栈,所述有效载荷的至少一部分与应用相关联;以及
按避免栈卷入的方式将所述有效载荷的至少一部分从所述电路发送到目的地设备,所述目的地设备至少部分地由应用指定,
其中所述网络控制器电路至少部分地确定所述分组是否与特定会话相关联,所述特定会话包含在一个或多个预定会话的组中;以及
至少部分地基于分组是否与特定会话相关联,所述网络控制器电路以避免栈卷入的方式将有效载荷的至少一部分发送到目的地设备;
所述网络控制器电路还接收与另一会话相关联的另一分组,所述另一会话包含在一个或多个相应会话的另一组中,一个或多个预定会话的所述组和所述另一组彼此相互分离;
所述另一分组包括另一头部和另一有效载荷;以及
所述网络控制器电路至少部分地将另一头部以及至少部分地将另一有效载荷发送到栈。
8.如权利要求7所述的方法,其特征在于:
所述目的地设备包括至少部分地包含在第一节点中的大容量存储和输入/输出设备中的至少一个;
电路卡至少部分地包括网络控制器电路;以及
所述第一节点包括耦合到电路卡的电路板。
9.如权利要求7所述的方法,其特征在于:
所述通信协议栈至少部分地基于所述头部的至少一部分而至少部分地生成向第二节点的确认,所述确认指示所述第一节点已经接收所述分组,所述确认包括序号;
所述网络控制器电路至少部分地修改所述确认中的序号;以及
所述网络控制器电路至少部分地经由网络将所述确认发送到第二节点。
10.如权利要求7所述的方法,其特征在于:
所述另一有效载荷至少部分地不同于所述有效载荷的至少一部分;以及
在将所述头部的至少一部分发送到栈之前,所述网络控制器电路至少部分地修改所述头部的至少一部分中的序号、尺寸信息和校验和,所述序号由所述网络控制器电路至少部分地基于序号转换而至少部分地修改,所述尺寸信息和校验和至少部分地基于至少部分修改的序号和另一有效载荷而被至少部分地修改。
11.如权利要求7所述的方法,其特征在于:
所述网络控制器电路还接收第三分组,所述第三分组与特定会话相关联,所述第三分组是复制分组和无序分组中的至少一个;以及
在确定第三分组是复制分组和无序分组中的至少一个之后,所述网络控制器电路放弃第三分组。
12.如权利要求7所述的方法,其特征在于:
所述网络控制器电路至少部分地经由一个或多个直接存储器转移将所述有效载荷的至少一部分存储在与所述目的地设备相关联的一个或多个位置;
所述应用至少部分地通知所述一个或多个位置;
所述另一有效载荷至少部分地不同于所述有效载荷的至少一部分;以及
所述应用至少部分地忽略所述另一有效载荷。
13.一种包括使用网络控制器电路的设备,所述设备包括:
用于由所述网络控制器电路至少部分地从网络接收分组的装置,所述网络控制器电路包含在第一节点中,所述第一节点通信耦合于网络并且包括主机处理器以执行操作系统环境,所述操作系统环境至少部分地包括通信协议栈和应用,所述分组至少部分地包括头部和有效载荷;
用于将所述头部的至少一部分从所述电路发送到所述栈的装置,所述有效载荷的至少一部分与应用相关联;以及
用于按避免栈卷入的方式将所述有效载荷的至少一部分从所述电路发送到目的地设备的装置,所述目的地设备至少部分地由应用指定,
其中所述网络控制器电路至少部分地确定所述分组是否与特定会话相关联,所述特定会话包含在一个或多个预定会话的组中;以及
至少部分地基于分组是否与特定会话相关联,所述网络控制器电路以避免栈卷入的方式将有效载荷的至少一部分发送到目的地设备;
所述网络控制器电路还接收与另一会话相关联的另一分组,所述另一会话包含在一个或多个相应会话的另一组中,一个或多个预定会话的所述组和所述另一组彼此相互分离;
所述另一分组包括另一头部和另一有效载荷;以及
所述网络控制器电路至少部分地将另一头部以及至少部分地将另一有效载荷发送到栈。
14.如权利要求13所述的设备,其特征在于:
所述目的地设备包括至少部分地包含在第一节点中的大容量存储和输入/输出设备中的至少一个;
电路卡至少部分地包括网络控制器电路;以及
所述第一节点包括耦合到电路卡的电路板。
15.如权利要求13所述的设备,其特征在于:
所述通信协议栈至少部分地基于所述头部的至少一部分而至少部分地生成向第二节点的确认,所述确认指示所述第一节点已经接收所述分组,所述确认包括序号;
所述网络控制器电路至少部分地修改所述确认中的序号;以及
所述网络控制器电路至少部分地经由网络将所述确认发送到第二节点。
16.如权利要求13所述的设备,其特征在于:
所述另一有效载荷至少部分地不同于所述有效载荷的至少一部分;以及
在将所述头部的至少一部分发送到栈之前,所述网络控制器电路至少部分地修改所述头部的至少一部分中的序号、尺寸信息和校验和,所述序号由所述网络控制器电路至少部分地基于序号转换而至少部分地修改,所述尺寸信息和校验和至少部分地基于至少部分修改的序号和另一有效载荷而被至少部分地修改。
17.如权利要求13所述的设备,其特征在于:
所述网络控制器电路还接收第三分组,所述第三分组与特定会话相关联,所述第三分组是复制分组和无序分组中的至少一个;以及
在确定第三分组是复制分组和无序分组中的至少一个之后,所述网络控制器电路放弃第三分组。
18.如权利要求13所述的设备,其特征在于:
所述网络控制器电路至少部分地经由一个或多个直接存储器转移将所述有效载荷的至少一部分存储在与所述目的地设备相关联的一个或多个位置;
所述应用至少部分地通知所述一个或多个位置;
所述另一有效载荷至少部分地不同于所述有效载荷的至少一部分;以及
所述应用至少部分地忽略所述另一有效载荷。
CN201180012920.XA 2010-03-10 2011-03-10 以避免通信协议栈卷入的方式向设备发出至少一部分分组有效载荷的网络控制器电路 Active CN102792638B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/721,275 US8553693B2 (en) 2010-03-10 2010-03-10 Network controller circuitry to issue at least one portion of packet payload to device in manner that by-passes communication protocol stack involvement
US12/721,275 2010-03-10
PCT/US2011/027851 WO2011112787A2 (en) 2010-03-10 2011-03-10 Network controller circuitry to issue at least one portion of packet payload to device in manner that by-passes communication protocol stack involvement

Publications (2)

Publication Number Publication Date
CN102792638A CN102792638A (zh) 2012-11-21
CN102792638B true CN102792638B (zh) 2014-12-17

Family

ID=44559924

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180012920.XA Active CN102792638B (zh) 2010-03-10 2011-03-10 以避免通信协议栈卷入的方式向设备发出至少一部分分组有效载荷的网络控制器电路

Country Status (4)

Country Link
US (1) US8553693B2 (zh)
EP (1) EP2545681B1 (zh)
CN (1) CN102792638B (zh)
WO (1) WO2011112787A2 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8553693B2 (en) 2010-03-10 2013-10-08 Intel Corporation Network controller circuitry to issue at least one portion of packet payload to device in manner that by-passes communication protocol stack involvement
US9239607B2 (en) 2011-12-22 2016-01-19 Intel Corporation Storing data using a direct data path architecture to reduce energy consumption and improve performance
US20160191678A1 (en) * 2014-12-27 2016-06-30 Jesse C. Brandeburg Technologies for data integrity of multi-network packet operations
DE102016110078A1 (de) * 2016-06-01 2017-12-07 Intel IP Corporation Datenverarbeitungsvorrichtung und Verfahren zum Auslagern von Daten zu einer fernen Datenverarbeitungsvorrichtung
EP4052442A1 (en) * 2019-10-30 2022-09-07 Telefonaktiebolaget LM Ericsson (publ) In-band protocol-based in-network computation offload framework

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1159631A (zh) * 1995-10-06 1997-09-17 太阳微系统有限公司 客户/服务器计算机系统中处理不同协议方法调用的方法和装置
US6246683B1 (en) * 1998-05-01 2001-06-12 3Com Corporation Receive processing with network protocol bypass

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6591302B2 (en) * 1997-10-14 2003-07-08 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US7174393B2 (en) 2000-12-26 2007-02-06 Alacritech, Inc. TCP/IP offload network interface device
US7664883B2 (en) 1998-08-28 2010-02-16 Alacritech, Inc. Network interface device that fast-path processes solicited session layer read commands
EP1573454A2 (en) * 2002-06-11 2005-09-14 Ashish Pandya High performance ip processor for tcp/ip, rdma and ip storage applications
US7580415B2 (en) * 2005-04-27 2009-08-25 Hewlett-Packard Development Company, L.P. Aggregation of hybrid network resources operable to support both offloaded and non-offloaded connections
JP4942375B2 (ja) * 2006-03-27 2012-05-30 株式会社ソニー・コンピュータエンタテインメント ネットワーク処理装置
US7864787B2 (en) * 2007-03-26 2011-01-04 Voltaire Ltd. Device, system and method of multicast communication
US8121135B2 (en) * 2009-06-23 2012-02-21 Juniper Networks, Inc. Discovering path maximum transmission unit size
US8553693B2 (en) 2010-03-10 2013-10-08 Intel Corporation Network controller circuitry to issue at least one portion of packet payload to device in manner that by-passes communication protocol stack involvement

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1159631A (zh) * 1995-10-06 1997-09-17 太阳微系统有限公司 客户/服务器计算机系统中处理不同协议方法调用的方法和装置
US6246683B1 (en) * 1998-05-01 2001-06-12 3Com Corporation Receive processing with network protocol bypass

Also Published As

Publication number Publication date
EP2545681A4 (en) 2015-07-22
WO2011112787A3 (en) 2011-12-29
CN102792638A (zh) 2012-11-21
EP2545681B1 (en) 2018-11-14
WO2011112787A2 (en) 2011-09-15
US8553693B2 (en) 2013-10-08
US20110222537A1 (en) 2011-09-15
EP2545681A2 (en) 2013-01-16

Similar Documents

Publication Publication Date Title
US11263352B2 (en) Security plugin for a system-on-a-chip platform
US8751682B2 (en) Data transfer using high speed connection, high integrity connection, and descriptor
CN102792638B (zh) 以避免通信协议栈卷入的方式向设备发出至少一部分分组有效载荷的网络控制器电路
EP1580958B1 (en) Internet protocol tunnelling using templates
US9258349B2 (en) Method and apparatus of performing remote computer file exchange
CN102934402B (zh) 帧传输的至少部分中断
US7849211B2 (en) Method and system for reliable multicast datagrams and barriers
WO2012047518A2 (en) High speed parallel data exchange with receiver side data handling
CN102227718A (zh) 用于远程桌面协议的硬件加速
CN102404212A (zh) 一种基于InfiniBand网络的跨平台RDMA通信方法
CN105723674A (zh) 用于在网络控制协议中动态地绑定头字段标识符的方法
US11165752B1 (en) System and method for recovery of data packets transmitted over an unreliable network
US7415652B1 (en) Out of order checksum calculation for fragmented packets
US8832467B2 (en) Digital rights management metafile, management protocol and applications thereof
CN106685854B (zh) 一种数据发送方法及系统
EP3826244B1 (en) Congestion control method and related device
JP2010251854A (ja) 通信システム、端末、プログラム及び通信方法
US8068434B2 (en) Network infrastructure capability detection
JP2007065828A (ja) 通信データ圧縮方法
KR102347568B1 (ko) 블록체인 시스템에서 블록 전송 방법
WO2024113837A1 (zh) 传输层数据包的封装方法和装置
CN112434351B (zh) 一种多功能存储设备、系统及存储方法
JP2010041498A (ja) パケット作成装置及びパケット作成方法
JP2007329730A (ja) 通信プロトコル処理装置
Kanevsky et al. Enhanced Remote Direct Memory Access (RDMA) Connection Establishment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant