CN100478926C - 发送数据的方法和系统及接收数据的方法和系统 - Google Patents

发送数据的方法和系统及接收数据的方法和系统 Download PDF

Info

Publication number
CN100478926C
CN100478926C CNB2005800117777A CN200580011777A CN100478926C CN 100478926 C CN100478926 C CN 100478926C CN B2005800117777 A CNB2005800117777 A CN B2005800117777A CN 200580011777 A CN200580011777 A CN 200580011777A CN 100478926 C CN100478926 C CN 100478926C
Authority
CN
China
Prior art keywords
data
network interface
interface unit
application program
operating system
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
CNB2005800117777A
Other languages
English (en)
Other versions
CN1969267A (zh
Inventor
史蒂夫·莱斯利·波普
大卫·詹姆士·里多克
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.)
Xilinx Inc
Original Assignee
Level 5 Networks Inc
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=32344135&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN100478926(C) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Level 5 Networks Inc filed Critical Level 5 Networks Inc
Publication of CN1969267A publication Critical patent/CN1969267A/zh
Application granted granted Critical
Publication of CN100478926C publication Critical patent/CN100478926C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Lock And Its Accessories (AREA)
  • Control Of Eletrric Generators (AREA)
  • Eyeglasses (AREA)

Abstract

本发明提供了用户级栈。一种通过数据处理系统发送数据的方法,该系统能够支持操作系统和至少一个应用程序,并且可以访问存储器和能够支持通过网络与另一网络接口设备的通信连接的网络接口设备,该方法包括以下步骤:通过所述应用程序形成要发送的数据;通过所述应用程序请求所述数据处理系统的非操作系统功能以发送所述要发送的数据;响应于该请求:将所述要发送的数据写入所述存储器的一区域,以及通过所述非操作系统功能和所述网络接口设备之间的直接通信发起所述数据中的至少某些的通过网络的发送操作;以及随后通过所述操作系统访问所述存储器,并通过所述网络接口设备执行所述数据中的至少某些的通过网络的发送操作中的至少一部分。

Description

