CN1627728A - 在计算机服务器中共享以太网适配器的方法和装置 - Google Patents
在计算机服务器中共享以太网适配器的方法和装置 Download PDFInfo
- Publication number
- CN1627728A CN1627728A CNA2004100770614A CN200410077061A CN1627728A CN 1627728 A CN1627728 A CN 1627728A CN A2004100770614 A CNA2004100770614 A CN A2004100770614A CN 200410077061 A CN200410077061 A CN 200410077061A CN 1627728 A CN1627728 A CN 1627728A
- Authority
- CN
- China
- Prior art keywords
- adapter
- frame
- subregions
- grouping
- subregion
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/102—Packet switching elements characterised by the switching fabric construction using shared medium, e.g. bus or ring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/205—Quality of Service based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3036—Shared queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/351—Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
Abstract
在第一方面,提供第一方法,用于共享多重队列以太网适配器。第一方法包括步骤:在适配器中接收帧或分组,并确定该帧或分组是否是给共享该适配器的多个分区的一个或多个。如果该帧或分组是给共享该适配器的多个分区的一个或多个,该方法还包括:(1)在适配器高速缓冲存储器中存储该帧或分组;(2)确定该帧或分组将要被发送到的多个分区的一个或多个;以及(3)将该帧或分组从适配器高速缓冲存储器传输到该帧或分组将要被发送的一个或多个分区的每一个的接收队列。还提供了许多其它方面。
Description
技术领域
本发明一般涉及计算机服务器,特别涉及用于在计算机服务器中共享以太网适配器的方法和装置。
背景技术
计算机服务器可以连接的网络连接(例如,以太网连接)的速度不断增加。例如,计算机服务器可以经由网络适配器(例如,以太网适配器)连接到100Mbps、1Gbps或10Gbps的以太网连接。试图充分地利用这样的网络设备可以连接的高速连接的、诸如外围部件互连(PCI)适配器的网络适配器已经被改进。更具体地说,包括在适配器中的芯片的操作速度和/或适配器的速度已经被提高。例如,连接到10Gbps局域网(LAN)的服务器可以包括用于接收来自LAN的帧或分组,和/或向LAN传输帧或分组的PCI-X10Gbps以太网适配器。然而,这样的服务器可以包括一个单一处理器。典型的,具有单一处理器的服务器可能不以全速驱动10Gbps以太网适配器。因此,已经增加了可包括在服务器中的处理器的数量。此外,也已经开发了支持多重队列(例如,传输和/或接收队列)的适配器。包括多个处理器的服务器可以包括这样一个适配器。当执行指令时,处理器可以采用线程,每个线程都可以使用队列。从而,例如,每个处理器可以使用它自己的传输和/或接收队列来传输和/或接收帧或分组。这样的服务器可以包括一个适配器,该适配器基于帧大小或所接收的帧的IP分化的(differentiated)服务参数来执行接收帧处理。然而,这样的适配器并不是被优化设计用于多逻辑分区的(LPAR)服务器的。
在逻辑分区的服务器上,每个逻辑分区使用一个物理处理器的部分、一个物理处理器或多个物理处理器。每个逻辑分区使用部分服务器主存储器。管理程序(hypervisor)是固件层,其将处理器和主存储器在多个逻辑分区之中分割。管理程序还能够提供允许多个分区进行通信的命令响应队列。管理程序能够支持在分区存储器(由操作系统注册以允许数据复制的存储器)之间的数据复制。
适配器可以分别地从主存储器(例如,分配以用作为分区存储区的主存储器的一部分)发送数据到适配器存储器(例如,适配器高速缓冲存储器),或从适配器存储器发送数据到主存储器。例如,适配器可以执行直接存储器存取(DMA),分别地从主存储器(例如,分配以用作为分区存储区的主存储器的一部分)复制数据到适配器存储器(例如,适配器高速缓冲存储器),或从适配器存储器复制数据到主存储器。DMA操作是由适配器硬件执行的。主服务器处理器可以不涉及在DMA操作中。这里使用的诸如“DMA”、“DMAing”、“DMAed”等的术语表示直接存储区存取的执行(例如,通过适配器)。这里使用的诸如“传送(transfer)”、“正在传送(transferring)”、“已传送(transferred)”等的术语分别包括“DMA”、“DMAing”、“DMAed”等。
包括多个处理器和一个适配器的、支持多重队列的其它服务器,可以包括多个逻辑分区。然而,只有一个分区包括一个传输队列和一个接收队列。例如,控制(例如,拥有)适配器的主分区(hosting partition)可以包括该传输和接收队列。从而,由服务器接收的所有帧或分组都由一个单一分区接收(例如,主分区),该分区必须执行存储和转发操作,以便把接收的帧或分组路由(route)到适当的分区(例如,用于处理)。因为由服务器接收和/或从服务器传输的所有帧或分组通过一个单一分区,所以该单一分区可能从适配器接收许多中断,复制许多帧或分组到不同的分区,和/或执行在分区之间的环境(context)转换。包括传输和接收队列的单一分区的这样的处理开销(overhead)增加了延迟和处理器占用,导致服务器驱动适配器的速度降低,从而降低了由服务器接收和/或从服务器传输帧或分组的速度。
希望出现用于在多个逻辑分区之中共享以太网适配器的方法和装置。
发明内容
在本发明的第一个方面,提供第一方法,用于共享多重队列以太网适配器。第一方法包括步骤:在适配器中接收帧或分组,并确定该帧或分组是否是给共享该适配器的多个分区的一个或多个。如果该帧或分组是给共享该适配器的多个分区的一个或多个,该方法还包括:(1)在适配器高速缓冲存储器中存储该帧或分组;(2)确定该帧或分组将要被发送到的多个分区的一个或多个;以及(3)将该帧或分组从适配器高速缓冲存储器传输到该帧或分组将要被发送的一个或多个分区的每一个的接收队列。
在本发明的第二个方面,提供第二方法,用于共享多重队列以太网适配器。第二方法包括确定多个分区的一个或多个是否有要传输的帧或分组的步骤。如果多个分区的一个或多个有要传输的帧或分组,该方法还包括:(1)从有要传输的帧或分组的多个分区中选择一个分区;(2)将相应于所选择的分区的帧或分组从所选择的分区的传输队列传输到适配器高速缓冲存储器;以及(3)从适配器传输该帧或分组。
在本发明的第三个方面,提供第三方法,用于共享多重队列以太网适配器。第三方法包括步骤:(1)为包括在计算机系统中的多个分区的每一个采用接收队列和传输队列;以及(2)以下至少一个:从多个分区的一个的传输队列传输帧或分组到适配器高速缓冲存储器和从适配器传输帧或分组到多个分区的一个的接收队列。
在本发明的第四个方面,提供第四方法,用于配置计算机系统的多个分区以便共享多重队列以太网适配器。第四方法包括步骤:(1)在计算机系统中创建新的分区;以及(2)允许新的分区与计算机系统的一个或多个其它分区共享适配器。提供了许多其它方面,如根据本发明的这些其它方面的系统、装置和计算机程序产品。这里描述的每个计算机程序产品都可以由计算机可读介质(例如,载波信号、软盘、致密盘、DVD、硬盘驱动器、随机存取存储器等)携载。
在本发明的第五个方面,提供第五方法,用于在具有多个分区的多处理器环境中共享多重队列以太网协议适配器。第五方法包括步骤:(1)在适配器中接收帧或分组;以及(2)确定该帧或分组是否是给共享该适配器的多个分区的一个或多个。
从下面的详细描述、所附权利要求及附图,本发明的其它特征和方面将会变得更加充分明白。
附图说明
图1是根据本方法和装置的实施例的包括服务器的计算机系统的框图,该服务器包括可以由多个分区共享的以太网适配器。
图2是包括在根据本方法和装置的实施例的适配器中的表的框图。
图3说明了根据本方法和装置的实施例、共享多重队列以太网适配器的第一示例方法。
图4说明了根据本方法和装置的实施例、共享多重队列以太网适配器的第二示例方法。
图5说明了根据本方法和装置的实施例、配置计算机系统的多个分区以共享多重队列以太网适配器的方法。
具体实施方式
图1是根据本方法和装置的实施例的、包括服务器101(例如计算机服务器)的计算机系统100的框图,该服务器101包括可以由多个分区共享的以太网适配器。服务器101可以包括用于执行指令或代码的多个处理器102、104、106。在一个实施例中,服务器101可以包括多达64个处理器。也可以使用其它数量的处理器。多个处理器102、104、106中的一个可以包括并执行诸如固件108的代码。例如,处理器106可以包括并执行管理程序功能。尽管图1所示的管理程序109在单一处理器上实现,在其它实施例中,管理程序109也可以使用分区的处理器用于管理程序功能。管理程序109的一个例子可以是由本申请受让人的IBM Corporation of Armonk,NY所拥有的IBM管理程序(以下称为“管理程序”)。例如,管理程序可以使用IBMi系列或p系列服务器来实现。服务器101可以包括诸如闪速存储器或NVRAM的、可以连接到固件108的主存储器110和第二存储器112。闪速存储器或NVRAM可以存储影响服务器101操作的配置文件114。稍后将详细描述配置文件114。
服务器101可以包括可以耦合到固件108的多个分区116、118、120、122。在一个实施例中,服务器101可以包括256或更多的分区。服务器可以包括其它数量的分区116、118、120、122。每个分区116、118、120、122可以表示服务器101上的OS实例。例如,多个分区116、118、120、122可以表示诸如在服务器101上执行的AIX、LINUX或OS400的操作系统。从而,服务器101例如可以是诸如逻辑分区的服务器(LPAR)的多分区服务器。多个分区116、118、120、122可以表示其它操作系统。多个分区116、118、120、122的一个以上的分区可以表示同样的OS。多个分区116、118、120、122的一个或多个可以包括传输队列124和/或接收队列126。更具体地说,对于多个分区116、118、120、122的一个或多个,包括在分区116、118、120、122中的分区存储器的一部分(例如,实际上是分配给每个分区的主存储器的一部分)可以用作传输队列124,用于存储将要从分区116、118、120、122传输的帧或分组。分区存储器的另一部分用作用于存储由分区116、118、120、122接收的帧或分组的接收队列126。或者,传输队列124和接收队列126可以存储在分区116、118、120、122的分离的存储器中。
服务器101可以包括耦合到固件108的一个或多个适配器。服务器101可以包括用于访问耦合到和/或包括在服务器101的存储设备的一个或多个输入/输出(I/O)适配器(例如,存储适配器127)。服务器101可以包括诸如网络适配器(例如,多重队列以太网适配器128)的适配器,该适配器可以被用来接收服务器101中的分区116、118、120、122的一个或多个的数据和/或用来从服务器101传输来自分区116、118、120、122的一个或多个的数据。从而,多重队列以太网适配器128可以支持多个分区116、118、120、122,其中的每一个可以包括一对或多对传输队列124和接收队列126。
以太网适配器128可以包括用于连接外部连接器(未示出)的物理接口129,诸如以太网电缆。以太网适配器128可以包括(例如,存储)用于存储相应于包括在多个分区116、118、120、122的一个或多个中的队列(例如,传输124和接收队列126)的信息的字段的表130。包括在以太网适配器128中的表130的详细结构稍后将参考图2进行描述。以太网适配器128可以包括:高速缓冲存储器132用于临时存储由服务器101接收和/或要从服务器101传输的帧或分组;用于MAC处理的部件133,其可以包括用于存储指示地址类型的数据的一个或多个寄存器134,所述地址用来把将要由多个分区116、118、120、122接收的帧或分组存储在适当的接收队列126中和/或用来把来自多个分区116、118、120、122的传输队列124的帧或分组存储在以太网适配器128的高速缓冲存储器132中。例如,一个或多个寄存器134可以指示由多个分区116、118、120、122接收的帧或分组的存储是基于分配给多个分区116、118、120、122的每一个的一个或多个媒介存取控制(MAC)地址、虚拟局域网标识(VLAN ID)/MAC地址对或因特网协议(IP)地址。例如,存储在一个或多个寄存器134中的值可以由用户来配置。LPAR服务器可以实现VLAN以便模拟在包括在LPAR服务器中的多个分区中的通信,就好像该通信是通过多个服务器的实际LAN来进行的。VIAN ID与多个分区的一个或多个相关联。
多个分区116、118、120、122之一可以是主分区120。主分区120控制(例如,拥有)以太网适配器128。主分区120可以在多个分区116、118、120、122中的其它分区中共享对以太网适配器128的访问。更具体地说,主分区120可以允许其它分区116、118、122经由以太网适配器128接收和/或传输帧或分组。主分区120可以包括表121,其包括关于可以共享对以太网适配器128的访问的分区的信息。表121的内容与下面描述的表130的内容类似。
多个分区116、118、120、122之一可以通过例如执行存储在分区122中的软件被采用作为分区管理工具136。分区管理工具136可以被用来配置分区(例如,新的分区)以便与多个分区116、118、120、122共享以太网适配器128。例如,分区管理工具可以被用来配置在分区中运行的OS、分区的处理器的数量和分配给分区的主存储器的量。如下面将进一步描述的,多个分区116、118、120、122的一个或多个可以被分配一个或多个MAC地址、VLANID/MAC地址对和/或IP地址。分区管理工具功能可以在外部个人计算机或安装在机架上的个人计算机中实现。
图2是在包括(例如,存储)在以太网适配器128中的表的框图。表130可以存储相应于包括在多个分区116、118、120、122的一个或多个中的队列(例如,传输和/或接收队列)的信息。更具体地说,表130可以包括可以共享以太网适配器128的多个分区116、118、120、122的每一个的项目202。相应于分区116、118、120、122的表项目202可以包括用于存储分区116、118、120、122的接收队列126的地址的字段204。接收队列地址可以指示包括在分区116、118、120、122中的分区存储器的一部分,其可以用来存储相应于分区116、118、120、122的接收队列126。类似地,相应于分区116、118、120、122的表项目202可以包括用于存储分区116、118、120、122的传输队列124的地址的字段206。传输队列地址可以指示用来存储相应于分区116、118、120、122的传输队列124的分区存储器的一部分。相应于分区116、118、120、122的表项目202可以包括用于存储分配给分区116、118、120、122的任意MAC地址、VLAN ID/MAC地址对、和/或IP地址的一个或多个的字段208。例如,在系统配置期间,MAC地址、VLAN ID/MAC地址对、和/或IP地址的一个或多个可以(例如,由分区管理工具136)分配给分区116、118、120、122。
相应于分区116、118、120、122的表项目202可以包括用于存储中断级的字段202。例如,中断级可以是包括在PCI总线协议中的多个(例如,16个)消息信令中断(MSI)之一。分区管理工具可以将允许共享以太网适配器的分区的最大数量限制到16或另一数字。通过使用MSI,以太网适配器128可用的中断级可以不被限制到耦合到以太网适配器128的中断线的数量。中断级可以被以太网适配器128使用以便通知分区116、118、120、122数据已经被加到分区116、118、120、122的接收队列126。本方法和装置可以实现其它最大数量的MSI(向量)。
相应于分区116、118、120、122的项目202可以包括用于存储传输队列优先级212的字段212。以太网适配器128可以使用存储在相应于具有要传输的帧或分组的分区116、118、120、122的项目202中的传输队列优先级212,用来确定将首先从分区116、118、120、122的哪一个传输数据。
现在参考图1-2,以及参考说明了共享多重队列以太网适配器128的第一示例方法的图3,描述用于共享多重队列以太网适配器的装置(例如,服务器)的操作。更具体地说,该适配器可以是在具有多个分区的多处理器环境中的多重队列以太网协议适配器。参考图3,在步骤302,方法300开始。在步骤304,可以在适配器(例如,以太网适配器128)中接收帧或分组。包括以太网适配器128的服务器101可以耦合到网络连接(未示出)。服务器101可以经由以太网适配器128使用网络连接接收和/或传输帧或分组。
在步骤306,确定帧或分组是否是用于共享以太网适配器128的多个分区116、118、120、122的一个或多个(例如,用于在一个或多个分区116、118、120、122上运行的应用)。例如,当由以太网适配器128接收帧或分组时,以太网适配器128可以访问该帧或分组的一部分,诸如包括在帧或分组中的MAC地址。以太网适配器128可以确定这样的地址是否为该以太网适配器128所知。例如,在系统配置期间,分区管理工具可以被用来将一个或多个MAC地址、VLAN ID/MAC地址对、和/或IP地址(例如动态地)删除或分配给以太网适配器128。这样的地址可以对应可以共享该以太网适配器128的分区116、118、120、122的地址。在一个实施例中,16个地址可以被分配给以太网适配器128。其它数量的地址可以被分配给以太网适配器128。以太网适配器128可以访问包括在所接收的帧或分组中的地址,并比较所访问的地址与分配给以太网适配器128的一个或多个地址,以便确定该帧或分组是否用于可以共享该以太网适配器128的多个分区116、118、120、122的一个或多个(例如,如果包括在所接收的帧或分组中的地址被确定为广播地址)。如果包括在所接收的帧或分组中的地址(例如,MAC地址)与以太网适配器128所知的地址不匹配,并且所接收的帧或分组不是广播帧或分组,则确定该帧或分组不用于共享该适配器(例如,以太网适配器128)的多个分区116、118、120、122的一个或多个。此后,执行步骤308。在步骤308,以太网适配器128可以丢弃该帧或分组。
或者,如果包括在所接收的帧或分组中的地址(例如,MAC地址)与以太网适配器128所知的地址匹配,则可执行步骤310。在步骤310,帧或分组可以被存储在适配器高速缓冲存储器132中。更具体地说,以太网适配器128可以接收帧或分组,并将该帧或分组的一个或多个部分存储在高速缓冲存储器132中。高速缓冲存储器132可以存储将要经由以太网适配器128从服务器101传输的帧或分组。此后,可执行步骤312。
在步骤312,确定帧或分组将要被发送到的多个分区116、118、120、122的一个或多个。可访问一个或多个用于存储指示地址类型的值的寄存器134,所述地址用来确定帧或分组将要被发送到的一个或多个分区。例如,存储在一个或多个寄存器134中的值可以指示帧或分组将要基于MAC地址对其确定的一个或多个分区116、118、120、122的接收队列126。可以访问存储在以太网适配器128中的表130。基于存储在表130中的数据和/或存储在一个或多个寄存器134中的值,确定帧或分组将要被发送到的多个分区116、118、120、122的一个或多个。更具体地说,以太网适配器128可以访问与包括在所接收的帧或分组中的地址(例如,MAC地址)匹配的地址(例如,MAC地址)的表130的一个或多个项目202(例如,一个或多个项目202的MAC地址、VLANID/MAC地址对、IP地址字段208)。如果所接收的帧或分组不是广播帧或分组,所接收的帧或分组可以被发送到单一分区116、118、120、122。更具体地说,因为存储在表130中的项目202可以对应共享以太网适配器128的多个分区116、118、120、122之一,包括匹配地址的项目202可以识别帧或分组将要被发送到的分区116、118、120、122。以太网适配器128可以访问存储在包括匹配地址的项目202中的接收队列地址,以便确定相应于项目202的分区116、118、120、122的接收队列的地址。以这种方式,由以太网适配器128接收的帧或分组可以用存储在表130中的地址(例如,MAC地址)来存储(例如,可以确定帧或分组将要被发送到的一个或多个分区116、118、120、122的接收队列)。
虽然在上面例子中,用MAC地址存储所接收的帧或分组,但是也可以使用诸如VLANID/MAC地址对、或IP地址的包括在帧或分组和/或表130中的其它类型的地址,来存储所接收的帧或分组。帧或分组可以基于其它类型的地址来存储(例如,以太类型的地址)。
以太网适配器128可以访问在所接收的帧或分组中的地址,并确定该地址是广播地址。这样的地址指示该帧或分组是去往包括在服务器101中的多于一个的分区116、118、120、122。例如,当以太网适配器128访问在所接收的帧或分组中的地址时,如果以太网适配器128基于MAC地址或VLANID/MAC地址对来执行存储,那么以太网适配器128可以确定该帧或分组是地址解析协议(ARP)或类似的MAC或链路层广播帧或分组。类似地,例如,当以太网适配器128访问在所接收的帧或分组中的地址时,如果以太网适配器128基于IP地址执行存储,则以太网适配器128可以确定所接收的帧或分组是IP广播帧或分组。如将在下面进一步描述的,广播帧或分组可以被DMAed(直接存储器存取)到分区116、118、120、122的多于一个分区。
在步骤314,所接收的帧或分组可以被从适配器高速缓冲存储器DMAed到帧或分组将要被发送到的一个或多个分区的每一个的接收队列。因为以太网适配器128可以访问帧或分组将要被发送到的一个或多个分区116、118、120、122的每一个的接收队列的存储器地址,以太网适配器128可以将帧或分组从适配器高速缓冲存储器132 DMA到帧或分组将要被发送到的一个或多个分区116、118、120、122的每一个的接收队列126。从而,由以太网适配器128接收的帧或分组可以从以太网适配器128直接传输(例如,DMAed)到帧或分组将要被发送到(例如,用于处理)的一个或多个分区116、118、120、122。更具体地说,以太网适配器128可以从主存储器110DMA一个或多个接收描述符到以太网适配器存储器,以确定用于存储所接收的数据的第一个可用的接收缓冲器。接收描述符可以是到可以用于存储所接收的帧或分组的一个或多个接收缓冲器的指针或链接。以太网适配器128可以选择接收缓冲器(例如,以先入先出(FIFO)顺序),并将所接收的帧或分组DMA到该接收缓冲器中(例如,到分配用作帧或分组将要被发送到的分区的分区存储器的主存储器的一部分)。
一旦帧或分组被DMAed到分区116、118、120、122的接收队列126,分区116、118、120、122的设备驱动器可以接收帧或分组,并将帧或分组传到分区116、118、120、122的TCP/IP栈的层上。以这种方式,分区116、118、120、122可以将帧或分组传输到在分区116、118、120、122上运行的适当的应用(例如,用于处理)。
当以太网适配器128基于MAC地址执行所接收的帧或分组的存储,并在步骤312,以太网适配器128确定所接收的帧或分组是ARP或类似的MAC或链路层广播帧或分组,以太网适配器128可以将广播帧或分组从适配器高速缓冲存储器132DMA到包括在服务器101中的多于一个(例如,每一个)的分区116、118、120、122的接收队列。因为,以太网适配器128可能不知道分区116、118、120、122的哪个需要处理ARP或类似的MAC或链路层广播帧或分组,所以以太网适配器128可能将这样的帧或分组DMA到包括在服务器101中的分区116、118、120、122的每一个的接收队列。
当以太网适配器128基于VLANID/MAC地址对执行所接收的帧的存储时,在步骤312,以太网适配器128确定所接收的帧是ARP或类似的MAC或链路层广播帧或分组,以太网适配器128可以将广播帧或分组从适配器高速缓冲存储器132DMA到包括在服务器101的分区116、118、120、122的多于一个分区的接收队列。更具体地说,以太网适配器128可以用同样的VLANID将广播帧或分组从适配器高速缓冲存储器132DMA到分区116、118、120、122的每一个的接收队列。因为以太网适配器可能不知道在VLANID中的哪个分区需要处理ARP或类似的MAC或链路层广播帧或分组,以太网适配器128将这样的帧或分组DMA到包括同样VLANID的每个分区的接收队列作为帧或分组。
类似地,当以太网适配器128基于IP地址执行所接收的帧或分组的存储,并且在步骤312,以太网适配器128确定所接收的帧是IP广播帧或分组时,以太网适配器128可以将IP广播帧或分组DMA到包括在服务器101中的分区116、118、120、122的多于一个分区(例如,每一个)的接收队列。因为服务器101可能不知道哪一个帧或分组需要处理IP广播帧或分组(例如分组),所以以太网适配器128可以将这样的帧或分组DMA到包括在服务器101中的分区116、118、120、122的每一个的接收队列。
或者,可以使用子网掩码(例如,在系统配置期间分配的),以致以太网适配器128可以只需要将这样的帧或分组DMA到包括在服务器101中的分区116、118、120、122的子集的接收队列。更具体地说,以太网适配器128可以只需要将这样的帧或分组DMA到分配了包括在IP广播帧去往的IP子网中的IP地址的分区116、118、120、122。以这种方式,子网掩码可以被用来智能地限制IP广播帧或分组(例如分组)为选择的接收队列。
此后,可执行步骤316。在步骤316,方法300结束。
在以太网适配器128将一个或多个新的帧或分组DMA到相应于分区116、118、120、122的接收队列126之后,以太网适配器128可以产生一个中断,以通知分区116、118、120、122所述一个或多个新接收的帧或分组。例如,当用于队列的接收的帧或分组的数量达到一个阈值,或定时器过期至少一个接收的帧时,以太网适配器可以产生中断。更具体地说,以太网适配器128可以访问存储在表130中的对应分区116、118、120、122的项目202,以确定相应于分区116、118、120、122的中断级(例如MSI级)。从而,以太网适配器128可确定(assert)MSI,其向服务器101指示分区116、118、120、122可能需要处理一个或多个帧或分组。
通过使用图3的方法300,适配器(例如多重队列以太网适配器128)可以由多个分区116、118、120、122共享,每个分区表示一个分离的OS,以接收数据帧或分组。更具体地说,以太网适配器128可以基于包括在帧或分组中的地址对新接收的帧或分组进行分类(sort),以便新接收的帧或分组可以被直接传输到帧或分组将要被发送到的分区116、118、120、122(例如,用于处理)。
现在参考图1-2,以及参考说明共享多重队列以太网适配器128的第二示例方法的图4,描述用于共享多重队列以太网适配器128的装置(例如服务器)的操作。参考图4,在步骤402,方法400开始。在步骤404,确定多个分区116、118、120、122的一个或多个是否具有要传输的帧或分组。例如,当将要从服务器101传输的、存储在以太网适配器128的高速缓冲存储器132中的数据量降到阈值(例如,一个预先确定的水平)以下,以太网适配器128可以轮询(poll)相应于共享以太网适配器128的多个分区116、118、120、122的一个或多个(例如,每一个)的传输队列124。以太网适配器128可以访问存储相应于包括在可共享以太网适配器128的多个分区116、118、120、122的一个或多个中的队列的信息的字段的表130的一个或多个项目202。更具体地说,以太网适配器128可以访问包括在表130中的一个或多个(例如,每一个)项目202的传输队列地址字段206和MAC地址、VLANID/MAC地址对和/或IP地址字段208,以确定可以共享以太网适配器128的多个分区116、118、120、122和存储用于每个这样的分区116、118、120、122的传输队列124的存储器地址的字段126。然后,以太网适配器128可以轮询(poll)可以共享以太网适配器128的多个分区116、118、120、122的每一个的传输队列124的存储器地址。
以太网适配器128可以基于来自多个分区116、118、120、122的一个或多个的轮询结果(例如,来自相应于多个分区116、118、120、122的每一个的传输队列的轮询结果),确定多个分区116、118、120、122的一个或多个具有将要传输的帧或分组。适配器轮询可以由检查一个或多个分区116、118、120、122的传输队列124来采用,以确定帧或分组是否在等待(例如需要)被传输。或者,分区116、118、120、122可以指示传输帧或分组已准备好通过写寄存器来被传输。
如果在步骤404确定没有帧或分组需要从多个分区116、118、120、122传输,就可执行步骤405。在步骤405,例如,以太网适配器128可以等待通过时间延迟指定的时间量。该时间延迟可以是500ns(毫微妙)。可以使用更长或更短的时间延迟。此后,可执行步骤404。
或者,如果在步骤404确定多个分区116、118、120、122的一个或多个具有要传输的帧或分组,就可执行步骤406。在步骤406,从多个具有要传输的帧或分组的分区可选择一个分区。更具体地说,以太网适配器128可以选择具有要传输的帧或分组的分区之一。如果多个分区具有要传输的帧或分组,以太网适配器128可以访问存储相应于包括在共享以太网适配器128的多个分区116、118、120、122的一个或多个中的队列的信息的字段的表130,并基于存储在表130中的数据从具有要传输的帧的多个分区中选择一个分区。更具体地说,以太网适配器128可以访问存储在表130中的、对应具有要传输的帧或分组的多个分区的每一个的项目202。基于存储在每个这样的项目202的传输队列优先级字段212中的值,以太网适配器128可以选择从其传输帧或分组的分区116、118、120、122。以太网适配器128可以使用其它方法,用于从具有要传输的帧或分组的多个分区中选择一个分区。或者,如果只有一个分区具有要传输的帧或分组,以太网适配器128就可以选择该分区。
在步骤408,相应于所选择的分区的帧或分组可以被从所选择的分区的传输队列124DMA到以太网适配器128。以太网适配器128可以访问存储在表130中的、对应所选择的分区的项目202的传输队列地址字段206,以确定帧或分组从其要被DMAed的传输队列124的地址。以太网适配器128可将帧或分组从所选择的分区的传输队列124DMA到以太网适配器128的高速缓冲存储器132。更具体地说,以太网适配器128可以将一个或多个传输描述符(如果有)从主存储器110DMA到以太网适配器存储器,以确定存储将要传输的帧或分组的传输缓冲器。传输描述符可以是到存储将要传输的帧或分组的一个或多个传输缓冲器的指针或链接。以太网适配器可以选择传输缓冲器(例如以FIFO顺序),并将传输缓冲器DMA到以太网适配器高速缓冲存储器。以太网适配器128可以确定用于包括帧或分组将要从其DMAed的传输队列124的分区116、118、120、122的中断。
分区116、118、120、122可以传输打算给共享适配器128的另一个分区的帧或分组。适配器128可以检测传输帧或分组是打算给共享适配器128的另一个分区116、118、120、122的,并将该帧或分组发送到那个分区116、118、120、122的接收队列。
与上面描述的用于确定所接收的帧或分组是否是广播帧或分组的方法类似,以太网适配器128可以确定从所选择的分区116、118、120、122的传输队列124DMAed到高速缓冲存储器132的帧或分组是否是广播帧或分组。如果该帧或分组是广播帧或分组,以太网适配器128可以将广播帧或分组DMA到包括在服务器101中的一个或多个分区116、118、120、122的接收队列126(例如,除了传输该广播帧的分区或单元以外的共享该适配器的所有分区)。如上所述,帧或分组被DMAed到的一个或多个分区116、118、120、122的接收队列126依赖于所执行的分类的类型(例如地址分类)和/或分配给多个分区116、118、120、122的地址。
在步骤410,帧或分组可以从适配器传输(例如以太网适配器128)。更具体地说,帧或分组可以使用网络连接(未示出)经由以太网适配器128或到共享以太网适配器128的另一个分区116、118、120、122,从服务器101传输。如果帧或分组是广播帧或分组,如上所述适配器128可以将广播帧或分组DMA到一个或多个分区116、118、120、122的接收队列。帧或分组可以按照由以太网适配器128的高速缓冲存储器132存储将要被传输的帧或分组的顺序,从服务器101传输。可以由以太网适配器128使用其它方法确定下一个从服务器101传输的帧或分组。
此后,可执行步骤411。在步骤411,确定以太网适配器128是否被关闭。如果在步骤411确定以太网适配器128没有被关闭,可执行步骤404。步骤404的细节已在上面进行了详细描述,在这里不再描述。或者,如果在步骤411确定以太网适配器128被关闭,可执行步骤412。如所述,在步骤412,方法400结束。通过使用图4的方法,适配器(例如,多重队列以太网适配器128)可以由多个分区116、118、120、122共享,每个分区表示一个分离的OS,以传输数据帧或分组。更具体地说,以太网适配器128可以基于可以存储在对应分区116、118、120、122的表项目202中的、分配给分区的传输队列的优先级和/或分区116、118、120、122的地址,从相应于分区116、118、120、122的传输队列124中选择帧或分组。以这种方式,将要从服务器101传输的帧或分组可以从传输队列124直接DMAed到以太网适配器128,从该以太网适配器可以从服务器101传输帧或分组。
可以操作为或可以包括在以太网适配器128的计算机系统100的服务器101,可以执行方法300和/或方法400。更具体地说,计算机系统100或服务器101可以为包括在计算机系统100中的多个分区116、118、120、122的每一个采用一个接收队列和一个传输队列。以太网适配器可以参考图4的上述方式,将帧或分组从多个分区116、118、120、122的一个或多个的传输队列124DMA到适配器(例如,以太网适配器128)高速缓冲存储器,和/或以参考图3的上述方式,将数据从以太网适配器128DMA到多个分区116、118、120、122的一个或多个的接收队列126。
如上面所述的,使用本方法和装置,新接收的帧或分组可以直接从以太网适配器128传输到帧或分组将要被发送到的分区116、118、120、122(例如,用于处理),和/或将要从服务器101传输的帧或分组可以从分区116、118、120、122的传输队列124直接DMAed到以太网适配器128。因为本方法和装置不要求经由以太网适配器128由服务器101接收的、和/或将要从服务器101传输的所有帧或分组被主分区120接收,并且不要求主分区120在所接收的帧或分组上执行存储和转发操作,所以本方法和装置避免了与上述现有技术相关联的缺点(例如,增加的延迟和处理器占用率)。从而,本方法和装置可以被用来以高速(例如,达到或接近以太网适配器128的最大容量的速度)驱动以太网适配器128。因此,可以增加包括以太网适配器128的服务器101的最大数据吞吐量。
现在参考图5,其说明配置计算机系统100的多个分区116、118、120、122以共享多重队列以太网适配器128的方法,描述配置多个逻辑分区以共享适配器(例如,多重队列以太网适配器128)的计算机系统100的操作。参考图5,在步骤502,方法500开始。在步骤504,创建在计算机系统100中的新的分区(例如118)。例如,诸如系统管理员的用户可以在包括在计算机系统100中和/或作为计算机系统100操作的服务器101上创建一个新的分区(例如,OS实例)。例如,服务器101可以包括在服务器101上运行一个或多个应用的分区(例如,122)。这样的应用可以使得分区(例如,122)能够作为分区管理工具136操作。分区管理工具136可以被用来创建新的分区。可以使用其它方法在服务器101上创建新的分区。
步骤504-512可以被用来允许新的分区(例如,118)与一个或多个其它分区共享多重队列以太网适配器128。在步骤504,可以选择新的分区(例如,118)共享以太网适配器128。更具体地说,用户可以采用分区管理工具136以选择新的分区,并分配MAC地址、VLANID/MAC地址对和IP地址的一个或多个给新的分区。分区管理工具136可以被用来进一步配置新的分区。例如,分区管理工具136可以被用来为新的分区分配接收队列地址、传输队列地址、中断级(例如,MSI级)和/或传输队列优先级。
分区管理工具136可以创建或更新存储分区配置信息的配置文件114。配置文件114可以被存储在闪速存储器或NVRAM112中。固件108可以访问配置文件114以确定服务器资源怎样被分区116、118、120、122所共享,以及为分区116、118、120、122的每一个启动什么OS。例如,固件108可以基于配置文件114,确定对分区116、118、120、122的每一个可用的处理、存储器(例如,主存储器)和I/O适配器(例如,存储适配器)资源的量。固件108可以基于配置文件114为分区116、118、120、122分配这样的资源。
在步骤508,所选择的分区的地址可以被发送到计算机系统100的固件108。例如,分区管理工具136可以将分配给新的分区的MAC地址、VALNID/MAC地址对和/或IP地址的一个或多个发送到固件108。分区管理工具136可以将新分区的接收队列地址、传输队列地址、MSI级和/或传输队列优先级的一个或多个发送到固件108。
在步骤510,固件可以被采用以通知主分区120新的分区被允许共享该适配器。固件108可以将从分区管理工具136接收的信息发送到主分区120。如上面所述的,主分区120可以控制(例如,拥有)以太网适配器128,并且可以在其它分区116、118、120、122中共享到以太网适配器128的访问。主分区120可以包括表121,表121包括有关可以共享到以太网适配器128的访问的、多个分区116、118、120、122的信息。主分区120可以用由固件108提供的信息更新表121。以这种方式,表121可以包括相应于可以共享以太网适配器128的分区116、118、120、122的每一个的、接收队列地址、传输队列地址、MAC地址、VLANID/MAC地址对、和/或IP地址、MSI级、和/或传输队列优先级。
在步骤512,可以更新存储在适配器中的表。如上面所述的,以太网适配器128可以将关于相应于共享以太网适配器128的分区116、118、120、122的每一个的队列的信息存储在表130中。表130的结构已经参考图2进行了详细的描述,所以在这里不再描述。例如,主分区120可以动态地更新表130,以包括相应于新的分区(例如,118)的信息。主分区120可以用存储在主分区120的表121更新存储在以太网适配器128中的表130。以太网适配器128可以基于存储在表130中的更新的信息对帧或分组进行分类。以这种方式,在执行本发明的方法300、400时,以太网适配器128可以知道可以共享该以太网适配器128(例如,可以经由该以太网适配器128从服务器101接收和/或传输帧或分组)的服务器101的所有分区116、118、120、122(例如,包括新增加的分区)。新的分区可以具有由主分区120分配的MAC地址。
在步骤514,方法500结束。通过使用图5的方法500,计算机系统100的多个分区116、118、120、122可以被配置以共享一个适配器(例如,多重队列以太网适配器128),以致计算机系统100可以在高速(例如,达到或接近以太网适配器128可以操作的最大速度的速度)驱动以太网适配器128。
前面的描述只是公开了发明的示例实施例。属于本发明的范围的上面公开的装置和方法的修改对本领域的普通技术人员来讲是容易明白的。例如,虽然描述适配器接收和传输以太网协议帧的一个或多个实施例,但是本装置和方法的适配器可以被用来接收和传输其它协议的帧。例如,本方法和装置可以被用来接收和传输允许SCSI命令被包括在TCP/IP帧或分组中、从而在以太网网络上实现的、因特网小型计算机系统接口(iSCSI)协议的帧或分组。虽然,在一个或多个实施例中,可以在分区116、118、120、122中执行传输控制协议/网际协议(TCP/IP)处理,但是在其它实施例中,以太网适配器128可以包括执行许多TCP/IP处理的TCP/IP卸载(offload)引擎(TOE)。包括具有TOE的以太网适配器128的服务器101的分区116、118、120、122,可以被分配MAC地址和/或IP地址。而且,可以使用PCI、PCI-X、PCI-Xddr、PCI Express(快速PCI)或其它以太网适配器来实现本装置和方法。
虽然在上面实施例中,表121和表130存储诸如接收队列地址204、传输队列地址206、MAC地址、VLANID/MAC地址对和/或IP地址208、中断(例如,MSI)级210、和传输队列优先级212的字段,但是在其它实施例中,更多、更少或不同的字段可以被存储在表121、130中。虽然在上面实施例中,诸如管理程序的固件108被用来管理计算机系统100(例如,服务器101)的资源,但是在其它实施例中,可以使用不同的软件。
因此,虽然本发明已经连同其示例实施例被公开,但是应当理解其它实施例也属于如权利要求所限定的本发明的精神和范围。
Claims (44)
1.一种用于共享多重队列以太网适配器的方法,包括:
在适配器中接收帧或分组;
确定该帧或分组是否是给共享该适配器的多个分区的一个或多个;以及
如果该帧或分组是给共享该适配器的多个分区的一个或多个:
在适配器高速缓冲存储器中存储该帧或分组;
确定该帧或分组将要被发送到的多个分区的一个或多个;以及
将该帧或分组从适配器高速缓冲存储器传输到该帧或分组将要被发送到的该一个或多个分区的每一个的接收队列。
2.如权利要求1所述的方法,还包括,如果该帧或分组是给共享该适配器的该多个分区的一个或多个,则产生中断以将该帧或分组通知给该帧或分组被传输到的该一个或多个分区的每一个。
3.如权利要求1所述的方法,其中,确定该帧或分组将要被发送到的多个分区的一个或多个包括:
访问存储在适配器中的表;和
基于存储在该表中的数据,确定该帧或分组将要被发送到的多个分区的一个或多个。
4.如权利要求3所述的方法,其中基于存储在该表中的数据确定该帧或分组将要被发送到的多个分区的一个或多个包括:基于存储在该表中的MAC地址、VLAN ID/MAC地址对和IP地址的至少之一,确定该帧或分组将要被发送到的多个分区的一个或多个。
5.如权利要求1所述的方法,其中,确定该帧或分组将要被发送到的多个分区的一个或多个包括:
访问存储在寄存器中的值,该值指示用来确定该帧或分组将要被发送到的多个分区的一个或多个的地址的类型;
访问存储在该适配器中的表;以及
基于存储在寄存器中的值和存储在表中的数据,确定该帧或分组将要被发送到的多个分区的一个或多个。
6.一种用于共享多重队列以太网适配器的方法,包括:
确定多个分区的一个或多个是否有要传输的帧或分组;以及
如果多个分区的一个或多个有要传输的帧或分组:
从有要传输的帧或分组的多个分区中选择一个分区;
将相应于所选择的分区的帧或分组从所选择的分区的传输队列传输到适配器高速缓冲存储器;以及
从该适配器传输该帧或分组。
7.如权利要求6所述的方法,其中,确定多个分区的一个或多个是否有要传输的帧或分组包括:
轮询相应于多个分区的每一个的传输队列;以及
基于来自多个分区的一个或多个的轮询结果,确定多个分区的一个或多个是否有要传输的帧或分组。
8.如权利要求6所述的方法,其中,从有要传输的帧或分组的多个分区中选择一个分区包括:
访问存储在适配器中的表;以及
基于存储在表中的数据,从有要传输的帧或分组的多个分区中选择一个分区。
9.如权利要求8所述的方法,其中,基于存储在表中的数据,从有要传输的帧或分组的多个分区中选择一个分区包括:基于存储在表中的优先级值,从有要传输的帧或分组的多个分区中选择一个分区。
10.一种共享多重队列以太网适配器的方法,包括:
为包括在计算机系统中的多个分区的每一个采用接收队列和传输队列;以及
以下至少之一:从多个分区的一个的传输队列传输帧或分组到适配器高速缓冲存储器,和从适配器传输帧或分组到多个分区的一个的接收队列。
11.如权利要求10所述的方法,其中,从多个分区的一个的传输队列传输帧或分组到适配器高速缓冲存储器包括:
访问存储在适配器中的表;以及
基于存储在表中的数据,从多个分区的一个的传输队列传输帧或分组到适配器高速缓冲存储器;以及
其中,从适配器传输帧或分组到多个分区的一个的接收队列包括:
访问存储在适配器中的表;以及
基于存储在表中的数据,从适配器传输帧或分组到多个分区的一个的接收队列。
12.一种配置计算机系统的多个分区以共享多重队列以太网适配器的方法,包括:
在计算机系统中创建新的分区;以及
允许新的分区与计算机系统的一个或多个其它分区共享适配器。
13.如权利要求12所述的方法,其中,允许新的分区与计算机系统的一个或多个其它分区共享适配器包括:
选择新的分区以共享适配器;
发送所选择的分区的地址到计算机系统的固件;
采用固件通知主分区,新的分区被允许共享适配器;以及
更新存储在适配器中的表,该表存储有关相应于共享该适配器的每个分区的队列的信息。
14.如权利要求13所述的方法,还包括通知固件相应于该新的分区的中断。
15.如权利要求13所述的方法,还包括更新存储在主分区中的表。
16.如权利要求15所述的方法,其中更新存储在适配器中的表,包括用存储在主分区中的表更新存储在适配器中的表。
17.一种装置,包括:
多个处理器;
主存储器;
多个分区,每个分区包括传输队列和接收队列;和
多重队列以太网适配器,耦合到多个处理器、主存储器和多个分区,其中该适配器包括适配器高速缓冲存储器、寄存器和表,其中多个分区共享该适配器,并且其中该适配器适于:
在适配器中接收帧或分组;
确定帧或分组是否是给共享该适配器的多个分区的一个或多个;以及
如果该帧或分组是给共享该适配器的多个分区的一个或多个:
在适配器高速缓冲存储器中存储该帧或分组;
确定该帧或分组将要被发送到的多个分区的一个或多个;以及
将该帧或分组从适配器高速缓冲存储器传输到该帧或分组将要被发送到的一个或多个分区的每一个的接收队列。
18.如权利要求17所述的装置,其中该适配器还适于:如果该帧或分组是给共享适配器的多个分区的一个或多个,则产生中断以将该帧或分组通知给该帧或分组被传输到的一个或多个分区的每一个。
19.如权利要求17所述的装置,其中,该适配器还适于:
访问存储在适配器中的表;以及
基于存储在该表中的数据,确定该帧或分组将要被发送到的多个分区的一个或多个。
20.如权利要求19所述的装置,其中,该适配器还适于:基于存储在表中的MAC地址、VLAN ID/MAC地址对和IP地址的至少一个,确定该帧或分组将要被发送到的多个分区的一个或多个。
21.如权利要求17所述的装置,其中,该适配器还适于:
访问存储在寄存器中的值,该值指示用来确定该帧或分组将要被发送到的多个分区的一个或多个的地址的类型;
访问存储在适配器中的表;以及
基于存储在寄存器中的值和存储在表中的数据,确定该帧或分组将要被发送到的多个分区的一个或多个。
22.一种装置,包括:
多个处理器;
主存储器;
多个分区,每个分区包括传输队列和接收队列;以及
多重队列以太网适配器,包括适配器高速缓冲存储器和表,耦合到多个处理器、主存储器和多个分区,并且适于:
确定多个分区的一个或多个是否有要传输的帧或分组;以及
如果多个分区的一个或多个有要传输的帧或分组:
从具有要传输的帧或分组的多个分区中选择一个分区;
将相应于所选择的分区的帧或分组从所选择的分区的传输队列传输到适配器高速缓冲存储器;以及
从适配器传输该帧或分组。
23.如权利要求22所述的装置,其中,该适配器还适于:
轮询相应于多个分区的每一个的传输队列;以及
基于来自多个分区的一个或多个的轮询结果,确定多个分区的一个或多个是否有要传输的帧或分组。
24.如权利要求22所述的装置,其中,该适配器还适于:
访问存储在适配器中的表;以及
基于存储在该表中的数据,从有要传输的帧或分组的多个分区中选择一个分区。
25.如权利要求24所述的装置,其中,该适配器还适于:基于存储在该表中的优先级值,从有要传输的帧或分组的多个分区中选择一个分区。
26.一种装置,包括:
多个处理器;
主存储器;
多个分区;以及
包括表的多重队列以太网适配器,耦合到多个处理器、主存储器和多个分区,并且适于:
为包括在计算机系统中的多个分区的每一个采用接收队列和传输队列;以及
以下至少之一:从多个分区的一个的传输队列传输数据到适配器高速缓冲存储器,和从适配器传输数据到多个分区的一个的接收队列。
27.如权利要求26所述的装置,其中,该适配器还适于:
(a)访问存储在适配器中的表;以及
基于存储在该表中的数据,将数据从多个分区的一个的传输队列传输到适配器高速缓冲存储器;或者
(b)访问存储在适配器中的表;以及
基于存储在该表中的数据,将数据从适配器传输到多个分区的一个的接收队列。
28.一种用于配置多个逻辑分区以便共享多重队列以太网适配器的计算机系统,包括:
分区管理工具;
耦合到分区管理工具的装置,其包括:
多个处理器,其中多个处理器包括用于执行固件的处理器;
主存储器;
多个分区,其中每个分区包括传输队列和接收队列,其中多个分区包括主分区,并且其中主分区包括表;以及
多重队列以太网适配器,耦合到多个处理器、主存储器、多个分区和分区管理工具,其中该适配器包括表,其中多个分区共享该适配器,并且其中主分区拥有该适配器;以及
其中,该计算机系统适于:
在计算机系统中创建新的分区;以及
允许新的分区与一个或多个其它分区共享该适配器。
29.如权利要求28所述的计算机系统,其中,该计算机系统还适于:
选择新的分区以共享该适配器;
将所选择的分区的地址发送到计算机系统的固件;
采用固件通知主分区,新的分区被允许共享该适配器;以及
更新存储在适配器中的表,该表存储有关相应于共享该适配器的每一个分区的传输和接收队列的信息。
30.如权利要求28所述的计算机系统,其中,该计算机系统还适于通知该固件相应于该新的分区的中断。
31.如权利要求28所述的计算机系统,其中,该计算机系统还适于更新存储在主分区中的表。
32.如权利要求31所述的计算机系统,其中,该计算机系统还适于用存储在主分区中的表更新存储在适配器中的表。
33.一种计算机程序产品,包括:
计算机可读介质,具有计算机程序代码的计算机可读介质适于:
在计算机系统中创建新的分区;以及
允许新的分区与计算机系统的一个或多个其它分区共享该适配器。
34.如权利要求33所述的计算机程序产品,包括:
计算可读介质,具有计算机程序代码的计算机可读介质还适于:
选择新的分区以共享该适配器;
将所选择的分区的地址发送到计算机系统的固件;
采用固件通知主分区,新的分区被允许共享该适配器;以及
更新存储在适配器中的表,该表存储有关相应于共享该适配器的每个分区的队列的信息。
35.如权利要求1所述的方法,其中:
确定该帧或分组是否是给共享该适配器的多个分区的一个或多个,包括确定该帧或分组是广播帧或分组;以及
将帧或分组从适配器高速缓冲存储器传输到该帧或分组将要被发送到的一个或多个分区的每一个的接收队列,包括将广播帧或分组从适配器高速缓冲存储器传输到共享该适配器的多个分区的所有分区的接收队列。
36.如权利要求2所述的方法,其中,产生中断以将该帧或分组通知给该帧或分组被传输的一个或多个分区的每一个,包括产生消息信令中断(MSI)以将该帧或分组通知给该帧或分组被传输的一个或多个分区的每一个。
37.如权利要求6所述的方法,其中:
将相应于所选择的分区的帧或分组从所选择的分区的传输队列传输到适配器高速缓冲存储器,包括确定从所选择的分区的传输队列传输到适配器高速缓冲存储器的帧或分组是广播帧或分组;以及
从适配器传输帧或分组包括将广播帧或分组传输到除了所选择的分区的共享该适配器的所有分区的接收队列。
38.如权利要求17所述的装置,其中,该适配器还适于:
确定帧或分组是广播帧或分组;以及
如果该帧或分组是给共享该适配器的多个分区的一个或多个,则将广播帧或分组从适配器高速缓冲存储器传输到共享该适配器的多个分区的所有分区的接收队列。
39.如权利要求18所述的装置,其中,该适配器还适于,如果该帧或分组是给共享该适配器的多个分区的一个或多个,则产生消息信令中断(MSI)以将该帧或分组通知给该帧或分组被传输的一个或多个分区的每一个。
40.如权利要求22所述的装置,其中,该适配器还适于:
如果多个分区的一个或多个有要传输的帧或分组:
确定从所选择的分区的传输队列传输到适配器高速缓冲存储器的帧或分组是广播帧或分组;以及
将广播帧或分组传输到除了所选择的分区的共享该适配器的所有分区的接收队列。
41.如权利要求6所述的方法,其中,从适配器传输帧或分组包括使用网络连接传输帧或分组,或传输帧或分组到多个分区的一个或多个。
42.如权利要求22所述的装置,其中,该适配器还适于使用网络连接传输帧或分组,或传输帧或分组到多个分区的一个或多个。
43.一种用于在具有多个分区的多处理器环境中共享多重队列以太网协议适配器的方法,包括:
在适配器中接收帧或分组;以及
确定帧或分组是否是给共享该适配器的多个分区的一个或多个。
44.如权利要求43所述的方法,其中,确定帧或分组是否是给共享该适配器的多个分区的一个或多个包括:
访问包括在所接收的帧或分组中的地址;以及
比较所访问的地址和分配给该适配器的一个或多个地址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/733,754 US7660322B2 (en) | 2003-12-11 | 2003-12-11 | Shared adapter |
US10/733,754 | 2003-12-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1627728A true CN1627728A (zh) | 2005-06-15 |
CN100448221C CN100448221C (zh) | 2008-12-31 |
Family
ID=34653188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100770614A Expired - Fee Related CN100448221C (zh) | 2003-12-11 | 2004-09-10 | 在计算机服务器中共享以太网适配器的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7660322B2 (zh) |
CN (1) | CN100448221C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1996930B (zh) * | 2006-01-06 | 2011-10-05 | 惠普开发有限公司 | 用于通信接口的队列头高速缓存 |
WO2012143941A2 (en) * | 2011-04-18 | 2012-10-26 | Ineda Systems Pvt. Ltd | Wireless interface sharing |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4343760B2 (ja) * | 2004-04-28 | 2009-10-14 | 株式会社日立製作所 | ネットワークプロトコル処理装置 |
US7606251B2 (en) * | 2004-08-05 | 2009-10-20 | International Business Machines Corporation | Method, system, and computer program product for reducing network copies by port-based routing to application-specific buffers |
US7515589B2 (en) * | 2004-08-27 | 2009-04-07 | International Business Machines Corporation | Method and apparatus for providing network virtualization |
GB2418326B (en) * | 2004-09-17 | 2007-04-11 | Hewlett Packard Development Co | Network vitrualization |
US20060123111A1 (en) * | 2004-12-02 | 2006-06-08 | Frank Dea | Method, system and computer program product for transitioning network traffic between logical partitions in one or more data processing systems |
US7383547B1 (en) * | 2004-12-03 | 2008-06-03 | Lecroy Corporation | Apparatus and technique for device emulation |
JP4799118B2 (ja) * | 2005-10-14 | 2011-10-26 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、情報処理システム、通信中継装置および通信制御方法 |
US8108549B2 (en) * | 2006-04-04 | 2012-01-31 | International Business Machines Corporation | Method for using the loopback interface in a computer system having multiple workload partitions |
US7961729B2 (en) * | 2007-01-08 | 2011-06-14 | International Business Machines Corporation | Broadcast and multicast packet management |
US7940785B2 (en) * | 2007-01-08 | 2011-05-10 | International Business Machines Corporation | Ethernet adapter packet management |
US20090063706A1 (en) * | 2007-08-30 | 2009-03-05 | International Business Machines Corporation | Combined Layer 2 Virtual MAC Address with Layer 3 IP Address Routing |
US8141093B2 (en) * | 2007-11-15 | 2012-03-20 | International Business Machines Corporation | Management of an IOV adapter through a virtual intermediary in an IOV management partition |
US8141092B2 (en) | 2007-11-15 | 2012-03-20 | International Business Machines Corporation | Management of an IOV adapter through a virtual intermediary in a hypervisor with functional management in an IOV management partition |
US8141094B2 (en) | 2007-12-03 | 2012-03-20 | International Business Machines Corporation | Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions |
US8103810B2 (en) * | 2008-05-05 | 2012-01-24 | International Business Machines Corporation | Native and non-native I/O virtualization in a single adapter |
US8359415B2 (en) * | 2008-05-05 | 2013-01-22 | International Business Machines Corporation | Multi-root I/O virtualization using separate management facilities of multiple logical partitions |
US8406230B2 (en) * | 2008-06-30 | 2013-03-26 | Oracle America, Inc. Formerly Known As Sun Microsystems, Inc. | Method and system for classifying packets in a network interface card and interface for performing the same |
US8144582B2 (en) * | 2008-12-30 | 2012-03-27 | International Business Machines Corporation | Differentiating blade destination and traffic types in a multi-root PCIe environment |
US8019837B2 (en) * | 2009-01-14 | 2011-09-13 | International Business Machines Corporation | Providing network identity for virtual machines |
US8386644B1 (en) * | 2010-10-11 | 2013-02-26 | Qlogic, Corporation | Systems and methods for efficiently processing large data segments |
US8677024B2 (en) * | 2011-03-31 | 2014-03-18 | International Business Machines Corporation | Aggregating shared Ethernet adapters in a virtualized environment |
US10318426B1 (en) * | 2011-09-27 | 2019-06-11 | EMC IP Holding Company LLC | Cloud capable storage platform with computation operating environment for storage and generic applications |
US9736011B2 (en) * | 2011-12-01 | 2017-08-15 | Intel Corporation | Server including switch circuitry |
US9497025B2 (en) * | 2014-09-20 | 2016-11-15 | Innovasic Inc. | Ethernet interface module |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2124379C (en) * | 1993-06-25 | 1998-10-27 | Thomas F. La Porta | Distributed processing architecture for control of broadband and narrowband communications networks |
US5564040A (en) * | 1994-11-08 | 1996-10-08 | International Business Machines Corporation | Method and apparatus for providing a server function in a logically partitioned hardware machine |
US5740438A (en) * | 1995-03-31 | 1998-04-14 | International Business Machines Corporation | Methods and system for network communications of multiple partitions |
US5956714A (en) * | 1997-08-13 | 1999-09-21 | Southwestern Bell Telephone Company | Queuing system using a relational database |
US6314501B1 (en) * | 1998-07-23 | 2001-11-06 | Unisys Corporation | Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory |
US6330615B1 (en) * | 1998-09-14 | 2001-12-11 | International Business Machines Corporation | Method of using address resolution protocol for constructing data frame formats for multiple partitions host network interface communications |
US6330616B1 (en) * | 1998-09-14 | 2001-12-11 | International Business Machines Corporation | System for communications of multiple partitions employing host-network interface, and address resolution protocol for constructing data frame format according to client format |
US6665786B2 (en) * | 1998-09-21 | 2003-12-16 | Microsoft Corporation | Dynamic disk partition management |
US6854021B1 (en) * | 2000-10-02 | 2005-02-08 | International Business Machines Corporation | Communications between partitions within a logically partitioned computer |
US6792483B2 (en) * | 2001-09-28 | 2004-09-14 | International Business Machines Corporation | I/O generation responsive to a workload heuristics algorithm |
US20030145122A1 (en) * | 2002-01-30 | 2003-07-31 | International Business Machines Corporation | Apparatus and method of allowing multiple partitions of a partitioned computer system to use a single network adapter |
US6826653B2 (en) * | 2002-02-06 | 2004-11-30 | Hewlett-Packard Development Company, L.P. | Block data mover adapted to contain faults in a partitioned multiprocessor system |
US20030236852A1 (en) * | 2002-06-20 | 2003-12-25 | International Business Machines Corporation | Sharing network adapter among multiple logical partitions in a data processing system |
JP4123942B2 (ja) * | 2003-01-14 | 2008-07-23 | 株式会社日立製作所 | 情報処理装置 |
US7283473B2 (en) * | 2003-04-10 | 2007-10-16 | International Business Machines Corporation | Apparatus, system and method for providing multiple logical channel adapters within a single physical channel adapter in a system area network |
-
2003
- 2003-12-11 US US10/733,754 patent/US7660322B2/en not_active Expired - Fee Related
-
2004
- 2004-09-10 CN CNB2004100770614A patent/CN100448221C/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1996930B (zh) * | 2006-01-06 | 2011-10-05 | 惠普开发有限公司 | 用于通信接口的队列头高速缓存 |
WO2012143941A2 (en) * | 2011-04-18 | 2012-10-26 | Ineda Systems Pvt. Ltd | Wireless interface sharing |
WO2012143941A3 (en) * | 2011-04-18 | 2013-01-17 | Ineda Systems Pvt. Ltd | Wireless interface sharing |
US9918270B2 (en) | 2011-04-18 | 2018-03-13 | Ineda Systems Inc. | Wireless interface sharing |
Also Published As
Publication number | Publication date |
---|---|
CN100448221C (zh) | 2008-12-31 |
US7660322B2 (en) | 2010-02-09 |
US20050129040A1 (en) | 2005-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100448221C (zh) | 在计算机服务器中共享以太网适配器的方法和装置 | |
US20220214919A1 (en) | System and method for facilitating efficient load balancing in a network interface controller (nic) | |
US7788411B2 (en) | Method and system for automatically reflecting hardware resource allocation modifications | |
US8005022B2 (en) | Host operating system bypass for packets destined for a virtual machine | |
US7634608B2 (en) | Bridging network components | |
US8392565B2 (en) | Network memory pools for packet destinations and virtual machines | |
US7643482B2 (en) | System and method for virtual switching in a host | |
JP4150336B2 (ja) | 共有属性に基づいて圧縮キューペアから複数の仮想キューペアを作成する構成 | |
US6922408B2 (en) | Packet communication buffering with dynamic flow control | |
US7996583B2 (en) | Multiple context single logic virtual host channel adapter supporting multiple transport protocols | |
US8713202B2 (en) | Method and system for network configuration for virtual machines | |
US8095675B2 (en) | Priority and bandwidth specification at mount time of NAS device volume | |
US7836212B2 (en) | Reflecting bandwidth and priority in network attached storage I/O | |
US6912604B1 (en) | Host channel adapter having partitioned link layer services for an infiniband server system | |
US7889734B1 (en) | Method and apparatus for arbitrarily mapping functions to preassigned processing entities in a network system | |
US7865633B2 (en) | Multiple context single logic virtual host channel adapter | |
US7307998B1 (en) | Computer system and network interface supporting dynamically optimized receive buffer queues | |
US8606975B2 (en) | Managing interrupts in a virtualized input/output device supporting multiple hosts and functions | |
US7912926B2 (en) | Method and system for network configuration for containers | |
EP1771975A2 (en) | Method and apparatus for a shared i/o network interface controller | |
US20080059686A1 (en) | Multiple context single logic virtual host channel adapter supporting multiple transport protocols | |
US20140164553A1 (en) | Host ethernet adapter frame forwarding | |
US7593404B1 (en) | Dynamic hardware classification engine updating for a network interface | |
EP2016496B1 (en) | Hiding system latencies in a throughput networking system | |
WO2007123517A1 (en) | Asymmetrical processing for networking functions and data path offload |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081231 Termination date: 20150910 |
|
EXPY | Termination of patent right or utility model |