专利名称:用于处理要在网络上发送的分组的方法、系统和程序的制作方法
技术领域:
本发明涉及一种用于在包括多个具有多端口的网络适配器的主机系统中处理要在网络上发送的分组的方法、系统和程序。
背景技术:
主计算机可以具有多个网卡来把系统到网络。在现有系统中,主机往往包括网络设备驱动程序,它是一种用于执行主机操作系统和网卡之间连接的软件程序。对于包括多处理器的主机来说,设备驱动程序往往选择其中一个网卡来发送分组。在主机中执行的所述设备驱动程序通常执行负载均衡算法来选择特定的网卡发送分组。这种负载均衡算法需要大量的主机中央处理单元(CPU)资源和周期来执行。主机CPU上的负担随着适配器数目的增加以及随着由设备驱动程序处理的事务的数目的增加而增加。执行负载均衡操作所要求的CPU资源可以从CPU容量的5%变动到50%,这取决于CPU的处理速度、适配器的数目和发送活动量。
尽管如此,在本领域中仍然存在对提高设备驱动程序性能并且使主处理器上设备驱动程序处理负担最小化的进一步需要。
发明内容
本发明提供如下内容(一).一种用于在主机系统中处理要在网络上发送的分组的方法,所述主机系统包括多个网络适配器,包括在第一网络适配器接收分组,其中第一网络适配器具有多个端口;在第一网络适配器内执行第一负载均衡操作,以便选择一个网络适配器来发送所接收的分组;如果所选择的网络适配器是第二网络适配器,那么就把所接收的分组转发到第二网络适配器;以及如果所选择的网络适配器是第一网络适配器,那么相对于多个端口执行第二负载均衡操作,以便选择一个要在其上发送分组的端口。
(二).一种用于管理网络适配器中的多个端口的方法,其中所述网络适配器执行检测一个用于传输的活动端口的故障;确定是否存在一个未用于传输的保留端口;并且如果存在一个保留端口,那么将一个保留端口设置为用于传输的活动端口。
(三).一种在设备驱动程序中实现的方法,所述设备驱动程序在主机系统中执行,用于处理要在网络上发送的分组,其中所述主机包括多个网络适配器,并且其中所述设备驱动程序执行根据多个网络适配器的每一个中的可利用端口数目把多个网络适配器之一指定为初级网络适配器;接收分组;并且启动向指定为初级网络适配器的网络适配器传输分组,其中所述初级网络适配器能够执行负载均衡操作,以便确定一个网络适配器来发送所接收的分组,并且将分组重定向到另一个网络适配器以便发送所述分组。
(四).一种在主机系统中与外部网络适配器通信的网络适配器,包括多个端口;与至少一个外部网络适配器相接的接口;用于使网络适配器执行操作的控制逻辑,所述操作包括(i)接收分组;(ii)执行第一负载均衡操作以便选择一个网络适配器来发送所接收的分组;(iii)如果所选择的网络适配器是第二网络适配器,那么把所接收的分组转发到第二网络适配器;以及(iv)如果所选择的网络适配器是第一网络适配器并且具有多个端口,那么相对于多个端口执行第二负载均衡操作,以便选择一个要在其上发送分组的端口。
(五).一种在主机系统中与外部网络适配器通信的网络适配器,包括多个端口;与至少一个外部网络适配器相接的接口;
用于使网络适配器执行操作的控制逻辑,所述操作包括(i)检测一个用于传输的活动端口的故障;(ii)确定是否存在一个未用于传输的保留端口;以及(iii)如果存在一个保留端口,那么将一个保留端口设置为用于传输的活动端口。
(六).一种与网络和数据存储器耦合的系统,包括处理器;存储器控制器,用于管理对数据存储器的输入/输出访问;多个网络适配器,能够发送和接收网络上的数据;设备驱动程序,由处理器执行,用于执行操作,所述操作包括(i)根据多个网络适配器的每一个中的可利用端口数目,来把多个网络适配器之一指定为初级网络适配器;(ii)接收分组;并且(iii)启动向指定为初级网络适配器的网络适配器传输分组,其中所述初级网络适配器能够执行负载均衡操作,以便确定一个网络适配器来发送所接收的分组,并且将分组重定向到另一个网络适配器以便发送所述分组。
(七).一种制造物品,用于处理要在网络上发送的分组,所述网络与主机系统耦合,所述主机系统包括多个网络适配器,其中所述制造物品使得在具有多个端口的第一网络适配器中执行如下操作,所述操作包括接收分组,其中第一网络适配器具有多个端口;执行第一负载均衡操作以便选择一个网络适配器来发送所接收的分组;如果所选择的网络适配器是第二网络适配器,那么把所接收的分组转发到第二网络适配器;以及如果所选择的网络适配器是第一网络适配器,那么相对于多个端口执行第二负载均衡操作,以便选择一个要在其上发送分组的端口。
(八).一种制造物品,用于管理网络适配器中的多个端口,其中所述制造物品使得执行如下操作,所述操作包括检测一个用于传输的活动端口的故障;确定是否存在一个未用于传输的保留端口;以及如果存在一个保留端口,那么将一个保留端口设置为用于传输的活动端口。
(九).一种制造物品,用于处理要在网络上发送的分组,所述主机包括多个网络适配器,其中所述制造物品使得执行如下操作,所述操作包括根据多个网络适配器的每个中的可利用端口数目,来把多个网络适配器之一指定为初级网络适配器;接收分组;并且启动向指定为初级网络适配器的网络适配器传输分组,其中所述初级网络适配器能够执行负载均衡操作,以便确定一个网络适配器来发送所接收的分组,并且将分组重定向到另一个网络适配器以便发送所述分组。
现在参见附图,其中相同的附图标记自始至终表示相应的部分图1举例说明了其中实现本发明实施例的计算环境;图2举例说明了依照本发明实施例选择网络适配器的操作;图3举例说明了依照本发明实施例处理网络适配器中的端口故障的操作;以及图4举例说明了可以与所述实施例一起加以使用的计算机体系结构。
具体实施例方式
在随后的描述中,将参照附图,所述附图形成本申请的一部分,并且其举例说明了本发明的几个实施例。应该理解的是,在不脱离本发明范围的情况下,也可以采用其他的实施例,并且可以做出结构上和操作上的改变。
图1举例说明了可以实现本发明实施例的计算环境。主计算机2包括一个或多个中央处理单元(CPU)4、易失性存储器6、非易失性存储器8、操作系统10以及多个网络适配器12a、12b。虽然只示出了两个网络适配器,但是主机2可以包括两个以上网络适配器。应用程序14还在存储器6中执行,并且能够经由网络18发送和接收来自远程计算机的分组。主机2可以包括本领域中已知的任何计算设备,诸如大型计算机、服务器、个人计算机、工作站、膝上型电脑、手持式计算机、电话设备、网络设备、虚拟化设备、存储器控制器等等。可以使用本领域中已知的任何CPU4和操作系统10。存储器6中的程序和数据可以作为存储器管理操作的一部分交换到存储器8中。
网卡12a、12b能够经由网络18发送和接收数据分组,所述网络可以包括局域网(LAN)、因特网、广域网(WAN)、存储区域网络(StorageArea Network,SAN)、无线网络(无线保真,Wireless Fidelity)等等。设备驱动程序20在存储器6中执行,并且包括网络适配器12a、12b专用命令,用于与网络适配器12a、12b通信并且在操作系统10和网络适配器12a、12b之间接口。所述网络适配器12a、12b或者设备驱动程序20往往实施逻辑来处理所述分组,诸如传输协议层来处理包封在传输层中的分组中包括的消息内容,所述传输层诸如传输控制协议(TCP)和/或网际协议(IP)、因特网小型计算机系统接口(iSCSI)、光纤通路、SCSI、并行SCSI传输或者本领域中已知的任何其他传输层协议。所述传输协议层往往从所接收的TCP/IP分组对净负载进行拆包,并且把数据转移到设备驱动程序20,以便返回到应用程序14。此外,传输数据的应用程序14往往向设备驱动程序20发送数据,设备驱动程序20然后将数据发送到传输协议层以便在经由网络18发送以前包装到TCP/IP分组中。
网络适配器12a、12b还包括网络协议层,用于实现物理通信层以便经由网络18向远程设备发送和从其接收网络分组。在某些实施例中,网络适配器12a、12b网络协议层(未示出)可以执行以太网协议、令牌环协议、光纤通道协议、Infiniband、串行高级技术附件(SerialAdvanced Technology Attachment,SATA)、并行SCSI、串行附属SCSI电缆等等,或者本领域中已知的任何其他网络通信协议。
所述网络适配器12a、12b包括以适配器硬件实现的各种部件。总线控制器30a、30b使网络适配器12a、12b能够在计算机总线32上通信,其可以包括本领域中已知的任何总线接口,诸如外围部件互联(PCI)总线、小型计算机系统接口(SCSI)、串行ATA等等。发送描述符队列34a、34b接收经由总线32发送到适配器12a、12b的分组,并将它们排队。外部负载均衡器36a、36b包括用于实现负载均衡算法的逻辑,用于选择多个网络适配器12a、12b之一来发送所接收的分组。所述外部负载均衡算法可以使用本领域中已知的任何负载均衡技术,诸如循环(found-robin)等等。在外部负载均衡器36a、36b中实现的外部负载均衡算法可以确定在每个网络适配器12a、12b的相对负载,然后选择一个具有轻负载的网络适配器。如果网络适配器包括多个端口,诸如图1中所示,那么所述负载均衡算法可以根据端口数目和/或位于目前使用的适配器中的所有端口的可用带宽来进行负载均衡。举例来说,外部负载均衡器36a、36b可以选择具有最多数目的活动端口或者具有所有活动端口中的最大带宽的适配器。作为选择,所述外部负载均衡算法可以根据所述分组被定向到的网络地址来选择网络适配器12a、12b以处理分组,所述网络地址例如IP地址。哈希表可用来使IP地址与用于发送此分组的网络适配器12a、12b相关联。在这种哈希表实施方案中,负载均衡块36a、36b往往使分组的目标IP地址散列,以便选择网络适配器来发送此分组。在某些实施方案中,只有作为初级适配器的网络适配器12a、12b才会执行负载均衡操作。
网络适配器12a、12b还包括重定向模块38a、38b,用于接口总线控制器30a、30b,以便如果负载均衡块36a、36b确定另一个网络适配器12a、12b应该处理所接收的分组的发送时,将发送描述符队列34a、34b中的分组重定向至另一个网络适配器12a、12b。仅仅在初级网络适配器12a、12b上启用所述重定向模块38a、38b。所述配置寄存器和地址表40a、40b提供用于表明网卡状态的状态信息。配置寄存器40a、40b往往表明网络适配器12a、12b是初级还是第二适配器。地址表40a、40b包括与总线32耦合的其他网络适配器12a、12b的总线地址。所述设备驱动程序20可以写入配置寄存器40a、40b,以便将一个适配器12a、12b指定为初级适配器。
此外,适配器12a、12b还均包括内部负载均衡器42a、42b,用于选择多端口适配器上端口的之一个。图1示出了分别具有四个端口44a、46a、48a、50a和44b、46b、48b、50b的每个适配器12a、12b。适配器12a、12b可以具有更多或者更少的端口。此外,其中一个适配器可以只具有一个端口。所述内部负载均衡器42a、42b分别运用负载均衡算法来选择一个可利用的端口44a、46a、48a、50a和44b、46b、48b、50b,以便供传输之用,其可以包括具有最高可用带宽的端口或者以某个其他因素为基础的端口。在某些实施例中,内部负载均衡器42a、42b可以通过利用比用于I/O的所有端口更少的端口(即活动端口)、并且通过保留一个或多个可利用的端口来管理这些端口,以便在其中一个活动端口发生故障时使用。照此,如果活动端口发生故障,则内部负载均衡器42a、42b就可以对保留端口执行故障转移(failover)。因为可以在网络适配器12a、12b层而非主机系统层自动地执行故障转移操作,所以这种实施例减少了计算机CPU4上的负担。所述配置寄存器40a、40b可以表明适配器中的哪些端口是活动的或者是保留的。
如果网络适配器只具有一个端口,那么将在这种单个端口上发送分组,而不是执行任何内部负载均衡来在端口之中进行选择。
所述网络适配器12a、12b可以包括附加硬件逻辑以执行附加操作,用于处理从主机2或者网络18接收的分组。此外,网络适配器12a、12b可以实现传输层卸载引擎(TOE),用于在网络适配器中实现传输协议层,这与主机设备驱动程序30相反,以便进一步地减少主机的处理负担。作为选择,传输层可以在设备驱动程序20中加以实施。
图2举例说明了在网络适配器12a、12b的部件中执行的操作。当在发送描述符队列34a、34b中接收(在块100)来自于主机设备驱动程序20的分组时,如果(在块102)配置寄存器40a、40b表明网络适配器12a、12b是次级适配器,那么把排队的分组转发(在块104)到内部负载均衡器42a、42b,以使用负载均衡算法来选择可利用的且活动的端口,如配置寄存器40a、40b中表明的那样以供传输。如果起次级适配器作用的网络适配器只具有一个端口,那么将分组在此单个端口上发送,而不更进一步地进行负载均衡。否则,对于多端口适配器来说,在块104处选择的端口44a、46a、48a、50a、44b、46b、48b、50b上发送所接收的分组。如上所述,可以使用本领域中已知的任何负载均衡算法来选择一个可利用的端口,诸如选择具有最高可用带宽的端口,选择指定为初级端口的固定端口,或者循环复用以便在两个端口之间交替。
如果(在块102)配置寄存器40a、40b表明网络适配器12a、12b是初级适配器,并且如果(在块106)在总线32上存在至少一个可利用的次级网络适配器,那么外部负载均衡器36a、36b向请求可用性的总线32上的每个可利用的适配器发送(在块108)请求,其中可用性能够按总带宽、适配器上的活动端口数目等等来测量。在某些实施例中,在块108执行的操作可以仅仅周期性地加以执行,并且在对其他适配器查询有关它们可用性和带宽的信息以前,来自于每个适配器的信息重新使用预定次数。作为选择,对于图2逻辑的每次迭代总是可以执行在块108的操作。如果(在块106)没有活动的次级适配器,那么控制进行到块104,以便把分组转发给内部负载均衡器42a、42b。当接收(在块110)来自于总线32上的每个被查询的适配器12b的响应时,外部负载均衡器36a、36b使用(在块112)负载均衡算法来根据由被查询的次级适配器提供的一些准则、从自身(初级适配器)和所有响应适配器中选择具有最高可用性的适配器,所述准则诸如活动端口数目、带宽等等。如果(在块114)外部负载均衡器36a、36b选择了初级网络适配器12a、12b,那么在块104,将分组转发给内部负载均衡器来处理该请求。否则,如果选择了(在块114)次级适配器,那么重定向模块38a、38b根据地址表40a、40b确定(在块116)所选择的次级适配器的总线地址,并且经由总线32向所选择的次级网络适配器12a、12b的确定了的总线地址发送(在块118)在发送描述符队列34a、34b中的分组。然而,接收分组的次级网络适配器12a、12b会执行图2中的操作以便处理所接收的分组。
在某些实施例中,所述设备驱动程序20可以将输入/输出请求定向至具有最多端口的适配器12a、12b。如果多个网络适配器12a、12b具有相同数目的端口,那么可以根据诸如最低总线数目、交替方案等等一些准则来选择其中一个。在可替代的实施例中,设备驱动程序20可以将默认的一个网络适配器12a、12b指定为初级适配器,并且始终向指定的初级适配器发送分组。照此,设备驱动程序20不执行任何负载均衡或者选择加权操作,而是只向具有最多端口的网络适配器12a、12b发送分组。在另一些实施例中,如果初级适配器发生故障,那么设备驱动程序20就能执行故障转移操作以便将继续存在的网络适配器指定为初级适配器。
图3举例说明了内部负载均衡器42a、42b(或者适配器中的其他逻辑)执行的操作,用于当网络适配器12a、12b包括多个端口44a、46a、48a、50a、44b、46b、48b、50b时,处理故障转移。当检测到(在块150)端口44a、46a、48a、50a、44b、46b、48b、50b其中一个的故障时,内部负载均衡器42a、42b设置(在块152)配置寄存器40a、40b以便把发生故障的端口指示为故障的。如果(在块154)存在一个保留端口,那么将其中一个保留端口设置(在块156)为活动的。如果没有保留端口并且如果(在块158)不再有活动端口,那么适配器12a、12b向设备驱动程序20发送消息该适配器已经发生故障(在块158)。否则,如果存在至少一个活动端口,那么控制结束。
图3所述的操作使具有多个端口的每个适配器12a、12b能够在当前使用的端口之一发生故障并且没有通知设备驱动程序20的情况下,自动地对保留的端口执行故障转移。这样通过减轻设备驱动程序20必须执行故障转移操作,从而减少了主机CPU4上的工作负载。在其他的实施方案中,如果端口44a、46a、48a、50a、44b、46b、48b、50b的阈值数目是不可获得的,或者如果适配器12a、12b丢失无法由保留端口替代的活动端口的话,那么适配器12a、12b可以向设备驱动程序20通知端口故障。当初级适配器12a、12b的设备驱动程序的选择是以在适配器的活动端口的数目为基础时,这种通知将允许设备驱动程序20在必要时调整其对初级适配器12a、12b的选择。
所描述的实施方案通过将负载均衡和故障操作从主机设备驱动程序卸载到网络适配器硬件,从而很大程度上降低了主机CPU利用率,所述协作是依照在网络适配器逻辑中执行的负载均衡算法、通过使网络适配器执行协作操作以便把分组转移到最适合于发送分组的网络适配器来进行的。此外,所描述的实施例以轻微地增加I/O的开销来在网络适配器之间经由总线32转移分组,而减少处理器开销。I/O开销非常轻微是因为如果确定的负载均衡条件满足时,只有一部分分组经由总线被转移到次级适配器。
另外的实施例详述所描述的用于处理数据分组的技术可以作为使用标准编程和/或工程技术来生成软件、固件、硬件或者其组合的方法、设备或者制造物品来加以实现。在此使用的术语“制造物品”指的是采用硬件逻辑(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)中,或者诸如磁存储介质(例如,硬盘驱动器、软盘、磁带等)、光存储器(CD-ROM、光盘等)、易失性和非易失性存储设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可编程序逻辑等)的计算机可读介质实现的代码或逻辑。计算机可读介质中的代码由处理器访问并且执行。实现优选实施例的代码还可以经由传输介质访问,或者经由网络从文件服务器访问。在这种情况下,其中实现代码的制造物品可以包括传输介质,诸如网络传输线、无线传输介质、经由空间传播的信号、无线电波、红外信号等。由此,所述“制造物品”可以包括其中嵌入了代码的介质。另外,“制造物品”可以包括硬件和软件部件的组合,其中代码被嵌入、处理并执行。当然,本领域技术人员将意识到,在不脱离本发明的范围的情况下,可以对此配置作出许多修改,并且所述制造物品可以包括本领域中已知的任何信息承载介质。
在所述实施例中,外部和内部负载均衡逻辑采用网络适配器硬件加以实现。在另外的实施方案中,与在诸如专用集成电路(ASIC)之类的硬件中执行负载均衡逻辑相反,所述网络适配器可以包括处理器和存储器,以执行载入存储器的指令,以便执行负载均衡操作。
在所述实施方案中,次级网络适配器当接收分组时往往发送此分组,而不是执行更进一步的外部负载均衡操作。在其他实施方案中,接收来自于初级网络适配器的重定向分组的次级网络分组可以执行另外的外部负载均衡操作,以便确定是否将分组发送另一个网络适配器还是重定向到另一个网络适配器。
所述网络适配器可以采用插入主机2的槽中的网络适配器卡来加以实现,诸如PCI卡。作为选择,所述网络适配器可以包括安装在主机2主板上的集成电路组件。
在某些实施方案中,所述设备驱动程序和网络适配器的实施例可以包括在计算机系统中,所述计算机系统包括诸如SCSI、集成驱动器电子电路(IDE)、独立盘的冗余阵列(RAID)等的存储器控制器,用于管理对诸如磁盘驱动、磁带介质、光盘等非易失性存储设备的访问。在可选的实施方案中,网络适配器实施例可以包括在不具有诸如确定的集线器和交换机的存储器控制器的系统中。
在确定的实施方案中,网络适配器可以被配置为能通过电缆发送数据,其中所述电缆与网络适配器上的端口相连。作为选择,网络适配器实施例可以被配置为能经由无线网络或者连接来发送数据,诸如无线局域网、蓝牙等。
在所描述的实施方案中,设备驱动程序20不执行负载均衡操作,而是在初级网络适配器12a、12b中执行负载均衡操作。在可选的实施方案中,设备驱动程序20可以执行确定的负载均衡算法来选择一个网络适配器,然后所选择的网络适配器可以执行进一步地、更加集中的外部负载均衡操作以便提高选择最佳网络适配器处理请求的能力。
图2和3中举例说明的逻辑示出了依照确定顺序发生的确定事件。在可选的实施例中,可以依照不同的顺序执行、修改或者去除确定的操作。此外,可以给上述逻辑添加步骤,并且这仍然符合所描述的实施例。此外,此处所述的操作可以顺序地发生或者可以并行处理确定的操作。再者,可以由单个处理单元或者由分布式处理单元来执行操作。
图4举例说明了诸如图1中所示主机的网络元件的计算机体系结构200的实施方案。体系结构200可以包括处理器202(例如,微处理器)、存储器204(例如,易失性存储设备)以及存储器206(例如,非易失性存储器,诸如磁盘驱动器、光盘驱动器、磁带机等)。所述存储器206可以包括内部存储设备或者附属的或者网络可访问存储器。依照本领域中已知的方式将存储器206中的程序载入存储器204并且由处理器202执行。所述体系结构还包括网卡208,用于能够与诸如以太网、光纤通路判优环网等进行通信。此外,在某些实施例中,所述体系结构可以包括视频控制器209,用于在显示监视器上再现信息,其中所述视频控制器209可以在视频卡上实现,或者集成在安装在主板上的集成电路元件上。如上所述,确定的网络设备可以具有多个网卡。使用输入设备310来向处理器202提供用户输入,并且可以包括键盘、鼠标、输入笔、麦克风、触敏显示屏或者本领域中已知的其他激活或者输入机构。输出设备212能够再现从处理器202或者诸如显示监视器、打印机、存储器等其他部件发送的信息。
本发明的上述各种实施例已经为举例说明和描述的目的进行了介绍。其不意指穷举或者将本发明限制为所公开的特定形式。根据上述讲授可以做出许多修改和变化。不意旨通过此详细的说明来限制本发明的范围,而是由所附权利要求书来限制本发明的范围。上述说明书、实例和数据提供了生产和使用本发明的结构的完整说明。由于在不脱离本发明精神和范围的情况下,可以做出本发明的许多实施例,因此本发明归属于此后所附的权利要求书。
权利要求
1.一种用于在主机系统中处理要在网络上发送的分组的方法,所述主机系统包括多个网络适配器,包括在第一网络适配器接收分组,其中第一网络适配器具有多个端口;在第一网络适配器内执行第一负载均衡操作,以便选择一个网络适配器来发送所接收的分组;如果所选择的网络适配器是第二网络适配器,那么就把所接收的分组转发到第二网络适配器;以及如果所选择的网络适配器是第一网络适配器,那么相对于多个端口执行第二负载均衡操作,以便选择一个要在其上发送分组的端口。
2.如权利要求1所述的方法,其中在执行第一负载均衡操作以前,还执行利用第一网络适配器确定第一网络适配器是初级网络适配器还是次级网络适配器;如果第一网络适配器是次级网络适配器,那么相对于多个端口执行第二负载均衡操作,以便选择一个要在其上发送分组的端口;并且如果第一网络适配器是次级网络适配器,那么利用第一网络适配器经由所选择的端口将所接收的分组发送到网络,其中如果第一网络适配器是初级网络适配器,那么第一网络适配器执行第一负载均衡操作。
3.如权利要求2所述的方法,其中第一负载均衡操作仅仅在初级网络适配器中执行。
4.如权利要求1所述的方法,其中第一负载均衡操作根据在每个网络适配器可利用的端口数来选择一个网络适配器。
5.如权利要求4所述的方法,还包括利用第一网络适配器查询多个网络适配器的每一个,以便确定在每个网络适配器可利用端口的数目;并且从多个网络适配器的每个接收关于可利用端口的数目的信息,其中关于可利用端口的信息用于第一负载均衡操作。
6.一种用于管理网络适配器中的多个端口的方法,其中所述网络适配器执行检测一个用于传输的活动端口的故障;确定是否存在一个未用于传输的保留端口;并且如果存在一个保留端口,那么将一个保留端口设置为用于传输的活动端口。
7.如权利要求6所述的方法,还包括如果没有保留端口并且如果在网络适配器上没有可用于传输的活动端口,那么通知设备驱动程序网络适配器发生故障。
8.如权利要求6所述的方法,其中如果在检测到发生故障之后,网络适配器中有阈值数目个端口保持活动,那么不通知设备驱动程序。
9.一种在设备驱动程序中实现的方法,所述设备驱动程序在主机系统中执行,用于处理要在网络上发送的分组,其中所述主机包括多个网络适配器,并且其中所述设备驱动程序执行根据多个网络适配器的每一个中的可利用端口数目把多个网络适配器之一指定为初级网络适配器;接收分组;并且启动向指定为初级网络适配器的网络适配器传输分组,其中所述初级网络适配器能够执行负载均衡操作,以便确定一个网络适配器来发送所接收的分组,并且将分组重定向到另一个网络适配器以便发送所述分组。
10.如权利要求9所述的方法,其中当选择多个网络适配器的其中一个来接收所述分组时,所述设备驱动程序不执行负载均衡操作。
11.如权利要求9所述的方法,其中所述设备驱动程序还执行检测一个被指定为初级网络适配器的网络适配器的故障;根据网络适配器中可利用端口的数目,来执行将保持可利用的网络适配器之一指定为初级网络适配器的操作;并且配置在所确定的网络适配器中的一个寄存器,以便使确定的网络适配器作为初级网络适配器操作,并且执行负载均衡操作。
12.一种在主机系统中与外部网络适配器通信的网络适配器,包括多个端口;与至少一个外部网络适配器相接的接口;用于使网络适配器执行操作的控制逻辑,所述操作包括(i)接收分组;(ii)执行第一负载均衡操作以便选择一个网络适配器来发送所接收的分组;(iii)如果所选择的网络适配器是第二网络适配器,那么把所接收的分组转发到第二网络适配器;以及(iv)如果所选择的网络适配器是第一网络适配器并且具有多个端口,那么相对于多个端口执行第二负载均衡操作,以便选择一个要在其上发送分组的端口。
13.如权利要求12所述的网络适配器,其中在执行第一负载均衡操作以前,由控制逻辑引起的操作还包括利用第一网络适配器确定第一网络适配器是初级网络适配器还是次级网络适配器;如果第一网络适配器是次级网络适配器,那么相对于多个端口执行第二负载均衡操作,以便选择一个要在其上发送分组的端口;并且如果第一网络适配器是次级网络适配器,那么利用第一网络适配器经由所选择的端口将所接收的分组发送到网络,其中如果第一网络适配器是初级网络适配器,那么第一网络适配器执行第一负载均衡操作。
14.如权利要求12所述的网络适配器,其中第一负载均衡操作根据在每个网络适配器可利用的端口数来选择一个网络适配器。
15.如权利要求12所述的网络适配器,其中由控制逻辑引起的操作还包括利用第一网络适配器查询多个网络适配器的每一个,以便确定在每个网络适配器可利用端口的数目;并且从多个网络适配器的每一个接收关于可利用端口的数目的信息,其中关于可利用端口的信息用于第一负载均衡操作。
16.一种在主机系统中与外部网络适配器通信的网络适配器,包括多个端口;与至少一个外部网络适配器相接的接口;用于使网络适配器执行操作的控制逻辑,所述操作包括(i)检测一个用于传输的活动端口的故障;(ii)确定是否存在一个未用于传输的保留端口;以及(iii)如果存在一个保留端口,那么将一个保留端口设置为用于传输的活动端口。
17.如权利要求16所述的网络适配器,其中由控制逻辑引起的操作还包括如果没有保留端口并且如果在网络适配器上没有可用于传输的活动端口,那么向设备驱动程序通知网络适配器的故障。
18.如权利要求16所述的网络适配器,其中如果在检测到发生故障之后,网络适配器中有阈值数目个端口保持活动,那么不通知设备驱动程序。
19.一种与网络和数据存储器耦合的系统,包括处理器;存储器控制器,用于管理对数据存储器的输入/输出访问;多个网络适配器,能够发送和接收网络上的数据;设备驱动程序,由处理器执行,用于执行操作,所述操作包括(i)根据多个网络适配器的每一个中的可利用端口数目,来把多个网络适配器之一指定为初级网络适配器;(ii)接收分组;并且(iii)启动向指定为初级网络适配器的网络适配器传输分组,其中所述初级网络适配器能够执行负载均衡操作,以便确定一个网络适配器来发送所接收的分组,并且将分组重定向到另一个网络适配器以便发送所述分组。
20.如权利要求19所述的系统,其中当选择多个网络适配器的其中一个来接收所述分组时,所述设备驱动程序不执行负载均衡操作。
21.一种制造物品,用于处理要在网络上发送的分组,所述网络与主机系统耦合,所述主机系统包括多个网络适配器,其中所述制造物品使得在具有多个端口的第一网络适配器中执行如下操作,所述操作包括接收分组,其中第一网络适配器具有多个端口;执行第一负载均衡操作以便选择一个网络适配器来发送所接收的分组;如果所选择的网络适配器是第二网络适配器,那么把所接收的分组转发到第二网络适配器;以及如果所选择的网络适配器是第一网络适配器,那么相对于多个端口执行第二负载均衡操作,以便选择一个要在其上发送分组的端口。
22.如权利要求21所述的制造物品,其中在执行第一负载均衡操作以前,还执行利用第一网络适配器确定第一网络适配器是初级网络适配器还是次级网络适配器;如果第一网络适配器是次级网络适配器,那么相对于多个端口执行第二负载均衡操作,以便选择一个要在其上发送分组的端口;并且如果第一网络适配器是次级网络适配器,那么利用第一网络适配器经由所选择的端口将所接收的分组发送到网络,其中如果第一网络适配器是初级网络适配器,那么第一网络适配器执行第一负载均衡操作。
23.如权利要求22所述的制造物品,其中第一负载均衡操作仅仅在初级网络适配器中执行。
24.如权利要求21所述的制造物品,其中第一负载均衡操作根据在每个网络适配器可利用的端口数来选择一个网络适配器。
25.如权利要求24所述的制造物品,还包括利用第一网络适配器查询多个网络适配器的每一个,以便确定在每个网络适配器可利用端口的数目;并且从多个网络适配器的每个接收关于可利用端口的数目的信息,其中关于可利用端口的信息用于第一负载均衡操作。
26.一种制造物品,用于管理网络适配器中的多个端口,其中所述制造物品使得执行如下操作,所述操作包括检测一个用于传输的活动端口的故障;确定是否存在一个未用于传输的保留端口;以及如果存在一个保留端口,那么将一个保留端口设置为用于传输的活动端口。
27.如权利要求26所述的制造物品,还包括如果没有保留端口并且如果在网络适配器上没有可用于传输的活动端口,那么向设备驱动程序通知网络适配器的故障。
28.如权利要求26所述的制造物品,其中如果在检测到发生故障之后,网络适配器中有阈值数目个端口保持活动,那么不通知设备驱动程序。
29.一种制造物品,用于处理要在网络上发送的分组,所述主机包括多个网络适配器,其中所述制造物品使得执行如下操作,所述操作包括根据多个网络适配器的每个中的可利用端口数目,来把多个网络适配器之一指定为初级网络适配器;接收分组;并且启动向指定为初级网络适配器的网络适配器传输分组,其中所述初级网络适配器能够执行负载均衡操作,以便确定一个网络适配器来发送所接收的分组,并且将分组重定向到另一个网络适配器以便发送所述分组。
30.如权利要求29所述的制造物品,其中当选择多个网络适配器的其中一个来接收所述分组时,所述设备驱动程序不执行负载均衡操作。
31.如权利要求29所述的制造物品,其中所述设备驱动程序还执行检测一个指定为初级网络适配器的网络适配器的故障;根据网络适配器中可利用端口的数目,来执行将保持可利用的网络适配器之一指定为初级网络适配器的操作;并且配置在所确定的网络适配器中的寄存器,以便使所确定的网络适配器作为初级网络适配器操作,并且执行负载均衡操作。
全文摘要
提供了一种用于在包括多个网络适配器的主机系统中处理要在网络上发送的分组的方法、系统和程序。第一网络适配器接收分组,其中第一网络适配器具有多个端口。第一网络适配器执行第一负载均衡操作以便选择一个网络适配器来发送所接收的分组。如果所选择的网络适配器是第二网络适配器,那么把所接收的分组转发到第二网络适配器。如果所选择的网络适配器是第一网络适配器,那么相对于多个端口执行第二负载均衡操作,以便选择一个要在其上发送分组的端口。
文档编号G06F15/16GK1581853SQ200410063399
公开日2005年2月16日 申请日期2004年7月8日 优先权日2003年8月8日
发明者A·文卡塔纳拉彦, A·曼诺哈 申请人:英特尔公司