发送数据的方法和系统及接收数据的方法和系统
技术领域
本发明涉及一种网络接口,例如将计算机连接到网络的接口设备。
背景技术
图1是诸如网络接口卡(NIC)的网络接口设备及其中使用该网络接口设备的系统的总体架构的示意图。网络接口设备10通过数据链路5连接到诸如计算机1的处理设备,并通过数据链路14连接到数据网络20。诸如处理设备30的其他网络接口设备也连接到网络,以提供网络和诸如处理设备40的其他处理设备之间的接口。
计算机1例如可以是个人计算机、服务器或者诸如数据记录器或控制器的专用处理设备。在本示例中,计算机1包括处理器2、程序存储器4和存储器3。该程序存储器存储有定义操作系统和可以在该操作系统中运行的应用程序的指令。该操作系统提供诸如驱动程序和接口程序库的工具(means),通过这些工具,应用程序可以访问与计算机连接的外围硬件设备。
理想地,网络接口设备能够支持用户级标准传输协议,例如TCP、RDMA和ISCSI:即,通过使得在计算机1中运行的应用程序可以访问它们的方式。这种支持使得能够进行需要使用标准协议的数据传输,而不需要数据经过内核栈。在本示例的网络接口设备中,在计算机1的操作系统可访问的传输程序库内实现标准传输协议。
典型的计算机系统1包括处理器子系统(包括一个或更多个处理器)、存储器子系统(包括主存储器、高速缓存存储器等)、和通过外围总线连接到处理器子系统的多种“外围设备”。外围设备例如可以包括键盘、鼠标和显示适配器、磁盘驱动器和CD-ROM驱动器、网络接口设备等。处理器子系统通过对预先分配给这些外围设备的特定地址读取和写-入命令和信息,来与这些外围设备进行通信。这些地址可以是主存储器地址空间、I/O地址空间、或另一类型的构形空间中的预先分配的区域。也可以通过直接存储器访问(DMA)来进行与外围设备的通信,其中外围设备(或外围总线上的另一代理)直接在存储器子系统和分配给外围设备的地址空间中的多个预先分配的区域中的一个区域之间传输数据。
大多数现代计算机系统是多任务的,这意味着它们允许多个不同的应用程序在同一处理器子系统上并行执行。大多数现代计算机还运行操作系统,其中,该操作系统分配处理器子系统的时间,以执行不同应用程序中的每一个的代码。在多任务系统中可能出现的困难是,不同的应用程序可能想要在同一时刻控制同一外围设备。为了防止这种冲突,操作系统的另一任务是协调对外围设备的控制。具体地,只有操作系统可以直接访问外围设备;想要访问外围设备的应用程序必须通过调用操作系统中的例程来进行访问。在操作系统中设置对外围设备的排他性控制还有助于对系统的模块化,避免需要每个独立的应用程序为控制该硬件而执行它自己的软件代码。
操作系统的控制硬件的部分通常是内核。通常,它是执行硬件初始化、设置和重设处理器状态、调整处理器内部时钟、初始化网络接口设备、及硬件的其它直接访问的内核。该内核以内核模式(有时也称作信任模式或特权模式)执行,而应用程序级进程(也称作用户级进程)以用户模式执行。通常,处理器子系统硬件本身确保只有信任代码(例如内核代码)可以直接访问硬件。处理器至少以两种方式强制该操作:特定的敏感指令不由处理器来执行,除非当前的特权级别足够高;以及处理器不允许用户级进程访问已经分配给该进程的用户级物理或虚拟地址空间之外的存储器位置(包括与特定硬件资源相关联的存储器映射地址)。这里所用的术语“内核空间”或“内核地址空间”是指执行内核的地址和代码空间。这包括内核数据结构和内核的内部功能。内核也可以访问用户进程的存储器,但“内核空间”通常是指内核私有的、任何用户进程不可以访问的存储器(包括代码和数据)。术语“用户空间”或“用户地址空间”是指由从可执行程序(executable)加载的并且用户进程可用的代码所分配的地址和代码空间,除了内核私有代码数据结构以外。这里所用的4个术语旨在涵盖软件程序自己的地址空间的视图(view)和它所对应的物理存储器位置之间的中间映射的可能性。通常,软件程序的地址空间的视图是连续的,而对应的物理地址空间可以是不连续且无序的,甚至可能部分地在诸如硬盘驱动器的交换设备上。
虽然内核的多个部分可以象独立的正在运行的内核进程那样执行,但是许多内核实际并不是在系统中运行的独立进程。相反,它可以被认为是一组例程,用户进程可以访问其中的某些。用户进程可以通过执行系统调用来调用内核例程,系统调用是使内核执行代表该进程的一些代码的功能。“当前进程”仍然是用户进程,但在系统调用期间,它“在内核内部”执行,因此可以访问内核地址空间并且能够以特权模式执行。由于在内核内建立了中断处理器,所以还响应于由硬件设备发出的中断来执行内核代码。作为进程调度程序,内核还使用时钟中断(和其它手段)触发从一个进程到另一个进程的切换,以快速切换进程之间控制。每次调用内核例程时,为了允许该例程直接访问硬件,当前的特权级别增加为内核级别。当内核将控制交回给用户进程时,当前的特权级别返回到用户进程的级别。
当用户级进程希望与NIC进行通信时,传统地,它只能通过调用操作系统来进行该操作。操作系统实现系统级协议处理栈,其代表应用程序执行协议处理。具体地,希望使用TCP/IP来发送数据包的应用程序使用要发送的数据来调用操作系统API(例如,使用send()调用)。该调用导致上下文切换,以调用内核例程,将数据复制到内核数据缓冲区中,并执行TCP发送处理。这里应用了协议,并且完全形成的TCP/IP分组通过接口驱动程序进行排队,以进行发送。在控制返回到应用程序时产生另一上下文切换。注意,由于时间的流逝,还可以调用用于网络协议处理的内核例程。一个示例是重传算法的触发。通常,操作系统向所有OS模块提供时间和调度服务(由硬件时钟中断驱动),这使得TCP栈能够逐个连接地实现定时器。为了处理这种定时器触发的功能,并且为最后再次返回到应用程序,操作系统执行上下文切换。
可以看出,网络发送和接收操作可能包括过多的上下文切换,并且这可能导致明显的开销。这个问题在其中数据包通常很短而使得所需的控制工作量大到为全部网络处理工作的一个百分点的网络环境中尤为严重。
过去已尝试的一种解决方案是建立用户级协议处理栈,该用户级协议处理栈与操作系统的协议处理栈并行工作。这种栈使得能够使用标准协议来进行数据传输,而不需要数据经过内核栈。
图2示出了该方案的一种实现。在该架构中,TCP(和其它)协议实施两次:如图2中的TCP1和TCP2所示。在典型的操作系统中,TCP2是计算机的操作系统中内置的TCP协议的标准实现。为了控制网络接口设备和/或与网络接口设备进行通信,在计算机上运行的应用程序可以发出API(应用程序编程接口)调用。某些API调用可以由被提供用来支持网络接口设备的传输程序库来处理。不能由应用程序可直接使用的传输程序库进行服务的API调用通常可以通过应用程序和操作系统之间的接口传递,以由操作系统可用的程序库进行处理。为了通过许多操作系统来实现,传输程序库使用现有的基于Etnernet/IP的控制面结构是很方便的:例如,经由OS接口的SNMP和ARP协议。
在用户级实现传输协议存在很多困难。至今为止,大多数的实现是基于将预先存在的内核代码基础移植(porting)到用户级。其示例有Arsenic和Jet-stream。它们证实了用户级传输的潜力,但是它们没有解决需要获得完整的、鲁棒的、高性能的商业上可靠实现的多个问题。
图3是采用标准内核TCP传输(TCPk)的架构。
该架构的操作如下:
在从网络接口硬件(例如,网络接口卡(NIC))接收分组时,NIC将数据传输到预先分配的数据缓冲器(a)中并通过中断线调用OS中断处理器(步骤i)。中断处理器管理硬件接口,例如设置新的接收缓冲器,并传送所接收的(在本示例中,为以太网)分组,以寻找协议信息。如果分组被识别为目的地是有效协议,例如TCP/IP,则将其传送(不是复制)到适当的接收协议处理块(步骤ii)。
进行TCP接收端处理,并且从分组中识别出目的地部分。如果该分组包含该端口的有效数据,则该分组开始该端口的数据队列(步骤iii),并且该端口被标记(其可能涉及调度程序以及被中断进程的唤醒)为保持了有效数据。
TCP接收处理可能需要发送其他分组(步骤iv),例如在先前发送的数据应该重发或者先前排队的数据(可能是因为TCP窗口已打开)现在可以发送的情况下。在这种情况下,分组通过OS“NDIS”驱动程序进行排队,以进行发送。
为了使应用程序检索数据缓冲器,必须调用OS API(步骤v),例如通过诸如recv()、select()或poll()的调用。这具有通知应用程序已经接收到数据的效果,以及(在recv()调用的情况下)将数据从内核缓冲器复制到应用程序的缓冲器的效果。该复制使得内核(OS)能够重复利用它的网络缓冲器,这些网络缓冲器具有特殊属性,例如可DMA访问,并且意味着应用程序不需要处理由网络提供的单元中的数据,或者意味着应用程序需要预先知道该数据的最终目的地,或者意味着应用程序必须预先分配随后可以用于数据接收的缓冲器。
应当注意,在接收端存在至少两个不同的控制线程(它们异步地交互):来自中断的向上调用(up-call)和来自应用程序的系统调用。许多操作系统还分离出该向上调用,以避免在中断优先级执行太多代码,例如,通过“软中断”或“延迟过程调用”技术。
除了通常存在一个执行路径以外,发送进程的行为相似。应用程序通过要发送的数据调用操作系统API(例如使用send()调用)(步骤vi)。该调用将数据复制到内核数据缓冲器,并且调用TCP发送处理。这里应用了协议,并且完全形成的TCP/IP分组通过接口驱动程序进行排队,以进行发送。
如果成功,则系统调用返回,并具有被调度(通过硬件)用于发送的数据的指示。然而,还存在许多其中数据没有通过网络接口设备进行排队的情况。例如,传输协议可以排队等待确认或窗口更新,并且设备驱动程序可以在软件中排队,以等待对硬件的数据传输请求。
通过系统的第三控制流程是由随着时间的流逝必须执行的动作产生的。一个示例是重传算法的触发。通常,操作系统提供向所有OS模块提供时间和调度服务(由硬件时钟中断驱动),这使得TCP栈能够逐个连接地实现定时器。
如果在用户级实现标准内核栈,则该结构可能通常如图4所示。应用程序与传输程序库连接,而不是直接与OS接口连接。这种结构与具有诸如由用户级分组提供的定时器支持的服务的内核栈实现很相似,设备驱动程序接口被用户级虚拟接口模块代替。然而,为了提供TCP实现所需要的异步处理模型,必须在传输程序库中执行多个活动线程:
(i)由应用程序提供的系统API调用
(ii)协议代码中的所生成的定时器的调用
(iii)虚拟网络接口管理和协议代码中的所得到的向上调用(对于某些架构可以组合ii和iii)。
然而,这种设置带来了许多问题:
(a)这些线程之间的上下文切换以及保护共享数据结构而实现锁定的开销很大,花费了很大量的处理时间。
(b)用户级定时器代码通常通过使用由操作系统提供的定时器/时间支持来进行操作。由来自定时器模块的系统调用引起的大量开销导致系统不能满足防止操作系统和数据路径之间的相互作用的目的。
(c)可能存在许多独立的应用程序,每一个应用程序都管理网络连接的一个子集;某些应用程序通过它们自己的传输程序库,而某些应用程序通过现有的内核栈传输程序库。NIC必须能够有效地解析分组,并基于如IP端口和主机地址位的协议信息,将它们传送给适当的虚拟接口(或OS)。
(d)应用程序可以将对特定网络连接的控制传递给另一应用程序,例如在Unix操作系统上的fork()系统调用期间。这要求访问连接状态需要完全不同的传输程序库实例。更糟糕的是,许多应用程序可以共享网络连接,这意味着传输程序库通过(进程间通信)技术共享所有权。用户级的现有传输并不试图支持该操作。
(e)通常传输协议要求网络连接的存在时间比与它连接的应用程序要长。例如使用TCP协议,当正在发送的应用程序退出或崩溃时,传输必须尽力传送已发送但未收到确认的数据并从容地关闭连接。无论应用程序处于什么状态(或存在),对于能够提供“定时器”输入到协议堆栈的内核栈实现都不会有问题,但是,这对于在应用程序退出、崩溃或在调试器中停止的情况下将会消失(可能不从容地消失)的传输程序库是一个问题。
理想地,提供一种系统,该系统至少部分地解决了这些问题a到e中的一个或更多个。
发明内容
根据本发明的一个方面,大致地说,提供了一种通过数据处理系统来发送数据的方法,该数据处理系统能够支持操作系统和至少一个应用程序,并且可以访问存储器和网络接口设备,所述网络接口设备能够支持通过网络与另一网络接口设备的通信连接,该方法包括以下步骤:通过应用程序形成要发送的数据;通过应用程序请求数据处理系统的非操作系统功能(functionality)发送要发送的数据;对该请求进行响应:将要发送的数据写入到存储器的一区域中;通过非操作系统功能和网络接口设备之间的直接通信来发起该数据中的至少一些的通过网络的发送操作;以及随后通过操作系统访问存储器,并通过网络接口设备经网络执行该数据中的至少某些的通过网络的至少一部分发送操作。
优选地,该操作系统能够直接与网络接口设备进行通信。
优选地,非操作系统功能之间的所述直接通信绕过该操作系统。
优选地,非操作系统功能通过软件实现,最优选地,通过在数据处理系统上运行的软件实现。便利地,非操作系统功能可以是传输程序库。非操作系统功能最优选地不需要为了完成它执行的步骤而增加特权级别。
存储器的所述区域可以被映射到该存储器的第二区域。存储器的第二区域可以由操作系统访问,最优选地是直接访问,但非操作系统功能不能直接访问。
该方法可以包括:在发起通过网络的数据发送操作时,启动定时器;以及如果在接收到对该数据的确认之前定时器达到预定值,则从网络接口设备向数据处理系统发送失败消息。
该方法可以包括:在发起通过网络的数据发送操作时,存储该操作的记录和作为该数据的源的应用程序的指示;以及在接收对于该应用程序的数据时,启动与该应用程序相关联的各个记录的定时器;以及如果在接收到对于该数据的确认之前该定时器达到预定值,则从网络接口设备向数据处理系统发送失败消息。
优选地,所述或各个定时器在网络接口设备上运行。
该方法可以包括:在接收到对于该数据的确认时取消定时器,其中所述或各个失败消息被送往操作系统。
取消定时器的步骤可以包括:应用程序以绕过操作系统的方式向定时器在其上运行的实体发送信号。
所述或各个失败消息优选地被送往作为该数据的源的应用程序。
优选地,操作系统对送往不再与网络设备进行通信的应用程序的失败消息进行响应,以执行对于与该失败消息相对应的数据的发送操作的所述至少一部分。
根据本发明的第二方面,大致地说,提供了一种通过数据处理系统来接收数据的方法,该数据处理系统能够支持至少一个应用程序,并且可以访问存储器和网络接口设备,所述网络接口设备能够支持通过网络与另一网络接口设备的通信连接,该方法包括以下步骤:通过数据处理系统的非操作系统功能而建立应用程序接收数据的通道,该通道与存储器的一区域相关联;通过以下操作经由该通道接收数据:网络接口设备将接收到的数据写到存储器的该区域中;应用程序从该区域读出接收到的数据;以及随后如果该应用程序不能与网络设备进行通信,则操作系统从该区域读取接收到的数据。
优选地,该操作系统被设置为在确定应用程序不能与网络设备进行通信时,自动地从该区域读取接收到的数据。
根据本发明的第三方面,大致地说,提供了一种通过数据处理系统来发送数据的方法,该系统能够支持至少一个应用程序,并且可以访问存储器和网络接口设备,所述网络接口设备能够支持通过网络与另一网络接口设备的通信连接,该方法包括以下步骤:通过应用程序形成要发送的数据;将该数据传送到网络接口设备以进行发送;通过网络接口设备发送数据,并且可选地,在进行该发送时,建立与该数据相对应的定时器;以及如果通过网络接收到对于该数据的确认,则取消该定时器;或者如果定时器达到了预定值,则通过网络接口设备向操作系统发送信号,以指示没有接收到对于该数据的确认。
该定时器可以在刚建立该定时器时启动。
当已建立了定时器时,可以在接收到送往作为该数据的源的应用程序的数据时启动该定时器,该定时器是在发送该数据时建立的。
该数据的所述传送可以通过数据处理系统的非操作系统功能来执行。
非操作系统功能可以是传输程序库。
该数据的所述传送可以绕过操作系统而执行。
所述发送信号可以包括:向操作系统的事件队列中施加一失败事件。
根据本发明的第四方面,大致地说,提供了一种通过数据处理系统来发送和接收数据的方法,该系统支持操作系统和至少一个应用程序,并且可以访问存储器和网络接口设备,所述网络接口设备能够支持通过网络与另一网络接口设备的通信连接,该方法包括:分配存储器的一个或更多个区域,用作在数据处理系统和网络接口设备之间传送数据时的缓冲器;通过应用程序直接访问该存储器的多个区域中的至少一个,以通过网络接口设备进行数据的发送和接收中的至少一种;以及通过操作系统直接访问该存储器的所述至少一个区域,以通过网络接口设备进行数据的发送和接收中的至少一个。
优选地,该方法包括:通过网络设备从网络接收数据;以及通过网络设备将该数据写入到所述区域中的所述至少一个。
优选地,该网络设备被构造为在确定应用程序没有响应的情况下,向操作系统发送信号,以访问所述区域中的所述至少一个,并且该方法包括:响应于这种信号,执行通过操作系统直接访问存储器的所述区域中的所述至少一个的所述步骤。所述信号可以是中断。
优选地,该网络设备支持定时器,并且该方法包括:启动该定时器,以在接收到的数据被写入所述区域中的所述至少一个时,从预设的初始值开始计时,并且如果定时器达到了预设的最终值,则确定该应用程序不响应。优选地,该最终值为0。
优选地,该方法包括以下步骤:通过应用程序设置该初始值和/或最终值。最优选地,该最终值为0,并且只有初始值是通过应用程序设置的。
优选地,该方法包括:在通过应用程序从所述区域中的所述至少一个中读取接收到的数据时,通过应用程序停止该定时器。
优选地,直接访问该存储器的所述区域中的所述至少一个以通过网络接口设备进行数据的发送和接收中的至少一个的所述步骤中的每一个都包括:对通过网络接口设备从网络接收到的并存储在所述区域中的所述至少一个中的数据进行协议处理。该协议处理可以包括以下处理中的一个或更多个:从接收到的数据中提取通信量数据,通过网络发送对于接收到的数据中的至少某些的确认和/或重发消息,检查接收到的数据中的接收数据单元的序列值,以及计算接收到的数据的校验和。该协议可以是TCP。
优选地,该方法包括:通过网络设备从所述区域中的所述至少一个中读取数据;以及通过网络设备经网络发送该数据。
优选地,直接访问该存储器的所述区域中的至少一个以通过网络接口设备进行数据的发送和接收中的至少一个的所述步骤中的每一个都包括:以在所述区域中的所述至少一个中存储用于发送的数据。
优选地,直接访问该存储器的所述区域中的至少一个以通过网络接口设备进行数据的发送和接收中的至少一个的所述步骤中的每一个都包括:触发网络接口设备,以执行从所述区域中的所述至少一个中读取数据的所述步骤。
优选地,该网络设备被构造为在确定应用程序没有响应的情况下,向操作系统发送信号,以访问所述区域中的所述至少一个,并且该方法包括:响应于这种信号,执行通过操作系统直接访问该存储器的所述区域中的所述至少一个的所述步骤。
根据本发明的另一方面,提供了一种执行上述方法中的任意一种方法的系统。
附图说明
将参照附图以示例的方式描述本发明,附图中:
图1是使用中的网络接口设备的示意图;
图2表示传输程序库架构的实现;
图3是采用具有用户级TCP传输的标准内核TCP传输的架构;
图4表示在用户级实现标准内核栈的架构的示意图;
图5表示TCP传输架构的示例;
图6表示由网络接口设备执行的对入局TCP/分组进行过滤的步骤;
图7表示通过内容可寻址存储器的服务器(被动)连接的操作。
具体实施方式
以下说明使得本领域的技术人员能够制造并使用本发明,并且以下说明是在特定的应用程序及其要求的条件下提供的。所公开实施例的各种修改对于本领域的技术人员都是显而易见的,并且在此定义的一般原理可以应用于其他实施例和应用程序,而不会脱离本发明的精神和范围。因此,本发明不应被限于所示的实施例,而是被给予与在此所公开的原理和特征一致的最宽范围。
图5表示TCP传输架构的示例,该TCP传输架构适于在诸如图1的设备10的网络接口设备与诸如图1的计算机1的计算机之间提供接口。该架构不限于这种实现。
图5的示例的架构与传统架构之间的原理差异如下。
(i)代表网络连接执行协议处理的TCP代码位于传输程序库和OS内核两者中。该代码执行协议处理的事实是特别重要的。
(ii)连接状态和数据缓冲器保存在内核存储器和映射到传输程序库的地址空间的存储器中。操作系统是这些缓冲器的所有者,因此操作系统完全地控制它们,但是它们可以由应用程序直接访问,它们被用于该应用程序的通信。这使得应用程序能够通过这些缓冲器直接发送和接收数据,并从对应的状态缓冲器中读取状态数据。
(iii)内核和传输程序库代码都可以为特定的网络连接和代表特定的网络连接而访问虚拟硬件接口。
(iv)可以通过虚拟硬件接口来管理定时器,(这些与网络接口设备中的真实定时器相对应),而不需要系统调用来设置和清除它们。NIC产生定时器事件,这些定时器事件被网络接口设备驱动程序接收,并且被传送给该设备的TCP支持代码。应当注意,网络接口设备的TCP支持代码是除了普通的OS TCP实现以外的代码。这适于能够与网络接口设备的栈共存。
在图5的架构中,在与NIC配合使用的数据处理器上的存储器中分配缓冲区,以用于通过网络进行数据的发送和/或接收。在使用发送缓冲器发送数据的情况下,NIC被设置为从该缓冲器中读取数据并通过网络发送该数据。NIC可以自动地读取该数据并发送该数据,或者它可以被触发,以通过在数据处理器上运行的应用程序或操作系统来读取该数据。便利地,该触发器可以是中断。在使用接收缓冲器接收数据的情况下,NIC被设置为将通过网络接收到的数据写入该缓冲器。然后,应用程序或操作系统可以读取接收缓冲器中的数据,并进一步对其进行处理。
最便利地,缓冲器由操作系统拥有,在操作系统可以控制哪些实体可以访问缓冲器的情况下,操作系统分配和/或创建这些缓冲器,并且它负责删除这些缓冲区。然而,应用程序和操作系统都可以直接访问缓冲器,以从缓冲器中读取数据以及将数据写入到缓冲器中。执行这些步骤的情况将在下面描述。
在发送数据的情况下,希望应用程序将数据写入缓冲器以进行发送,然后触发NIC,以从缓冲器中读取该数据,来发送该数据。在某些情况下,只要这样就足够使得数据被成功地通过网络发送。然而,NIC不对所发送的或所接收的数据进行协议处理。相反,它由应用程序或操作系统来执行。因此,例如如果预期的接收者没有成功地接收到该数据,则应用程序或者操作系统必须处理确认、重传请求等(根据所使用的协议),并使NIC执行重传。通常,可以预期由应用程序来完成该处理。当NIC具有对于应用程序的数据(例如,确认消息或超时)时,其将该数据写入接收缓冲器和/或事件队列。同时,它使定时器开始运行。当应用程序访问该数据时,它停止并重置该定时器。这样,NIC知道应用程序进行了响应。然而,如果定时器达到预定值,则NIC确定应用程序没有响应,并向操作系统发送信号(例如,通过中断),以处理对于该应用程序的数据。这具有许多优点。首先,即使该应用程序忙或者未被调度,数据的发送也可以由操作系统来进行。第二,因为在必要的情况下,操作系统将接管,所以一旦将数据放到发送队列中,则向应用程序提供了有意地忽略该数据的机会(例如,通过使应用程序自己不被调度)。优选地,应用程序控制定时器的长度,例如通过设置它的初始值。这使得应用程序能够将定时器设置为适于它的优先级。优选地,该定时器是应用程序直接访问的NIC上的硬件资源。
在接收数据的情况下,该NIC接收数据并将数据写入到接收缓冲器中。在进行该处理时,该NIC设置如上所述的定时器,并且优选地,通过事件队列来通知应用程序。当应用程序访问该数据时,该NIC如上所述重置定时器。这同样向NIC提供了确定应用程序何时没有响应的可能性。对于相同的目的,可以使用其它手段,例如通过NIC周期性地扫描缓冲器中的数据。如果应用程序被确定为没有响应,则NIC再次向操作系统发送信号,以处理接收到的数据。在接收到的数据的情况下,由应用程序或操作系统的进行处理通常涉及协议处理(例如,检查分组序列号,处理校验和,提取通信量数据和/或向NIC发送信号以发送确认或重传请求)和/或从通常在用户级使用的缓冲器中去除数据。
同时,优选地,缓冲器由操作系统来分配,这对于响应于来自应用程序的请求来进行该操作是很方便的。因此,如果接收到的数据溢出对于应用程序可用的接收缓冲器,则该应用程序可以请求通过操作系统分配进一步的缓冲器。如果出现这种情况,则NIC可以根据预先存储的规则,考虑到诸如保持空闲的接收缓冲器的量的因素,通过事件向应用程序发送信号。当进行该信号发送时,NIC可以再次设置定时器,并且如果应用程序没有响应,则该NIC可以向操作系统请求进一步的接收缓冲器。然后操作系统可以分配该缓冲器,将其通知给NIC,以使得即使应用程序没有响应,可以为该应用程序连续地接收数据。
这种架构的效果如下。
(a)多线程在传输程序库中起作用的要求
对于图5的架构没有该要求,因为TCP代码可以作为系统API调用(例如recv())的结果在传输程序库中执行(参见图5的步骤i),或者作为定时器事件的结果通过内核执行(参见图5的步骤ii)。在任一情况下,可以管理VI(虚拟接口),并且两个代码路径可以访问连接状态或者数据缓冲器,其保护和互斥可以通过共享的存储器锁(memory lock)来管理。该特征使得可以消除在传输程序库级切换的线程的开销,并且该特征可以防止要求应用程序改变它们的线程和信号处理的假设(assumption):例如,在某些情况下,要求单个线程的应用程序连接到多线程的程序库是不能接受的。
(b)发出用于定时器管理的系统调用的要求
对于图5的架构没有该要求,因为网络接口设备可以实现多个定时器,这些定时器可以分配给特定的虚拟接口实例:例如,每个起作用的TCP传输程序库可以有一个定时器。可以通过存储器映射的VI使得这些定时器可编程(参见图5的步骤ii),并且导致发出事件(参见图5的步骤iv)。因为定时器可以不需要系统调用(不需要直接涉及操作系统)而被设置和清零,所以可以大大减少定时器管理的开销。
(c)校正分组到多个传输程序库的发送
网络接口设备可以包含或者访问内容可寻址存储器,它可以对从入局分组的头部获得的位进行匹配,作为并行硬件匹配操作。该匹配的结果可以用来指示必须用来进行发送的目的地虚拟接口,并且该硬件可以进行操作以将该分组发送到形成在VI上的缓冲器。下面描述用于匹配处理的一种可能的设置。下面描述的设置可以被扩展为对与IPv6相关联的更大主机地址进行多路分解(de-multiplex),虽然与所描述的设置相比,这要求每个分组的更宽CAM或者多个CAM查找。
为此目的而使用CAM的一个另选方案是使用散列(hash)算法,该散列算法使得能够处理来自分组的头部的数据,以确定要使用的虚拟接口。
(d)进程/应用程序/线程之间的连接的转交
当转交网络连接时,可以在应用程序之间传送相同系统范围的资源句柄。这例如可以是文件描述符。网络接口设备的这种架构可以使得与该网络连接相关联的所有状态附加有(例如)该文件描述符,并且要求传输程序库存储器映射(memory map)到该状态上。在网络连接的转交之后,新的应用程序(作为应用程序、线程或进程)-即使它正在不同的地址空间内执行-能够进行存储器映射并继续使用该状态。此外,通过与内核和传输程序库之间使用的相同的支持原语(backing primitive),任意数量的应用程序可以共用具有与标准系统API指定的相同语义的网络连接。
(e)当传输程序库被停止、破坏或退出时传输协议操作的完成。
该步骤可以在网络接口设备的架构中实现,因为连接状态和协议代码可以保持内核常驻。OS内核代码能够以与普通的TCP(TCPk)协议栈相同的方式被告知应用程序的状态的变化。被停止的应用程序则不向预先的协议执行提供线程,但是该协议将通过定时器事件而继续,例如,如现有技术的内核栈协议。
存在许多新出现的协议,例如IETF RDMA和iSCSI。这些协议中的至少某些协议被设计为在其中TCP和其它协议代码在网络接口设备中运行的环境下运行。现在将描述使得这些协议能够在主机CPU上运行的设施(也就是,使用网络接口卡所连接的计算机的处理装置)。这样的实现是有利的,因为它使得用户能够利用针对协处理器的主CPU技术的价格/性能优势。
诸如RDMA的协议涉及成帧(framing)信息的嵌入和TCP流内的循环冗余校验(CRC)数据。尽管成帧信息对于协议程序库内的计算是微不足道的,但CRC(与校验和相反)计算量大,并且最好由硬件完成。为适应于该处理,当TCP流携带RDMA或类似的封装时,虚拟接口中的选项例如可以通过标志而被使能。当检测该选项时,NIC将对所发送的每一个分组进行解析,恢复RDMA帧,应用RDMA CRC算法,并在发送期间的空闲时间(on the fly)插入CCRC。可以有利地与要求计算量相对大的错误校验数据的计算的其它协议(例如,iSCSI)相关地使用类似的过程。
与这种系统一致,在接收到的分组使用类似的逻辑时,网络接口设备也可以校验CRC。这例如可以按照与标准TCP校验和卸载技术类似的方式执行。
诸如RDMA的协议也要求附加的操作,例如RDMA READ,在传统的实现中,其要求网络接口设备的附加智能。这种类型的实现导致通常认为RDMMTCP应该最好通过协处理器网络接口设备来执行。在此描述的类型的架构中,可以对特殊的硬件过滤器进行编码,以捕捉请求特定网络连接的上级协议。在这种环境下,NIC可以产生与定时器事件类似的事件,以请求通过在所连接的计算机上运行的软件来进行动作,并且发送数据消息。通过以这种方式触发事件,NIC可以获得下述的结果:传输程序库或者内核辅助器立即对该请求进行动作。这可以避免在传输程序库被调度之前内核扩展不执行的潜在问题,并且如果需要,可以应用于其他上级协议。
促进协处理器TCP实现的一个优势是,在发送和接收时执行零复制(zero-copy)的能力。在实践中,如果在接收路径上(对于上述的架构)没有上下文切换或其他缓存或TLB(发送后备缓冲器)充溢操作,则在接收时几乎没有单个复制的开销,因为这用于向处理器加载接收到的数据的目的。当应用程序随后访问该数据时,它不会受到缓存未命中的影响,而这可能是零复制接口的情况。
然而,在发送时,由传输程序库进行的单个复制确实在处理器循环和在缓存污染(pollution)中导致了附加的开销。如果实现例如下面的机制,则上述架构使得可以避免发送操作时的复制:
(i)可以快速地确认所发送的数据(例如,在低延迟环境中);另选地
(ii)在一次传输中的所有数据被发送之前,数据几乎完全被确认(例如,如果带宽×延迟的乘积小于消息的大小)。
传输程序库可以简单地保留发送缓冲器,直到来自它们的数据被确认为止,并且发送数据而不进行复制。当应用程序使用异步网络API时,也可以进行该处理。
即使在数据复制不可避免的情况下,传输程序库可以使用执行非临时存储的存储器复制例程。它们可以将被复制的数据留在存储器中(而不是缓存),因此避免了缓存污染。不在缓存中的数据被认为不会影响性能,因为下一传输步骤被认为是通过网络接口设备进行的数据的DMA,该DMA操作的性能不可能受到位于存储器中而不是缓存中的数据的影响。
图6表示由上述网络接口设备执行的过滤入局TCP分组的步骤。在步骤I,由网络接口设备从网络接收分组,并且该分组进入接收解码管道(pipeline)。在步骤ii,硬件从分组中提取相关位,并形成过滤器(在本例中为32位长),该过滤器被提供给CAM。相关位的构造和数量取决于所使用的协议;本示例涉及TCP/IP和UDP/IP。在步骤iii中,当进行CAM匹配时,导致返回索引:MATCH_IDX,该索引可用于查找发送信息(例如,用于该连接的下一接收缓冲器的存储器地址)。在步骤iv,该发送信息被反馈给分组解码管道,并且使得分组能够被发送到适当的存储器位置。
现在描述位的选择以及用它们形成过滤器。
网络接口设备可以(优选地在硬件中)中断或缓冲入局分组流,为了使它能够有效地暂停网络头部。这使得它可以在不影响数据流的情况下识别入局分组中的相关位序列。对于TCP和/或UDP分组,由于这种分组的简单头部设计(layout),所以位序列的识别例如可以使用简单的解码管道来实现。这导致寄存器中保存了大量字段。
可以假定,0既不是有效的端口号,也不是有效的IP地址,并且独立进程中的接口不共享本地IP地址和端口对(除了在fork()命令或等价命令之后共享套接字(socket)的情况)。后一条件意味着:当对接收到的TCP分组进行多路分解时,忽略本地IP地址是安全的。
对于侦听TCP套接字,只需要考虑本地IP和端口号,而对于已建立的TCP套接字,应该考虑远程IP和两个端口号。因此,由网络接口设备执行的处理应该(便利地,在硬件中)确定接收到的分组是TCP分组还是UDP分组,对于TCP分组,必须检查SYN和ACK位。于是可以相应地形成在CAM中查找的标记(token)。下表中示出了CAM的操作:
  位0-31   位32-47   位48-63
  TCP SYN=1&ACK=0   本地(目的地)IP   0   目的地端口
  其他TCP   远程(源)IP   源端口   目的地端口
  UDP   本地(目的地)IP   目的地端口   0
