专利名称:在多nic rdma激活设备中的状态迁移的制作方法
技术领域:
本发明一般地涉及网络化,更具体地涉及网络化设备中CPU资源更有效的使用。
背景技术:
网络计算已经变得几乎无处不在,目前使用的许多计算机有多个网络接口控制器,即多个NIC。这些NIC所允许的数据传输速率比CPU处理能力和可用于处理这些数据的存储系统带宽增长更快。因此,更多的这些处理移入NIC卡中。虽然这个解决方法起到一定作用,但是其他的标准组织已经开发了一些协议,这些协议进一步帮助把网络处理负担从CPU和存储器总线卸载到NIC上。
一个这样的协议是远程直接存储器存取,或曰RDMA。RDMA是允许NIC卡把数据放在计算机系统主存储器中的预定存储位置内的协议。在标准的网络协议栈中,RDMA软件正好在传输控制协议(TPC)软件之上。这使在CPU介入最小的情况下把数据包直接放在系统存储器中。
RDMA协议用于使第一机器上的主系统存储器的一个区直接可用于一个远程第二机器。该协议把在第一机器中的存储器与被称为STag的句柄联系在一起。为了从第一机器的CPU卸载尽可能多的处理,在第一机器中的NIC产生STag。然后把该STag发送到第二机器,第二机器通过把STag与相关的数据发送回去来执行写入。一接收到这个数据和相关的STag时,第一机器中的NIC将读取STag,并用DMA传输把数据移入与STag相关的存储器。
通过互联网传播的数据从一台机器能经过几条不同的路由到另一台机器。当服务器上的负载变化时或当服务器同时发生故障时,经过互联网的路径将改变。对于带有多个NIC的计算机,当执行RDMA传输时这会引起麻烦。当数据通过互联网所经过的路由发生变化时,从第一机器到第二机器所选择的路径可能将以一种方式改变,这种方式会使两个机器之间的路径从在机器1中的NIC1改变到NIC2。回想NIC产生Stag。因此NIC2不知道由NIC1产生的STag。如果产生STag时从机器1到机器2的路由使用NIC1,然后在机器2发送数据到机器1之前路由改变为使用NIC2,那么机器2将返回数据和NIC2不知道的STag。
因此,需要一种处理由一个NIC所产生并由同一个机器内另一个NIC所接收的STag的方法。
发明简述实施例针对克服一个STag到达不产生该STag的网络接口的问题的方法。该方法依赖于指定计算机上有唯一STag的网络接口。这能通过操作系统得到保证。因为在指定计算机上的STag是唯一的,接收由同一计算机上的另一个网络接口产生的STag的网络接口能够监测由不同网络接口产生的STag。当监测这样的STag时,接收该STag的网络接口把这个STag传送到更高级的软件,该软件可以是存在于OS核心内的RDMA程序组件。RDMA程序能识别是哪一个网络接口发起该STag并向相关的网络接口查询由这个网络接口产生的所有STag和分配的存储器的相关地址。然后把该地址传送到接收该未知STag的网络接口。有了这些存储器地址,那么该网络接口能完成数据传输了。
更特别地,一个实施例针对一种用于在第一多网络接口设备的第一网络接口把由该第一网络接口产生的标识符发送到第二设备之后在该多网络接口设备内的该第一网络接口和至少一个第二网络接口之间传输控制的方法。该识别符与该多网络接口设备中的存储器位置相关联。该识别符和相关联的数据域能由第二个网络接口接收。该方法进一步包括接收从第二网络接口到程序组件的消息,该消息表明从第二设备接收识别符。接着,该方法考虑查询第一网络接口以向程序组件提供由第一网络接口产生的识别符和多网络接口设备存储器中的相关存储器位置的列表。如果第二设备接收的识别符在该列表中,该方法考虑把与识别符相关联的存储器位置发送到第二网络接口。这样,第二网络接口变得能够把相关联的数据域发送到与该识别符相关联的存储器位置。
另一个实施例针对一种用于在包括第一网络接口和第二网络接口的主机内的第一网络接口和至少一个第二网络接口之间的传输控制的方法。该方法包括从远程计算机接收识别符,该识别符由第一网络接口产生并与主机内的存储器位置相关联。接着,该方法考虑发送一个消息给程序组件,表明接收了识别符。该程序部分被配置为向第一网络接口查询由第一网络接口产生的识别符的列表和在主机中的相关存储器位置。如果该识别符列表包括来自远程计算机的识别符,该方法考虑接收与该识别符相关联的存储器位置。如果该识别符列表不包括来自远程计算机的识别符,该方法考虑使来自远程计算机的识别符无效。
从下述的参考附图对说明性实施例的详述中,本发明的其他特点和优点将变得明显。
附图简述虽然附带的权利要求详细的阐明了本发明的特点,但是从下面结合附图的详细描述中,能最好的理解本发明以及它的目的和优点。这些附图是
图1是一般地说明本发明所在的典型计算机系统的框图。
图2是提供根据本发明实施例的RDMA数据传输概观的流程图。
图3是根据本发明实施例能实现典型的RDMA数据传输的网络计算机系统的框图。
图4是说明根据本发明实施例实现标准RDMA传输的流程图。
图5是能实现本发明实施例的网络计算机系统的框图。
图6a和6b是说明根据本发明实施例的方法的流程图。
发明详述转到附图,其中同样的附图标号指同样的元件,本发明被阐明在适当的计算环境中实现。虽然不要求,但是将在个人计算机执行的计算机可执行指令和相关的电子电路,例如程序模块的一般背景下描述本发明。通常,程序模块包括执行特定任务或实现特定的抽象数据类型的例行程序、程序、目标、部件、数据结构等等。另外,本领域技术人员会理解,本发明可以使用其它的计算机系统配置执行,其它的计算机系统配置包括手持设备、多处理器系统、基于微处理器的或可编程的用户电子装置、网络PC、小型计算机、大型计算机等等。本发明也可以在分布式计算环境中执行,在分布式计算环境中任务由通过通信网络连接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地的和远程的存储器存储设备中。
图1说明适当的计算系统环境100的例子,本发明能在该环境上实现。计算系统环境100只是适当的计算环境的一个例子,而不意味着建议对本发明的使用或功能性的范围的任何限定。计算环境100也不应解释为对典型操作环境100中说明的任何一个部件或其组合的依赖或需要。
本发明可以使用许多其它通用目的或专用目的的计算系统环境或配置操作。熟知的适合使用本发明的计算系统、环境和/或配置的例子包括但不局限于个人计算机、服务器计算机、手持或膝上型电脑设备、图形输入板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程用户电子装置、网络PC、小型计算机、大型计算机、包括任何上述系统或装置的分布式计算环境等等。
可以在计算机执行的计算机可执行指令,例如程序模块的一般背景下描述本发明。通常,程序模块包括执行特定任务或实现特定的抽象数据类型的例行程序、程序、目标、部件、数据结构等等。本发明也可以在分布式计算环境中执行,在分布式计算环境中任务由通过通信网络连接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和/或远程的包括存储器存储设备的计算机存储介质中。
参考图1,在计算机设备100最基本的配置中,计算设备100至少包括处理单元102和存储器104。依靠恰当的配置和计算设备的类型,存储器104可以是易失性的(例如RAM)、非易失性的(例如ROM、闪存等)或这两者的组合。在图1中由虚线106说明该基本配置。另外,设备100也可以有附加的特征/功能性。例如,装置100也可以包括附加的存储器(可移动的和/或不可移动的),附加的存储器包括但不局限于磁或光盘或带。这样的附加存储器在图1中由可移动的存储器108和不可移动的存储器110说明。计算机存储介质包括以任何方法或技术实现的用于存储例如计算机可读指令、数据指令、程序模块或其它数据的信息的易失性的和非易失性的、移动的和不可移动的介质。存储器104、可移动存储器108和不可移动存储器110是计算机存储介质的全部例子。计算机存储介质包括但不局限于RAM、ROM、EEPROM、闪存或其它存储器技术、CDROM、数字通用盘(DVD)或其它光存储器、盒式磁带、磁带、磁盘存储器或其它的磁存储设备、或任何其它能用于存储想要的信息并能由设备100存取的介质。
设备100也可以包含一个或更多个允许设备与其它设备通信的通信连接112。通信连接112是通信介质的例子。通信介质典型地包含计算机可读指令、数据指令、程序模块或在例如载波或其它传输机构的调制数据信号中的其它数据,并包括任何信息传送介质。术语“调制数据信号”表示一个信号,它的一个或更多个特征以编码该信号中的信息这样的方式设定或改变。作为例子,但不是限定,通信介质包括例如有线网络或直接有线连接这样的有线介质和例如声学、RF、红外线和其它无线介质这样的无线介质。象上述所讨论的,在此使用的术语计算机可读介质包括存储介质和通信介质。
设备100也可以有一个或多个例如键盘、鼠标、笔、声音输入装置、接触输入设备等等这样的输入设备114,也可以包括一个或多个例如显示器、扬声器、打印机等等这样的的输出设备116。所有的这些设备在本领域是熟知的,不需要在这里更详细的讨论。
远程直接存储器存取是一种用于更有效的在数据网络中传输数据的协议。这个协议被工业协会采用并在2002年10月被该协会批准。该RDMA协议能用于普遍存在的TCP/IP协议的顶层。RDMA允许数据直接传入系统存储器,而不需要主处理器的介入。这样大大地降低了在主处理器上数据传输的负担。
远程直接存储器存取(RDMA)是工业协会批准的协议。并已递交到互联网工程任务组(IETF)以被批准作为IETF标准。RDMA的目标是降低处理网络业务需要的CPU上的负载。降低CPU负载已经变得必要,因为网络的数据速率比主CPU可用的处理能力和可用的存储带宽增长更快。例如,10Gb/s以太网正成为工业标准,而就在10年前10Mb/s以太网是普遍的。
RDMA允许一个机器直接把数据放入另一个机器的存储器,而来自CPU的介入最小且对可用存储器带宽的需要最小。RDMA已设计为以一种被称为TCP/IP上的RDMA的特殊形式在标准TCP/IP网络上透明工作。这通过把RDMA特殊控制域嵌入到即将发送的数据以形成RDMA信息包然后把RDMA信息包嵌入TCP/IP数据包实现。这样,在该网络中TCP/IP信息包看起来与任何其它TCP/IP信息包相同并且以与没有RDMA报头的TCP/IP信息包的处理一样的方式处理。
网络接口控制器(NIC)的进步已使得RDMA变得有用。第一个这样的进步是TCP/IP卸载引擎(TOE)。TOE技术把许多TCO/IP处理移到NIC,减轻了主CPU的许多负担。然而,TOE不总是独立地允许零拷贝输入数据,这意味着即使TOE NIC经常使用DMA把输入数据传输到存储器,该数据仍需要由网络层软件拷贝。对这种附加拷贝的需要大大依赖于NIC需要的应用程序接口(API)和连接到NIC的软件。RDMA被设计为降低或消除对拷贝的需要并因此降低对CPU介入的需要。
通过在发起传输之前为特定数据传输分配存储器位置,RDMA实现零拷贝操作。存储器位置与被称为STag的识别符相关联。STag作为RDMA报头的一部分被发送,并被发送到远程机器。如果TCP/IP上的RDMA正被使用,那么这个报头被嵌入TCP/IP信息包,然后远程机器将返回嵌入在另一个TCP/IP信息包内的该数据和相同STag。在源机器上的RDMA和TOE激活NIC卡将处理信息包的TCP/IP部分并识别出在数据中嵌入有STag。然后它能查找这个STag,找到相关联的存储器位置,并用DMA把数据直接放入这个存储器位置。这与非RDMA传输不同,因为没有RDMA的TCP/IP包将没有相关的存储器位置,因此通常必须被传送给软件已确定数据的最终目的地。一旦目的地确定,该软件可能必须使用CPU资源把数据拷贝到对于目的地应用程序适当的缓冲器。在有RDMA的情况下,目的地能在数据到达之前确定,因此不需要拷贝。
安全性是RDMA协会提出的一个重要的问题。使用RDMA,远程计算机能把命令直接放入主机的存储器。一个用于防止这个安全性问题的方法是允许STag在传输完成后无效。为此,RDMA报头包括一个比特来使STag无效。如果这个比特放在接收的信息包中,那么从有效STag的列表中去掉该STag,并且丟弃所接收的任何更多的带有这个STag的信息包。STag本身是32比特的数,如果STag很快地被无效,那么恶意的试图猜出有效STag的机会是很小的。虽然RDMA标准不需要STag在指定数量的传输之后被无效,但是为了安全性的原因,大部分使用RDMA的应用在每个数据传输完成后将使指定的STag无效。
简化的RDMA读取周期流程图200在图2中示出。受益于本公开的本领域技术人员将认识到,该示出的RDMA读取周期是示例性的,是为了下面的讨论的目的。在流程图200中,通过网络传输数据假定使用TCP/IP协议。本领域普通技术人员应该理解,其它的传输协议是可能的。在块201中,首先是产生被称为STag的识别符。在块203中,该STag然后与数据存储器相关联,典型的是与主系统存储器相关联。块201和203合起来被称为捆绑。接着,在块205中,STag和来自封装在TCP/IP数据报中的RDMA信息包的读取请求作为从远程机器获得数据的请求被发送到远程机器。在块207中,STag与远程机器中的期望数据域连接在一起。STag与数据域的连接然后被返回到源机器。在块209中,一旦被接收,就从TCP/IP数据报和RDMA信息包中去掉该STag,并且确定相关联的存储器位置。在块211中,一旦知道了存储器位置,数据被传送到这个位置,并且发起数据传输的应用程序可以利用该数据。
图3是能够实现典型的RDMA读取传输的网络计算机系统300的框图。计算机301是主机,用于作为RDMA传输的例子。计算机301由存储器系统302、应用程序303、操作系统305和NIC309组成,存储器系统典型的是但不局限于是随机存取存储器(RAM)。这些部件并不是代表典型计算机中的全部部件。而是实现RDMA传输必须的那些部件。而且,存储器系统302包含一个存储器的分配块,该分配块是存储器分配311。为了描述的目的,数据存储区将被称为存储器且在现有的计算机系统中通常是RAM。然而,本发明的范围并不局限于RAM,通常可以是任何数据存储设备,包括但不局限于FLASH、硬盘、RAM、或任何其它能执行读和写的存储设备。为了描述的目的,计算机系统301也被称为计算机,然而这通常可以是任何能支持包括但不局限于PDA、计算机、蜂窝电话和机顶盒的网络接口的设备。
现在结合参考图3和图4,图4的流程图说明RDMA读取操作。在块402中,通过应用程序303请求OS305发出传输数据来发起传输。在这种情况下所有操作系统命令都可以在核心模式发生。OS确定该请求需要一个网络访问。如果NIC309有RDMA的能力,OS305能使这个传输利用RDMA从主CPU上卸载一些处理负担。在块404中,通过OS305向NIC309请求STag,RDMA传输开始。在块406中,NIC309把称为STag401的识别符返回到网络OS305。在块408中,OS305然后会为产生存储器分配311的传输分配存储器并把分配的存储器311的地址发送到NIC309。NIC309然后把存储器分配311和STag401联系在一起。这个分配允许NIC309把到达的带有STag401的任何数据放入存储器分配311。在块410中,NIC309然后产生RDMA信息包403。RDMA信息包403由STag401和读取数据的命令组成。在块412中,NIC接着把RDMA信息包403装入TCP/IP数据报405。在块414中,TCP/IP数据报405发送到互联网313,在块416中互联网313把该TCP/IP数据报路由到远程计算机315。在块418中,远程计算机315从TCP/IP数据报405中抽取出RDMA信息包403。抽取能在NIC内或软件内完成。在块420中,STag401从RDMA信息包403中抽取出并与请求的数据407结合形成RDMA信息包406。在块422中,TCP/IP数据报409封装RDMA信息包406。在块424中,TCP/IP数据报然后被发送到互联网313,互联网313把TCP/IP数据报路由到计算机301。在块426中,NIC309然后接收TCP/IP数据报409。在块428中,NIC309然后从TCP/IP数据报中抽取RDMA信息包。在块430中,NIC309从RDMA信息包406中抽取STag401,并检查在RDMA报头中的无效比特。如果设置了该比特,那么就使STag无效。然后在块432中,STag被用于检索相关联的存储器分配311,并且使用DMA把请求的数据407发送到这个存储器分配。
注意,整个的数据传输需要很少的CPU介入。OS305只需要向NIC309发出传输发生的请求、执行存储器分配311并把存储器位置报告到NIC309。NIC309处理所有的数据传输。因为每次传输都分配存储器,可以以允许应用程序直接存取数据的方式分配存储器。应用程序直接存取避免了在NIC把数据放入存储器后必须移动数据。这避免了CPU不得不移动大量的数据,在高速网络中CPU移动大量数据会消耗大量的CPU资源。
图5示出根据本发明在两个网络计算机之间的RDMA读取传输的框图500。除了计算机501有第二NIC510之外,框图500与框图300是相同的。同样的标号用于标明同样的部件。
结合图6a和图6b参考图5,流程图说明根据一个实施例的RDMA读取操作。为了清楚的目的,该流程图参考图5中使用的相同标号。直到TCP/IP数据报从远程计算机返回之前,该传输都遵循与图4中示出的同样的步骤。然而在图6a和图6b中表示的传输中,互联网使用的路由已经改变,以致TCP/IP数据报609经过在NIC510终止而不是在发起传输的NIC509终止的路由。因为不是NIC510发起传输,NIC510没有STag601和相关联的存储器位置511的消息。而这个消息存在于NIC509中。
在图6b的块626中当NIC510接收TCP/IP数据报609时。在块628中,NIC510将执行所有必要的TCP/IP处理,然后抽取RDMA信息包606。接着在块630中从RDMA信息包606中去掉STag601。在块632中,NIC510将搜索在NIC510中产生的所有有效STag的列表,但是却找不到STag601。在这点上有两种可能,STag601是无效的或STag401由在相同计算机501上的其他NIC产生。NIC510假定后者是真的,在块634中,把STagg601作为未识别的STag向OS505报告。OS505试着确定STag601是否是有效的。为了完成确认,在块636中OS505向NIC509查询由NIC509产生的所有有效的STag和相关联的地址。在块638中NIC509返回请求的列表。然后在块640中,OS505搜索这个列表寻找STag601。在块642中,OS505作出关于是否找到STag601的判定。如果没有找到,执行块650,在块650中向NIC510报告STag601是无效的。然后NIC510会丢弃信息包,因为没有有效的存储位置来传输该信息包。如果有可用的有效存储器位置,把带有无效STag的信息包传入存储器将会存在安全性风险。注意,虽然在这个例子中这个分支显然不可能象我们指出的NIC509产生STag601一样。然而,为了阐明必须正确处理无效STag的完整算法,把它包括在内。如果块642确定STag601在由NIC509产生的STag的列表中,那么在块644中OS505找到与STag601相关联的存储器位置511。在块646中把相关联的存储器位置511报告给NIC510。对相关联的存储器位置的了解使NIC510可以把请求的数据607传输到存储器位置511,从而完成传输。
在从一个NIC到另一个NIC的切换期间,CPU必须积极参与一些RDMA协议堆栈的处理。如果这种情况无限继续,这显然是不希望的。而且,在NIC609可能有许多未处理的STag等待处理,这会受到路由变化的影响。在最坏的情况,即,例如电缆从NIC609拔出,那么在NIC609中所有剩下的STag将由NIC610处理。RDMA标准没有对STag的寿命作任何时间限制。因此CPU可能会需要无限地参与使用这些STag。然而实际上在每次传输之后STag通常是无效的,STag很少用于大量传输。因此在大多数情况下,在STag传输中包含的软件持续很有限的时间。STag的无效可以通过在RDMA报头中设置无效标记实现,但是它也可以通过来自软件应用程序的明确命令发生。为了安全性原因,即使没有设置无效比特,大多数使用RDMA的应用程序在一个传输之后也会使STag无效。
实际上,远程计算机15也包括分配STag的应用程序,应用程序把STag与远程计算机515上的存储器相关联,并把STag发送到本地计算机501上的应用程序503。应用程序503然后执行RDMA写操作。更特别地,产生RDMA写信息包,该写信息包包含远程的STag和数据。该数据和远程STag被装入TCP/IP数据包并被发送到远程计算机515。在远程计算机515上的RDMA NIC接收这个数据包,并通过STag知道把数据放在存储器中的哪个位置。RDMA NIC把这个数据通过DMA放进存储器。正像上面说明的RDMA读取情况一样,IP路由变化会影响这个STag,远程计算机515能以与上述说明的RDMA读操作相同的方式处理路由变化。
同样地,为了简洁,所有上述的描述涉及单一的STag。事实上,RDMA读操作涉及两个STag。回到参考图2,甚至在步骤201之前,远程计算机315(在图3中)上的应用程序就分配STag(称它“远程STag”)并把它与远程计算机315上的存储器相关联。然后,在远程计算机315上的应用程序把这个远程STag发送到本地计算机301上的应用程序。这使本地应用程序303可以执行RDMA读取(图2中的块201-211)。RDMA读取请求信息包(块205)实际上传送两个STag本地STag和远程STag。IP路由改变会以与本地STag相同的方式影响远程STag。在此情况下,远程计算机315对远程STag的处理与本地计算机301对本地STag的处理正好相同。
考虑到本发明的原理可以应用于许多可能的实施例,应该认识到,在此对照附图描述的实施例只是说明性的,不应看作是对本发明的范围的限定。例如,本领域技术人员应该认识到,以软件示出的说明性实施例的元件能以硬件实现,反之亦然,或者本领域技术人员应该认识到,在不偏离本发明的精神的情况下该说明性实施例的安排和细节可以修改。因此,再次描述的本发明涵盖了所有在下述权利要求及其等同物的范围之内的的实施例。
权利要求
1.一种用于在多网络接口设备中的第一网络接口把识别符发送到一个第二设备后在该多网络接口设备中的第一网络接口和至少一个第二网络接口之间转移控制的方法,所述识别符由所述第一网络接口产生并与多网络接口设备中的存储器位置相关联,所述识别符和相关联的数据域能被第二网络接口接收,该方法包括接收从第二网络接口到一个程序组件的消息,该消息指示从第二设备接收了识别符;查询第一网络接口,以向该程序组件提供由第一网络接口产生的识别符的列表和在多网络接口设备存储器中相关联的存储器位置;和把与识别符相关联的存储器位置发送到第二网络接口,第二网络接口能够把相关联的数据域发送到与识别符相关联的存储器位置。
2.权利要求1的方法,其中在添加到识别符上的比特域和从第二设备接收的相关联的数据域的控制下,识别符被无效。
3.权利要求2的方法,其中如果识别符已被无效,则相关联的数据域被丢弃。
4.权利要求1的方法,其中存储器位置是随机存取存储器。
5.权利要求1的方法,其中程序组件是计算机操作系统。
6.权利要求1的方法,其中第一网络接口和第二网络接口根据远程直接存储器存取(RDMA)协议工作。
7.权利要求1的方法,其中第一网络接口和第二网络接口在TCP/IP协议上的远程直接存储器存取(RDMA)协议下工作。
8.一种用于在包括第一网络接口和第二网络接口的主机中的第一网络接口和至少一个第二网络接口之间传输控制的方法,该方法包括从远程计算机接收识别符,该识别符由第一网络接口产生并与该主机中的存储器位置相关联;发送消息到程序组件以表明接收到识别符,程序组件被配置为向第一网络接口查询由第一网络接口产生的识别符列表和主机中的相关存储器位置;如果识别符列表包括来自远程计算机的识别符,接收与识别符相关联的存储器位置;和如果识别符列表不包括来自远程计算机的识别符,使来自远程计算机的识别符无效。
9.权利要求8的方法,其中在添加到识别符上的比特域和从远程计算机接收的相关联的数据域的控制下识别符被无效。
10.权利要求9的方法,其中如果识别符已经被无效,相关的数据域被丢弃。
11.权利要求8的方法,其中存储器位置是随机存取存储器。
12.权利要求8的方法,其中程序组件是计算机操作系统。
13.权利要求8的方法,其中第一网络接口和第二网络接口在远程直接存储器存取(RDMA)协议下工作。
14.权利要求8的方法,其中第一网络接口和第二网络接口在TCP/IP协议上的远程直接存储器存取(RDMA)协议下工作。
15.一种计算机可读介质,在该可读介质中存储有执行在多网络接口设备的第一网络接口把识别符发送到第二设备后在该多网络接口设备中的第一网络接口和至少一个第二网络接口之间转移控制动作的指令,识别符由第一网络接口产生并与在多网络接口设备中的存储器位置相关联,识别符和相关联的数据域能被第二网络接口接收,该动作包括接收一个从第二网络接口到程序组件的消息,该消息表明从第二设备解收到识别符;查询第一网络接口,以向程序组件提供由第一网络接口产生的识别符的列表和在多网络接口设备存储器中相关联的存储器位置;和把与识别符相关联的存储器位置发送到第二网络接口,第二网络接口能够把相关联的数据域发送到与识别符相关联的存储器位置。
16.权利要求15的计算机可读介质,其中在添加到识别符上的比特域和从第二设备接收的相关联的数据域的控制下识别符被无效。
17.权利要求16的计算机可读介质,其中如果识别符已经被无效,相关的数据域被丢弃。
18.权利要求15的计算机可读介质,其中存储器位置是随机存取存储器。
19.权利要求15的计算机可读介质,其中程序组件是计算机操作系统。
20.权利要求15的计算机可读介质,其中第一网络接口和第二网络接口在远程直接存储器存取(RDMA)协议下工作。
21.权利要求15的计算机可读介质,其中第一网络接口和第二网络接口在TCP/IP协议上的远程直接存储器存取(RDMA)协议下工作。
22.一种计算机可读介质,在该可读介质中存储有执行在包括第一网络接口和第二网络接口的主机中的第一网络接口和第二网络接口之间转移控制动作的指令,该方法包括从远程计算机接收识别符,该识别符由第一网络接口产生并与主机中的存储器位置相关联;发送消息到程序组件以表明接收到识别符,程序组件被配置为向第一网络接口查询由第一网络接口产生的识别符列表和主机中的相关存储器位置;如果识别符列表包括来自远程计算机的识别符,接收与识别符相关联的存储器位置;和如果识别符列表不包括来自远程计算机的识别符,使来自远程计算机的识别符无效。
23.权利要求22的计算机可读介质,其中在添加到识别符上的比特域和从第二设备接收的相关联的数据域的控制下识别符被无效。
24.权利要求23的计算机可读介质,其中如果识别符已经被无效,相关的数据域被丢弃。
25.权利要求22的计算机可读介质,其中存储器位置是随机存取存储器。
26.权利要求22的计算机可读介质,其中程序组件是计算机操作系统。
27.权利要求22的计算机可读介质,其中第一网络接口和第二网络接口在远程直接存储器存取(RDMA)协议下工作。
28.权利要求22的计算机可读介质,其中第一网络接口和第二网络接口在TCP/IP协议上的远程直接存储器存取(RDMA)协议下工作。
全文摘要
提供一种用于在多网络接口设备的第一网络接口把由第一网络接口产生的识别符发送之后在同一多网络接口设备中的第一网络接口和至少一个第二网络接口之间传输控制的方法。该方法包括接收从第二网络接口到程序组件的消息,该消息表明从第二设备接收到识别符。其次,该方法考虑查询第一网络接口,以向程序组件提供由第一网络接口产生的识别符列表和在该多网络接口设备中的相关存储器位置。如果由第二设备接收的识别符在列表中,该方法考虑把与识别符相关联的存储器位置发送到第二网络接口。
文档编号G06F13/00GK1578308SQ200410055080
公开日2005年2月9日 申请日期2004年7月13日 优先权日2003年7月18日
发明者K·M·祖贝里 申请人:微软公司