表1
在该表中,第1列表示接收到的分组的类型,其余列表示该标记的前32位、接下来的16位和最后16位的内容。如果一直使用相同的约定,则这些位的顺序是不重要的。
下表给出了示例:
  分组类型   位0-31   位32-47   位48-63
  1.侦听TCP   192.168.123.135   0   80
  2.已建立TCP   66.35.250.150   33028   80
  3.已建立TCP   66.35.250.150   23   28407
  4.UDP   192.168.123.135   123   0
表2
在这些示例中,编号1表示在192.168.123.135:80上的本地网络服务侦听的情形;编号2表示从66.35.250.150:33028通过服务器接收的连接的情形;编号3表示本地发起的到66.35.250.150的telnet连接;编号4表示应用程序在端口123接收UDP分组的情形。
通过分离出TCP SYN=1 & ACK=0的情形,如在表1的第1行中,可以保证这些条目与TCP连接请求消息(以处于LISTEN状态的套接字为目的地)匹配,但不与连接应答(以SYN_SENT状态的套接字为目的地)匹配。
零字段的其它组合可以用来对其它字段进行多路分解。例如,可以对以太网头部的ETHER_TYPE字段执行多路分解。
确定CAM过滤器的结构的逻辑依赖于所使用的协议。在实际实现时,CAM可以通过传输程序库代码经由虚拟接口来配置,使得能够对特定的实现动态地建立CAM。
在UDP协议下,UDP分组中指定的各个网络端点可以被如表1所示的过滤器唯一地识别。
在TCP协议下,为了明确地指定端点的唯一标识,该标识通常需要所有的主机和端口字段。出现这种需求是因为TCP协议定义允许:多个客户端与具有相同目的地主机和端口地址的网络端点相连;从客户端或者服务器发起连接;或者服务器网络端点在单个端点上接收连接请求并且产生新的网络端点来处理数据传输。
这种分组中的头部通常是96位长。然而,构造96位的过滤器对于大多数商业可用的CAM来说是低效率的,因为它们通常在64或128(而不是96)位宽度的情况下可用。下面的机制使得能够更有效地构造64位过滤器。可以选择CAM的长度以适于应用程序。适宜的大小可以是16kb。
(1)如果服务器(被动)套接字正在侦听新的连接,则所有有效的入局TCP分组会把它们的SYN位设置在它们的头部中,以表示需要使序列号同步。该类型的分组由NIC识别,并用于形成如表1所示的过滤器。注意,该过滤器的位设计意味着:由于零字段位置,所以该过滤器不能与具有相同的主机:端口对的UDP端点冲突。因此,该CAM过滤器的设计被用来表示协议解码情况。
(2)一旦建立了连接,则有效入局分组会将它们的SYN位设置为0,并且可以通过表1所示的逻辑被正确地过滤。
注意,在这种情况下,为了识别正确的目的地传输程序库,不再需要DEST(目的地)主机的标识,虽然该程序库在正常的接收过程中将作为其正常的分组确认过程的一部分而对该字段进行检查。对于各个分组,针对服务器(被动)连接、CAM的内容(由服务器传输程序库进行了编程)和由NIC提供给CAM的过滤器而示出了该过程,如图7中所示。该过程包括以下步骤:
(a)传输程序库通过驱动程序分配CAM条目。
(b)驱动程序通过其受保护的控制接口对硬件进行编程,以将所分配的CAM映射到被分配给传输程序库的虚拟接口的地址空间。
(c)传输程序库通过其虚拟接口对CAM条目进行编程。其中应用程序被认为不具有足够的访问权限来接收可编程的CAM条目,但是它可以通过OS调用来进行该处理。
(ii)TCP/IP连接分组到达。因为分组头部中的SYN位被设置为1,并且分组头部中的ACK位被设置为0,所以网络接口设备可以根据分组头部中的这些位构造该过滤器:
{目的地主机,0,目的地端口}
并将它提供给CAM。这导致产生与CAM索引X的匹配。网络接口设备随后可以查找并在SRAM中找到虚拟接口:β的基地址。然后NIC可以向虚拟接口β发送分组。
作为连接分组的结果,服务器应用程序可以创建另一网络端点,以处理该网络连接。该端点可以在它自己的或者另一应用程序的上下文中,从而可以由另一传输程序库管理。在任一情况下,可以创建将{目的地主机,端口}与{源主机,端口}相结合的网络连接,服务器使用{源主机,源端口,目的地端口}对新的CAM条目进行编程。
(iii)当分组对于新网络连接而到达时,它会把它的SYN位设置为0。这使NIC构造过滤器:
{源,主机源端口,目的地端口}
当将该过滤器提供给CAM时,导致产生与SRAM中的虚拟接口σ匹配的匹配索引θ。应当注意,如果网络连接由与服务器端点相同的传输程序库管理,则σ可以与β相同。
类似地,可以对由该主机发起的有效(客户端)连接以及TCP和UDP协议规范中规定的所有通信模型应用该解码。
这种解码方案的一个明显的好处是:它使得硬件能够只使用一个CAM查找就可以确定虚拟接口的地址。
优选地,网络接口设备还支持下述的操作模式,在该操作模式中,它简单地将分组多路分解到传输程序库,而不是到网络端点。这对于该设备处理网络和对与该网络的大量(例如数百万)连接进行服务所需的服务器之间的通信的情况是有益的。其示例可以是高容量的网络服务器节点。可以有两种选择。一种选择是在CAM中只存储
{目的地主机,目的地端口}
形式的过滤器。另一种选择是应用可以使用“don’t care(无关)”位掩盖的三元(ternary)CAM。应当注意,如果两种操作模式同时被使能,则当在接收到的分组中SYN位被设置为0时,由于必须构造不同的过滤器而使得可能需要两个CAM查找,所以效率可能会降低。如果一次只使能一种模式,则可以避免这种需要。
“网络接口卡”可以实现为物理卡或者它可以按照另一方式来实现,例如实现为集成电路,该集成电路被结合到数据处理设备的主板中。
通过这种方式,TCP/IP和UDP/IP分组都可以用64位的CAM进行匹配:与在使用标准大小的、逐位匹配整个头部的CAM所需的128位相反。
申请人在此分别公开了这里所描述的各个单独的特征,以及这些特征中的两个或更多个的任意组合,结合本领域的技术人员的公知常识,根据作为整体的本说明书,能够实现这些特征或者组合,而不考虑这些特征或者组合是否解决了在此公开的任何问题,并且不限于权利要求的范围。申请人指出,本发明的多个方面可以由任何这种单个特征和多个特征的组合构成。根据前面的描述,可以在本发明的范围内进行各种修改对于本领域的技术人员是显而易见的。

Claims (21)

1、一种通过数据处理系统发送数据的方法,该数据处理系统能够支持操作系统和至少一个应用程序,并且可以访问存储器和网络接口设备,所述网络接口设备能够支持通过网络与另一网络接口设备的通信连接,该方法包括以下步骤:
通过所述应用程序形成要发送的数据;
通过所述应用程序请求所述数据处理系统的非操作系统功能,以发送所述要发送的数据;
响应于该请求:
将所述要发送的数据写入所述存储器的一区域;以及
通过所述非操作系统功能和所述网络接口设备之间的直接通信发起所述数据中的至少某些数据的通过所述网络的发送操作;以及
随后通过所述操作系统访问所述存储器,并通过所述网络接口设备执行所述数据中的至少某些数据的通过所述网络的发送操作中的至少一部分。
2、如权利要求1所述的方法,其中,所述操作系统能够直接与所述网络接口设备通信。
3、如权利要求2所述的方法,其中,所述非操作系统功能与所述网络接口设备之间的所述直接通信绕过所述操作系统。
4、如权利要求1到3中的任意一项所述的方法,其中,所述非操作系统功能是传输程序库。
5、如权利要求1到3中的任意一项所述的方法,其中,所述存储器的所述区域被映射到所述存储器的第二区域,并且所述存储器的第二区域可由所述操作系统访问,但不可以由所述非操作系统功能直接访问。
6、如权利要求1到3中的任意一项所述的方法,该方法包括:当发起通过所述网络的数据的发送操作时,启动与所述数据相对应的定时器;以及如果在收到对于该数据的确认之前该定时器达到预定值,则从所述网络接口设备向所述数据处理系统发送失败消息。
7、如权利要求1到3中的任意一项所述的方法,该方法包括:当发起通过所述网络的数据的发送操作时,存储该操作的记录和作为该数据的源的应用程序的指示;以及当接收对于该应用程序的数据时,对于与该应用程序相关联的每个记录启动定时器;以及如果在收到对于该数据的确认之前该定时器达到预定值,则从所述网络接口设备向所述数据处理系统发送失败消息。
8、如权利要求6所述的方法,其中,所述定时器在所述网络接口设备上运行。
9、如权利要求6所述的方法,该方法包括:在接收到对于所述数据的确认时取消所述定时器,并且其中所述失败消息被送往所述操作系统。
10、如权利要求9所述的方法,其中,取消所述定时器的步骤包括:所述应用程序以绕过所述操作系统的方式向所述定时器在其上运行的实体发送信号。
11、如权利要求6所述的方法,其中,所述失败消息被送往作为所述数据的源的应用程序。
12、如权利要求11所述的方法,其中,所述操作系统响应被送往不再与所述网络接口设备通信的应用程序的失败消息,以执行与对应于所述失败消息的数据相关的发送操作中的至少一部分。
13、如权利要求12所述的方法,其中,发起所述数据中的至少某些数据的通过所述网络的所述发送操作的步骤还包括建立与所述数据相对应的所述定时器,并且所述方法还包括以下步骤:
如果通过网络接收到对于所述数据的确认,则取消所述定时器;或者
如果所述定时器达到了预定值,则通过所述网络接口设备向所述操作系统发送信号,以指示没有接收到对于所述数据的确认。
14、如权利要求13所述的方法,其中,所述信号发送包括向所述操作系统的事件队列中施加失败事件。
15、如权利要求13所述的方法,其中,所述定时器在所述网络接口设备上运行。
16、如权利要求13所述的方法,其中,响应于通过所述网络接口设备向所述操作系统发送信号以指示没有接收到对于所述数据的确认,而执行通过所述操作系统访问所述存储器,并通过所述网络接口设备执行所述数据中的至少某些数据的通过所述网络的发送操作中的至少一部分的步骤,所述操作系统执行所述发送操作的所述至少一部分,以进一步与所述另一网络设备进行通信。
17、一种用于发送数据的数据处理系统,该系统可以访问存储器和网络接口设备,所述网络接口设备能够支持通过网络与另一网络接口设备的通信连接,该系统具有:
应用程序单元,其被构造用来形成要发送的数据,使该数据被写入到所述存储器的一区域,并请求所述数据处理系统的非操作系统功能,以发送所述要发送的数据;
非操作系统功能单元,其被构造用来通过它自己和所述网络接口设备之间的直接通信发起所述数据中的至少某些数据的通过所述网络的发送操作;以及
操作系统单元,其被构造用来访问所述存储器,并通过所述网络接口设备执行所述数据中的至少某些数据的通过所述网络的发送操作中的至少一部分。
18、如权利要求17所述的数据处理系统,其中,在发起所述数据中的至少某些数据的通过所述网络的发送操作时,所述网络接口设备被构造为建立与所述数据相对应的定时器;并且
如果通过网络接收到对于所述数据的确认,则取消所述定时器;或者
如果所述定时器达到了预定值,则通过所述网络接口设备向所述操作系统发送信号,以指示没有接收到对于所述数据的确认。
19、一种通过数据处理系统接收数据的方法,该数据处理系统能够支持至少一个应用程序,并且可以访问存储器和网络接口设备,所述网络接口设备能够支持通过网络与另一网络接口设备的通信连接,该方法包括以下步骤:
通过所述数据处理系统的非操作系统功能而建立应用程序接收数据的通道,该通道与所述存储器的一区域相关联;
通过以下处理经由所述通道接收数据:
所述网络接口设备将接收到的数据写到所述存储器的所述区域;以及
所述应用程序从所述区域读取接收到的数据;并且随后
如果所述应用程序不能与所述网络接口设备进行通信,则所述数据处理系统的操作系统从所述区域读取接收到的数据。
20、如权利要求19所述的方法,其中,所述操作系统被设置为在确定所述应用程序不能与所述网络接口设备进行通信时自动地从所述区域读取接收到的数据。
21、一种接收数据的系统,该系统包括:
网络接口设备,其能够支持通过网络与另一网络接口设备的通信连接;
数据处理系统,其支持操作系统和至少一个应用程序,并且可以访问存储器和所述网络接口设备,该数据处理系统还支持非操作系统功能,该非操作系统功能被构造用来建立应用程序接收数据的通道,该通道与所述存储器的一区域相关联;
所述网络接口设备被构造用来将接收到的数据写入所述存储器的所述区域;
所述应用程序被构造用来从所述区域读取接收到的数据;并且
所述操作系统被构造为如果所述应用程序不能与所述网络接口设备通信,则从所述区域读取接收到的数据。
CNB2005800117777A 2004-04-21 2005-04-21 发送数据的方法和系统及接收数据的方法和系统 Active CN100478926C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB0408876.1A GB0408876D0 (en) 2004-04-21 2004-04-21 User-level stack
GB0408876.1 2004-04-21

Publications (2)

Publication Number Publication Date
CN1969267A CN1969267A (zh) 2007-05-23
CN100478926C true CN100478926C (zh) 2009-04-15

Family

ID=32344135

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005800117777A Active CN100478926C (zh) 2004-04-21 2005-04-21 发送数据的方法和系统及接收数据的方法和系统

Country Status (7)

Country Link
US (2) US8005916B2 (zh)
EP (2) EP1738266B1 (zh)
JP (2) JP4825794B2 (zh)
CN (1) CN100478926C (zh)
AT (2) ATE533107T1 (zh)
GB (1) GB0408876D0 (zh)
WO (1) WO2005104475A2 (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185602B2 (en) * 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
EP3217285B1 (en) 2005-03-10 2021-04-28 Xilinx, Inc. Transmitting data
EP1891787B1 (en) 2005-06-15 2010-03-24 Solarflare Communications Incorporated Data processing system
GB0600417D0 (en) 2006-01-10 2006-02-15 Level 5 Networks Inc Virtualisation support
ATE492974T1 (de) * 2005-12-28 2011-01-15 Solarflare Communications Inc Verarbeitung empfangener daten
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US9948533B2 (en) 2006-07-10 2018-04-17 Solarflare Communitations, Inc. Interrupt management
US9686117B2 (en) 2006-07-10 2017-06-20 Solarflare Communications, Inc. Chimney onload implementation of network protocol stack
US8489761B2 (en) 2006-07-10 2013-07-16 Solarflare Communications, Inc. Onload network protocol stacks
US8089180B2 (en) * 2007-01-16 2012-01-03 Panasonic Corporation Integrated circuit device, method of controlling operation of integrated circuit device, and method of fabricating integrated circuit device
FR2939994B1 (fr) * 2008-12-12 2010-12-17 Canon Kk Procede de transmission d'un flux de donnees multi-canal sur un tunnel multi-transport, produit programme d'ordinateur, moyen de stockage et tetes de tunnel correspondantes
JP5871619B2 (ja) 2008-12-15 2016-03-01 アイ・ピー・リザブワー・エル・エル・シー 金融市場深度データの高速処理のための方法および装置
US8908542B2 (en) * 2009-12-22 2014-12-09 At&T Mobility Ii Llc Voice quality analysis device and method thereof
US9100459B2 (en) * 2010-04-30 2015-08-04 Qualcomm Incorporated Exchanging data associated with a communication session within a communications system
WO2012035689A1 (en) 2010-09-16 2012-03-22 Nec Corporation Network system and frame communication method
JP5344382B2 (ja) * 2010-11-02 2013-11-20 日本電気株式会社 ネットワークシステム及びフレーム通信方法
CN104734993B (zh) * 2013-12-24 2018-05-18 杭州华为数字技术有限公司 数据分流方法及分流器
US9563588B1 (en) 2014-01-29 2017-02-07 Google Inc. OS bypass inter-processor interrupt delivery mechanism
US9774706B2 (en) 2014-09-30 2017-09-26 Level 3 Communications, Llc Providing functional requirements for a network connection from a local library
US10320918B1 (en) * 2014-12-17 2019-06-11 Xilinx, Inc. Data-flow architecture for a TCP offload engine
US10749734B2 (en) * 2015-07-07 2020-08-18 International Business Machines Corporation Management of events and moving objects
EP3402172B1 (en) * 2017-05-12 2021-02-17 Xilinx, Inc. A data processing system
US11146508B2 (en) 2017-05-12 2021-10-12 Xilinx, Inc. Data processing system
US11093284B2 (en) 2017-05-12 2021-08-17 Xilinx, Inc. Data processing system
US10600322B2 (en) 2017-06-21 2020-03-24 International Business Machines Corporation Management of mobile objects
US10504368B2 (en) 2017-06-21 2019-12-10 International Business Machines Corporation Management of mobile objects
JP7096094B2 (ja) 2017-07-28 2022-07-05 積水化学工業株式会社 樹脂製透明継手
US10616339B2 (en) 2017-11-28 2020-04-07 Dell Products, L.P. System and method to configure, manage, and monitor stacking of ethernet devices in a software defined network
US11150817B2 (en) 2019-02-08 2021-10-19 International Business Machines Corporation Integrating kernel-bypass user-level file systems into legacy applications
US11734156B2 (en) * 2021-09-23 2023-08-22 Microsoft Technology Licensing, Llc Crash localization using crash frame sequence labelling

Family Cites Families (184)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2002A (en) * 1841-03-12 Tor and planter for plowing
US2545194A (en) * 1945-11-14 1951-03-13 Allan P Colburn Adsorption process for removal of carbon dioxide from the atmosphere of a submarine
US3491031A (en) * 1966-11-18 1970-01-20 Calgon C0Rp Reactivation of monoethanolamine impregnated activated carbon
US3594983A (en) * 1969-06-17 1971-07-27 Process Services Inc Gas-treating process and system
FR2127112A5 (zh) * 1971-02-24 1972-10-13 Air Liquide
US4005708A (en) * 1974-04-29 1977-02-01 A-T-O Inc. Apparatus for endothermal absorption of carbon dioxide
US4539189A (en) * 1984-01-23 1985-09-03 Chevron Research Company Method for removing sulfides from industrial gas
DE3572129D1 (en) * 1985-02-01 1989-09-14 Euratom Process for selective adsorption of sulfur compounds from gaseous mixtures containing mercaptans
US4675309A (en) * 1985-04-22 1987-06-23 Hidefumi Hirai Adsorbent for use in selective gas adsorption-separation and a process for producing the same
US4668255A (en) * 1985-10-30 1987-05-26 University Of Cincinnati Adsorption of gases by amine complexed Mn (II)
JPS6359322A (ja) 1986-08-29 1988-03-15 Arai Tekkosho:Kk 多目的分離装置
US4822383A (en) * 1987-04-30 1989-04-18 United Technologies Corporation Method and apparatus for removing carbon dioxide from air
JPH01149155A (ja) * 1987-12-07 1989-06-12 Yokogawa Electric Corp I/oチャネル制御装置
US4810266A (en) * 1988-02-25 1989-03-07 Allied-Signal Inc. Carbon dioxide removal using aminated carbon molecular sieves
JP2653370B2 (ja) 1989-01-12 1997-09-17 住友重機械工業株式会社 Co▲下2▼吸着用アミン系イオン交換樹脂の再生方法
DK0733395T3 (da) * 1991-10-09 2004-05-03 Kansai Electric Power Co Udvinding af carbondioxid fra forbrændingsudstødningsgas
EP0551191B1 (en) * 1992-01-09 2000-04-12 Cabletron Systems, Inc. Apparatus and method for transferring data to and from host system
US5281254A (en) * 1992-05-22 1994-01-25 United Technologies Corporation Continuous carbon dioxide and water removal system
US5325532A (en) 1992-09-25 1994-06-28 Compaq Computer Corporation Automatic development of operating system boot image
US5376614A (en) * 1992-12-11 1994-12-27 United Technologies Corporation Regenerable supported amine-polyol sorbent
EP0610677A3 (en) * 1993-02-12 1995-08-02 Ibm Communication device management module operating in two modes.
US5272599A (en) 1993-03-19 1993-12-21 Compaq Computer Corporation Microprocessor heat dissipation apparatus for a printed circuit board
CA2098513C (en) * 1993-06-16 2000-10-24 Septimus Hsien-Chai Liang Organic amine impregnated activated carbon
US5518626A (en) * 1993-12-23 1996-05-21 United Technologies Corporation Process employing thermally sterilizable aqueous polishing agents
JPH0816493A (ja) * 1994-06-30 1996-01-19 Canon Inc スキャナプリンタサーバーシステムのデータ通信制御方法
US6098112A (en) 1995-10-19 2000-08-01 Hewlett-Packard Company Streams function registering
US5913024A (en) * 1996-02-09 1999-06-15 Secure Computing Corporation Secure server utilizing separate protocol stacks
US5876488A (en) * 1996-10-22 1999-03-02 United Technologies Corporation Regenerable solid amine sorbent
US5886872A (en) 1997-04-23 1999-03-23 Compaq Computer Corporation Pivotable support and heat sink apparatus removably connectable without tools to a computer processor
US6049842A (en) * 1997-05-01 2000-04-11 International Business Machines Corporation Efficient data transfer mechanism for input/output devices
US6397316B2 (en) * 1997-07-24 2002-05-28 Intel Corporation System for reducing bus overhead for communication with a network interface
US6160554A (en) 1998-03-19 2000-12-12 Hewlett Packard Company Computer file content preview window
US6002804A (en) 1998-03-26 1999-12-14 Hewlett-Packard Company Tone dependent variable halftoning with adjustable algorithm selection
US6246683B1 (en) * 1998-05-01 2001-06-12 3Com Corporation Receive processing with network protocol bypass
JP3628514B2 (ja) * 1998-05-14 2005-03-16 株式会社日立製作所 計算機間データ送受信方法
US6865672B1 (en) * 1998-05-18 2005-03-08 Spearhead Technologies, Ltd. System and method for securing a computer communication network
US6260127B1 (en) 1998-07-13 2001-07-10 Compaq Computer Corporation Method and apparatus for supporting heterogeneous memory in computer systems
US6768996B1 (en) 1998-10-08 2004-07-27 Hewlett-Packard Development Company, L.P. System and method for retrieving an abstracted portion of a file without regard to the operating system of the current host computer
US6360241B1 (en) 1999-02-01 2002-03-19 Compaq Information Technologies Goup, L.P. Computer method and apparatus for division and square root operations using signed digit
US6466952B2 (en) 1999-04-08 2002-10-15 Hewlett-Packard Company Method for transferring and indexing data from old media to new media
US6502203B2 (en) 1999-04-16 2002-12-31 Compaq Information Technologies Group, L.P. Method and apparatus for cluster system operation
US6304945B1 (en) 1999-05-13 2001-10-16 Compaq Computer Corporation Method and apparatus for maintaining cache coherency in a computer system having multiple processor buses
US20020133620A1 (en) * 1999-05-24 2002-09-19 Krause Michael R. Access control in a network system
US7318102B1 (en) 1999-05-24 2008-01-08 Hewlett-Packard Development Company, L.P. Reliable datagram
US20030195983A1 (en) * 1999-05-24 2003-10-16 Krause Michael R. Network congestion management using aggressive timers
AU7036400A (en) 1999-09-08 2001-04-10 Mellanox Technologies Ltd. Synchronization of interrupts with data packets
US20030222693A1 (en) 1999-12-28 2003-12-04 Shai Cohen Variable delay generator
DE10009570A1 (de) * 2000-02-29 2001-08-30 Partec Ag Verfahren zur Steuerung der Kommunikation von Einzelrechnern in einem Rechnerverbund
US6799220B1 (en) * 2000-04-13 2004-09-28 Intel Corporation Tunneling management messages over a channel architecture network
US7103626B1 (en) 2000-05-24 2006-09-05 Hewlett-Packard Development, L.P. Partitioning in distributed computer system
DE60135127D1 (de) 2000-05-24 2008-09-11 Voltaire Ltd Gefilterte kommunikation von anwendung zu anwendung
AU6420001A (en) 2000-06-02 2001-12-11 Mellanox Technologies Ltd. Dma doorbell
US6690757B1 (en) 2000-06-20 2004-02-10 Hewlett-Packard Development Company, L.P. High-speed interconnection adapter having automated lane de-skew
US6364938B1 (en) * 2000-08-17 2002-04-02 Hamilton Sundstrand Corporation Sorbent system and method for absorbing carbon dioxide (CO2) from the atmosphere of a closed habitable environment
EP1327196A4 (en) 2000-08-24 2005-03-09 Voltaire Advanced Data Securit SYSTEM AND METHOD FOR HIGH SPEED-BASED CONTENT-BASED FILTERING, EXTREMELY EXPANDABLE AND LOAD BALANCING IN INTERCONNECTED FABRICS
US6765922B1 (en) 2000-09-08 2004-07-20 Hewlett-Packard Development Company, L.P. Speculative transmit for system area network latency reduction
US20020059052A1 (en) 2000-09-12 2002-05-16 Mellanox Technologies Ltd. Co-simulation of network components
US6349035B1 (en) 2000-09-29 2002-02-19 Compaq Information Technologies Group, L.P. Method and apparatus for tooless mating of liquid cooled cold plate with tapered interposer heat sink
US6718392B1 (en) 2000-10-24 2004-04-06 Hewlett-Packard Development Company, L.P. Queue pair partitioning in distributed computer system
AUPR108900A0 (en) 2000-10-28 2000-11-23 S4 Technology Pty Limited Modular digital transmission assembly
US6871296B2 (en) * 2000-12-29 2005-03-22 International Business Machines Corporation Highly available TCP systems with fail over connections
US6728743B2 (en) 2001-01-04 2004-04-27 Mellanox Technologies Ltd. Modulo remainder generator
US6898638B2 (en) * 2001-01-11 2005-05-24 International Business Machines Corporation Method and apparatus for grouping data for transfer according to recipient buffer size
US7254237B1 (en) 2001-01-12 2007-08-07 Slt Logic, Llc System and method for establishing a secure connection
US6950961B2 (en) 2001-02-13 2005-09-27 Hewlett-Packard Development Company, L.P. Highly available, monotonic increasing sequence number generation
GB2372914B (en) * 2001-02-28 2003-12-24 3Com Corp Direct data placement and message reassembly
US20020129293A1 (en) 2001-03-07 2002-09-12 Hutton John F. Scan based multiple ring oscillator structure for on-chip speed measurement
US20020140985A1 (en) 2001-04-02 2002-10-03 Hudson Kevin R. Color calibration for clustered printing
US7543290B2 (en) 2001-04-11 2009-06-02 Mellanox Technologies Ltd. Multiple queue pair access with single doorbell
US20020152328A1 (en) 2001-04-11 2002-10-17 Mellanox Technologies, Ltd. Network adapter with shared database for message context information
US6901052B2 (en) 2001-05-04 2005-05-31 Slt Logic Llc System and method for policing multiple data flows and multi-protocol data flows
US6944168B2 (en) 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream
US6904057B2 (en) 2001-05-04 2005-06-07 Slt Logic Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US7042848B2 (en) 2001-05-04 2006-05-09 Slt Logic Llc System and method for hierarchical policing of flows and subflows of a data stream
US6438130B1 (en) 2001-06-28 2002-08-20 Mellanox Technologies Ltd. Forwarding database cache
US6980328B2 (en) 2001-07-05 2005-12-27 Hewlett-Packard Development Company, L.P. Direction-dependent color conversion in bidirectional printing
US7136397B2 (en) 2001-08-20 2006-11-14 Slt Logic Llc Network architecture and system for delivering bi-directional xDSL based services
US7099275B2 (en) 2001-09-21 2006-08-29 Slt Logic Llc Programmable multi-service queue scheduler
US7151744B2 (en) 2001-09-21 2006-12-19 Slt Logic Llc Multi-service queuing method and apparatus that provides exhaustive arbitration, load balancing, and support for rapid port failover
US7161719B2 (en) 2001-09-26 2007-01-09 Hewlett-Packard Development Company, L.P. Generalized color calibration architecture and method
US6904534B2 (en) 2001-09-29 2005-06-07 Hewlett-Packard Development Company, L.P. Progressive CPU sleep state duty cycle to limit peak power of multiple computers on shared power distribution unit
US7023584B2 (en) 2001-10-02 2006-04-04 Hewlett-Packard Development Company, L.P. Color calibration method and apparatus
US20030065856A1 (en) 2001-10-03 2003-04-03 Mellanox Technologies Ltd. Network adapter with multiple event queues
US7054035B2 (en) 2001-10-29 2006-05-30 Hewlett-Packard Development Company, L.P. Method and system for management of color through conversion between color spaces
US7228550B1 (en) 2002-01-07 2007-06-05 Slt Logic, Llc System and method for making communication streams available to processes executing under control of an operating system but without the intervention of the operating system
US7093158B2 (en) 2002-03-11 2006-08-15 Hewlett-Packard Development Company, L.P. Data redundancy in a hot pluggable, large symmetric multi-processor system
JP2004007354A (ja) * 2002-04-02 2004-01-08 Nippon Telegr & Teleph Corp <Ntt> 計算機間データ転送方法及びデータ同報配信方法
US7245627B2 (en) 2002-04-23 2007-07-17 Mellanox Technologies Ltd. Sharing a network interface card among multiple hosts
US6705703B2 (en) 2002-04-24 2004-03-16 Hewlett-Packard Development Company, L.P. Determination of control points for construction of first color space-to-second color space look-up table
US6667918B2 (en) 2002-05-01 2003-12-23 Mellanox Technologies Ltd. Self-repair of embedded memory arrays
US7149227B2 (en) 2002-05-31 2006-12-12 Mellanox Technologies Ltd. Round-robin arbiter with low jitter
US7487264B2 (en) * 2002-06-11 2009-02-03 Pandya Ashish A High performance IP processor
CN1169063C (zh) 2002-06-21 2004-09-29 华中科技大学 现场总线与串行接口设备间的协议转换方法
US7024672B2 (en) * 2002-06-26 2006-04-04 Microsoft Corporation Process-mode independent driver model
JP2004054657A (ja) * 2002-07-22 2004-02-19 Canon Inc ネットワークデバイス管理装置
US7263103B2 (en) 2002-07-23 2007-08-28 Mellanox Technologies Ltd. Receive queue descriptor pool
US7143412B2 (en) 2002-07-25 2006-11-28 Hewlett-Packard Development Company, L.P. Method and apparatus for optimizing performance in a multi-processing system
US7631106B2 (en) 2002-08-15 2009-12-08 Mellanox Technologies Ltd. Prefetching of receive queue descriptors
US8631162B2 (en) * 2002-08-30 2014-01-14 Broadcom Corporation System and method for network interfacing in a multiple network environment
US8230090B2 (en) * 2002-09-11 2012-07-24 Broadcom Corporation System and method for TCP offloading and uploading
US7299266B2 (en) * 2002-09-05 2007-11-20 International Business Machines Corporation Memory management offload for RDMA enabled network adapters
US7316017B1 (en) 2003-01-06 2008-01-01 Slt Logic, Llc System and method for allocatiing communications to processors and rescheduling processes in a multiprocessor system
US7386619B1 (en) 2003-01-06 2008-06-10 Slt Logic, Llc System and method for allocating communications to processors in a multiprocessor system
US7190827B2 (en) 2003-01-22 2007-03-13 Hewlett-Packard Development Company, L.P. Color space conversion using interpolation
US7502826B2 (en) 2003-03-27 2009-03-10 Hewlett-Packard Development Company, L.P. Atomic operations
US8023520B2 (en) 2003-03-27 2011-09-20 Hewlett-Packard Development Company, L.P. Signaling packet
US7554993B2 (en) 2003-03-27 2009-06-30 Hewlett-Packard Development Company, L.P. Method and apparatus for performing connection management with multiple stacks
US7103744B2 (en) 2003-03-27 2006-09-05 Hewlett-Packard Development Company, L.P. Binding a memory window to a queue pair
US20040210754A1 (en) 2003-04-16 2004-10-21 Barron Dwight L. Shared security transform device, system and methods
US20050021680A1 (en) * 2003-05-12 2005-01-27 Pete Ekis System and method for interfacing TCP offload engines using an interposed socket library
US20040252685A1 (en) 2003-06-13 2004-12-16 Mellanox Technologies Ltd. Channel adapter with integrated switch
US7352893B2 (en) 2003-07-09 2008-04-01 Hewlett-Packard Development Company, L.P. Representing extended color gamut information
US7446901B2 (en) 2003-07-21 2008-11-04 Hewlett-Packard Development Company Conforming output intensities of pens
US20050039171A1 (en) 2003-08-12 2005-02-17 Avakian Arra E. Using interceptors and out-of-band data to monitor the performance of Java 2 enterprise edition (J2EE) applications
US7496903B2 (en) 2003-08-12 2009-02-24 Hewlett-Packard Development Company, L.P. Synthesizing application response measurement (ARM) instrumentation
US7484209B2 (en) 2003-08-12 2009-01-27 Hewlett-Packard Development Company, L.P. Instrumenting java code by modifying bytecodes
US7617376B2 (en) 2003-08-14 2009-11-10 Hewlett-Packard Development Company, L.P. Method and apparatus for accessing a memory
US7757232B2 (en) 2003-08-14 2010-07-13 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing work request lists
US7404190B2 (en) 2003-09-18 2008-07-22 Hewlett-Packard Development Company, L.P. Method and apparatus for providing notification via multiple completion queue handlers
US7543037B2 (en) * 2003-12-02 2009-06-02 International Business Machines Corporation RDMA completion and retransmit system and method
US7653754B2 (en) 2004-01-05 2010-01-26 Mellanox Technologies Ltd. Method, system and protocol that enable unrestricted user-level access to a network interface adapter
US20050172181A1 (en) 2004-01-16 2005-08-04 Mellanox Technologies Ltd. System and method for production testing of high speed communications receivers
US7168784B2 (en) 2004-03-30 2007-01-30 Hewlett-Packard Development Company, L.P. Formation of images
US20050219278A1 (en) 2004-03-30 2005-10-06 Hudson Kevin R Image formation with a flexible number of passes
US7929161B2 (en) 2004-04-15 2011-04-19 Hewlett-Packard Development Company, L.P. Image processing system and method
US7650386B2 (en) 2004-07-29 2010-01-19 Hewlett-Packard Development Company, L.P. Communication among partitioned devices
US20060045098A1 (en) 2004-08-31 2006-03-02 Krause Michael R System for port mapping in a network
US7551614B2 (en) 2004-12-14 2009-06-23 Hewlett-Packard Development Company, L.P. Aggregation over multiple processing nodes of network resources each providing offloaded connections between applications over a network
US7403535B2 (en) 2004-12-14 2008-07-22 Hewlett-Packard Development Company, L.P. Aggregation of network resources providing offloaded connections between applications over a network
US20060193318A1 (en) 2005-02-28 2006-08-31 Sriram Narasimhan Method and apparatus for processing inbound and outbound quanta of data
US7674564B2 (en) 2005-04-11 2010-03-09 Hewlett-Packard Development Company, L.P. Color filter
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
US7580495B2 (en) 2005-06-30 2009-08-25 Slt Logic Llc Mixer-based phase control
US7573967B2 (en) 2005-07-01 2009-08-11 Slt Logic Llc Input threshold adjustment in a synchronous data sampling circuit
US8645964B2 (en) 2005-08-23 2014-02-04 Mellanox Technologies Ltd. System and method for accelerating input/output access operation on a virtual machine
US7813460B2 (en) 2005-09-30 2010-10-12 Slt Logic, Llc High-speed data sampler with input threshold adjustment
US7285996B2 (en) 2005-09-30 2007-10-23 Slt Logic, Llc Delay-locked loop
US9104894B2 (en) 2005-12-16 2015-08-11 Hewlett-Packard Development Company, L.P. Hardware enablement using an interface
US7827442B2 (en) 2006-01-23 2010-11-02 Slt Logic Llc Shelf management controller with hardware/software implemented dual redundant configuration
US7518164B2 (en) 2006-03-29 2009-04-14 Mellanox Technologies Ltd. Current-triggered low turn-on voltage SCR
US9111602B2 (en) 2006-04-07 2015-08-18 Mellanox Technologies, Ltd. Accurate global reference voltage distribution system with local reference voltages referred to local ground and locally supplied voltage
US7514978B2 (en) 2006-05-08 2009-04-07 Mellanox Technologies Ltd. Terminated input buffer with offset cancellation circuit
US7567267B2 (en) 2006-07-31 2009-07-28 Hewlett-Packard Development Company, L.P. System and method for calibrating a beam array of a printer
US7822594B2 (en) 2006-08-07 2010-10-26 Voltaire Ltd. Service-oriented infrastructure management
US8948199B2 (en) 2006-08-30 2015-02-03 Mellanox Technologies Ltd. Fibre channel processing by a host channel adapter
US7801027B2 (en) 2006-08-30 2010-09-21 Mellanox Technologies Ltd. Auto-negotiation by nodes on an infiniband fabric
US8522042B2 (en) 2006-10-31 2013-08-27 Hewlett-Packard Development Company, L.P. Method and apparatus for enforcement of software licence protection
US8296849B2 (en) 2006-10-31 2012-10-23 Hewlett-Packard Development Company, L.P. Method and apparatus for removing homogeneity from execution environment of computing system
US20080115217A1 (en) 2006-10-31 2008-05-15 Hewlett-Packard Development Company, L.P. Method and apparatus for protection of a computer system from malicious code attacks
US8244825B2 (en) 2006-11-06 2012-08-14 Hewlett-Packard Development Company, L.P. Remote direct memory access (RDMA) completion
US8233380B2 (en) 2006-11-06 2012-07-31 Hewlett-Packard Development Company, L.P. RDMA QP simplex switchless connection
US20080135774A1 (en) 2006-12-08 2008-06-12 Asml Netherlands B.V. Scatterometer, a lithographic apparatus and a focus analysis method
US8909742B2 (en) 2006-12-18 2014-12-09 Hewlett-Packard Development Company, L.P. Distributed configuration of network interface cards
US7864787B2 (en) 2007-03-26 2011-01-04 Voltaire Ltd. Device, system and method of multicast communication
US7848322B2 (en) 2007-03-26 2010-12-07 Voltaire Ltd. Device, system and method of UDP communication
US7856488B2 (en) 2007-03-30 2010-12-21 Hewlett-Packard Development Company, L.P. Electronic device profile migration
WO2008127672A2 (en) 2007-04-11 2008-10-23 Slt Logic Llc Modular blade for providing scalable mechanical, electrical and environmental functionality in the enterprise using advanced tca boards
US8817817B2 (en) 2007-06-06 2014-08-26 Hewlett-Packard Development Company, L.P. Method for ethernet power savings on link aggregated groups
US7802071B2 (en) 2007-07-16 2010-09-21 Voltaire Ltd. Device, system, and method of publishing information to multiple subscribers
US20090165003A1 (en) 2007-12-21 2009-06-25 Van Jacobson System and method for allocating communications to processors and rescheduling processes in a multiprocessor system
KR101408390B1 (ko) 2008-04-28 2014-06-17 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 데이터 전송 레이트 모니터 및 최대 데이터 전송 레이트 제어 방법
US8248930B2 (en) 2008-04-29 2012-08-21 Google Inc. Method and apparatus for a network queuing engine and congestion management gateway
US8520686B2 (en) 2008-05-08 2013-08-27 Hewlett-Packard Development Company, L.P. Method for interfacing a fibre channel network with an ethernet based network
US8108538B2 (en) 2008-08-21 2012-01-31 Voltaire Ltd. Device, system, and method of distributing messages
US20100088437A1 (en) 2008-10-06 2010-04-08 Mellanox Technologies Ltd Infiniband adaptive congestion control adaptive marking rate
US7921178B2 (en) 2008-12-04 2011-04-05 Voltaire Ltd. Device, system, and method of accessing storage
US8201168B2 (en) 2008-12-25 2012-06-12 Voltaire Ltd. Virtual input-output connections for machine virtualization
US8370675B2 (en) 2009-01-28 2013-02-05 Mellanox Technologies Ltd. Precise clock synchronization
US20110289210A1 (en) 2009-01-29 2011-11-24 Kelley Keith L Connecting ports of one or more electronic devices to different subsets of networks based on different operating modes
US8000336B2 (en) 2009-04-21 2011-08-16 Voltaire Ltd. Spanning tree root selection in a hierarchical network
US8255475B2 (en) 2009-04-28 2012-08-28 Mellanox Technologies Ltd. Network interface device with memory management capabilities
US8407478B2 (en) 2009-07-07 2013-03-26 Mellanox Technologies Ltd. Control message signature for device control
US8365057B2 (en) 2009-07-30 2013-01-29 Mellanox Technologies Ltd Processing of data integrity field
US8644140B2 (en) 2009-09-09 2014-02-04 Mellanox Technologies Ltd. Data switch with shared port buffers
US8225182B2 (en) 2009-10-04 2012-07-17 Mellanox Technologies Ltd. Processing of block and transaction signatures
US7934959B2 (en) 2009-10-06 2011-05-03 Mellanox Technologies Ltd. Adapter for pluggable module
WO2011043768A1 (en) 2009-10-07 2011-04-14 Ziebel, As Combination injection string and distributed sensing string
US8576715B2 (en) 2009-10-26 2013-11-05 Mellanox Technologies Ltd. High-performance adaptive routing
WO2011053305A1 (en) 2009-10-30 2011-05-05 Hewlett-Packard Development Co Thermal bus bar for a blade enclosure
EP2497023B1 (en) 2009-11-02 2015-02-25 Hewlett Packard Development Company, L.P. Multiprocessing computing with distributed embedded switching
US9110860B2 (en) 2009-11-11 2015-08-18 Mellanox Technologies Tlv Ltd. Topology-aware fabric-based offloading of collective functions
US8811417B2 (en) 2009-11-15 2014-08-19 Mellanox Technologies Ltd. Cross-channel network operation offloading for collective operations
US8213315B2 (en) 2009-11-19 2012-07-03 Mellanox Technologies Ltd. Dynamically-connected transport service
US20110173352A1 (en) 2010-01-13 2011-07-14 Mellanox Technologies Ltd Power Reduction on Idle Communication Lanes

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Evolution of the Virtual Interface Architecture. Thorsten von Eicken, Werner Vogels.Computer. 1998
Evolution of the Virtual Interface Architecture. Thorsten von Eicken, Werner Vogels.Computer. 1998 *

Also Published As

Publication number Publication date
ATE545911T1 (de) 2012-03-15
EP1738266B1 (en) 2011-11-09
JP5282115B2 (ja) 2013-09-04
EP2273375A1 (en) 2011-01-12
JP2011141894A (ja) 2011-07-21
US20110264758A1 (en) 2011-10-27
EP1738266A2 (en) 2007-01-03
ATE533107T1 (de) 2011-11-15
CN1969267A (zh) 2007-05-23
WO2005104475A3 (en) 2006-04-27
JP2007534073A (ja) 2007-11-22
US8005916B2 (en) 2011-08-23
WO2005104475A2 (en) 2005-11-03
GB0408876D0 (en) 2004-05-26
US8612536B2 (en) 2013-12-17
US20050226165A1 (en) 2005-10-13
JP4825794B2 (ja) 2011-11-30
EP2273375B1 (en) 2012-02-15

Similar Documents

Publication Publication Date Title
CN100478926C (zh) 发送数据的方法和系统及接收数据的方法和系统
US7404190B2 (en) Method and apparatus for providing notification via multiple completion queue handlers
US8537828B2 (en) Scalable interface for connecting multiple computer systems which performs parallel MPI header matching
US7145837B2 (en) Global recovery for time of day synchronization
JP3606551B2 (ja) 割込アーキテクチャを含むデータ処理システム、方法および記憶媒体
US7668923B2 (en) Master-slave adapter
US6888792B2 (en) Technique to provide automatic failover for channel-based communications
US20070041383A1 (en) Third party node initiated remote direct memory access
US5790807A (en) Computer sysem data I/O by reference among CPUS and I/O devices
US20050081080A1 (en) Error recovery for data processing systems transferring message packets through communications adapters
US20050091383A1 (en) Efficient zero copy transfer of messages between nodes in a data processing system
JPH10133917A (ja) コヒーレンシー関連エラー・ロッジング能力を有するマルチプロセス・システム
US20050080869A1 (en) Transferring message packets from a first node to a plurality of nodes in broadcast fashion via direct memory to memory transfer
US8122301B2 (en) Performing remote loads and stores over networks
US20050080920A1 (en) Interpartition control facility for processing commands that effectuate direct memory to memory information transfer
US20050080945A1 (en) Transferring message packets from data continued in disparate areas of source memory via preloading
US8311051B2 (en) Use of hardware to manage dependencies between groups of network data packets
US5924122A (en) Method for error recovery spinlock in asymmetrically accessed multiprocessor shared memory
JP4572138B2 (ja) サーバ装置、サーバシステム、及びサーバシステムでの系切り換え方法
CN1965542A (zh) 处理分组标头
WO2005088458A2 (en) A method and system for coalescing coherence messages
EP1463997B1 (en) Interdomain data transfer
JP2003108400A (ja) 分散共有メモリシステム及び分散共有メモリ制御方法
Ong Network virtual memory

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
ASS Succession or assignment of patent right

Owner name: SOLE FLAIR COMMUNICATIONS COMPANY

Free format text: FORMER OWNER: FIFTH-GRADE NETWORK COMPANY

Effective date: 20090612

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20090612

Address after: American California

Patentee after: Solarflare Comm Inc.

Address before: American California

Patentee before: Level 5 Networks Inc.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20191220

Address after: California, USA

Patentee after: XILINX INC

Address before: California, USA

Patentee before: Solarflare Comm Inc.