CN1581853B - 用于处理要在网络上发送的分组的方法、系统和程序 - Google Patents

用于处理要在网络上发送的分组的方法、系统和程序 Download PDF

Info

Publication number
CN1581853B
CN1581853B CN2004100633994A CN200410063399A CN1581853B CN 1581853 B CN1581853 B CN 1581853B CN 2004100633994 A CN2004100633994 A CN 2004100633994A CN 200410063399 A CN200410063399 A CN 200410063399A CN 1581853 B CN1581853 B CN 1581853B
Authority
CN
China
Prior art keywords
network adapter
load
elementary
reception
port
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.)
Expired - Fee Related
Application number
CN2004100633994A
Other languages
English (en)
Other versions
CN1581853A (zh
Inventor
A·文卡塔纳拉彦
A·曼诺哈
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1581853A publication Critical patent/CN1581853A/zh
Application granted granted Critical
Publication of CN1581853B publication Critical patent/CN1581853B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

用于处理要在网络上发送的分组的方法、系统和程序。提供了一种用于在包括多个网络适配器的主机系统中处理要在网络上发送的分组的方法、系统和程序。第一网络适配器接收分组,其中第一网络适配器具有多个端口。第一网络适配器执行第一负载均衡操作以便选择一个网络适配器来发送所接收的分组。如果所选择的网络适配器是第二网络适配器,那么把所接收的分组转发到第二网络适配器。如果所选择的网络适配器是第一网络适配器,那么相对于多个端口执行第二负载均衡操作,以便选择一个要在其上发送分组的端口。

Description

用于处理要在网络上发送的分组的方法、系统和程序
技术领域
本发明涉及一种用于在包括多个具有多端口的网络适配器的主机系统中处理要在网络上发送的分组的方法、系统和程序。
背景技术
主计算机可以具有多个网卡来把系统连接到网络。在现有系统中,主机往往包括网络设备驱动程序,它是一种用于执行主机操作系统和网卡之间连接的软件程序。对于包括多处理器的主机来说,设备驱动程序往往选择其中一个网卡来发送分组。在主机中执行的所述设备驱动程序通常执行负载均衡算法来选择特定的网卡发送分组。这种负载均衡算法需要大量的主机中央处理单元(CPU)资源和周期来执行。主机CPU上的负担随着适配器数目的增加以及随着由设备驱动程序处理的事务的数目的增加而增加。执行负载均衡操作所要求的CPU资源可以从CPU容量的5%变动到50%,这取决于CPU的处理速度、适配器的数目和发送活动量。
尽管如此,在本领域中仍然存在对提高设备驱动程序性能并且使主处理器上设备驱动程序处理负担最小化的进一步需要。
发明内容
本发明提供如下内容:
(一).一种用于在主机系统中处理要在网络上发送的分组的方法,所述主机系统包括多个网络适配器,包括:
在接收网络适配器接收分组,其中所述接收网络适配器具有多个端口;
在所述接收网络适配器内实现第一负载均衡算法,用以选择所述网络适配器中的一个网络适配器来发送所接收的分组;
如果所选择的网络适配器不是所述接收网络适配器,那么就利用所述接收网络适配器把所接收的分组转发到所选择的网络适配器;以及
相对于多个端口实现第二负载均衡算法,用以响应于确定所选择的网络适配器是所述接收网络适配器而在所述接收网络适配器中选择一个要在其上发送分组的端口。
优选地,所述方法还执行:
利用接收网络适配器确定所述接收网络适配器是初级网络适配器还是次级网络适配器,其中第二负载均衡算法响应于确定所述接收网络适配器是次级网络适配器而在所述接收网络适配器中选择一个要在其上发送分组的端口;并且
其中第一负载均衡算法响应于确定所述接收网络适配器是初级网络适配器而选择所述网络适配器中的一个网络适配器。
优选地,在所述方法中,只有在初级网络适配器中实现的第一负载均衡算法才选择所述网络适配器中的一个网络适配器。
优选地,在所述方法中,第一负载均衡算法根据在每个网络适配器可利用端口的数目来选择一个网络适配器。
优选地,所述方法还包括:
利用所述接收网络适配器查询多个网络适配器中的每一个网络适配器,用以确定在每个网络适配器可利用端口的数目;并且
从多个网络适配器中的每个网络适配器接收关于可利用端口的数目的信息,其中关于可利用端口的信息被第一负载均衡算法使用。
优选地,在所述方法中,第二负载均衡算法被在接收网络适配器中实现,用以在接收网络适配器中选择一个要在其上发送分组的端口。
(二).一种用于在主机系统中处理要在网络上发送的分组的方法,其中主机系统包括多个网络适配器,并且其中所述方法包括下列步骤:
根据多个网络适配器的每一个网络适配器中可利用端口的数目把多个网络适配器中的一个网络适配器指定为初级网络适配器,其中所述网络适配器包括初级网络适配器和至少一个次级网络适配器;
接收分组;并且
启动向初级网络适配器传送分组,其中所述初级网络适配器实现第一负载均衡算法,用以选择初级网络适配器和次级网络适配器中的一个网络适配器来发送所接收的分组,并且响应于第一负载均衡算法选择一个次级网络适配器,所述初级网络适配器把分组重定向到至少一个次级网络适配器中的一个次级网络适配器以发送分组,并且响应于第一负载均衡算法选择初级网络适配器,所述初级网络适配器相对于初级网络适配器上的多个端口实现第二负载均衡算法,用以选择所述端口中一个要在其上发送分组的端口。
优选地,在所述方法中,当选择多个网络适配器中的一个网络适配器来接收分组时,所述设备驱动程序不执行负载均衡操作。
优选地,在所述方法中,所述设备驱动程序还执行:
检测一个被指定为初级网络适配器的网络适配器的故障;
根据网络适配器中可利用端口的数目,来执行将其余可利用的网络适配器中的一个网络适配器指定为初级网络适配器的操作;并且
配置在所确定的网络适配器中的寄存器,用以使所确定的网络适配器作为初级网络适配器操作并且执行负载均衡操作。
(三).一种在主机系统中与至少一个外部网络适配器通信的网络适配器,包括:
多个端口;
与至少一个外部网络适配器相接的接口;
用于使网络适配器执行操作的控制逻辑装置,所述操作包括:
接收分组;
实现第一负载均衡算法,用以选择所述网络适配器中的一个网络适配器来发送所接收的分组;
如果所选择的网络适配器是所述至少一个外部网络适配器中的一个网络适配器,那么把所接收的分组转发到所选择的网络适配器;以及
相对于多个端口实现第二负载均衡算法,用以响应于确定所选择的网络适配器不是所述至少一个外部网络适配器中的一个外部网络适配器,而在所述网络适配器中选择一个要在其上发送分组的端口。
优选地,在所述网络适配器中,在执行第一负载均衡操作以前,由控制逻辑引起的操作还包括:
确定所述网络适配器是初级网络适配器还是次级网络适配器,其中响应于确定所述网络适配器是次级网络适配器,第二负载均衡算法选择一个要在其上发送分组的端口,其中第一负载均衡算法响应于确定所述网络适配器是初级网络适配器而选择所述网络适配器中的一个网络适配器。
优选地,在所述网络适配器中,第一负载均衡算法根据在每个网络适配器可利用的端口数来选择一个网络适配器。
优选地,在所述网络适配器中,由控制逻辑引起的操作还包括:
查询多个网络适配器中的每一个网络适配器,以确定在每个网络适配器可利用的端口数目;并且
从多个网络适配器中的每一个网络适配器接收关于可利用的端口数目的信息,其中关于可利用端口的信息被用在第一负载均衡操作中。
(四).一种与网络和数据存储器耦合的系统,包括:
处理器;
存储器控制器,用于管理对数据存储器的输入/输出I/O访问;
多个网络适配器,能够在网络上发送和接收数据;
其中所述处理器被配置成执行下列操作:
根据多个网络适配器的每一个网络适配器中可利用的端口数目,来把多个网络适配器中的一个网络适配器指定为初级网络适配器;其中所述网络适配器包括初级网络适配器和至少一个次级网络适配器;
接收分组;并且
启动向初级网络适配器传送分组,其中所述初级网络适配器实现第一负载均衡算法,用以选择初级网络适配器和次级网络适配器中的一个网络适配器来发送所接收的分组,并且响应于第一负载均衡算法选择一个次级网络适配器,所述初级网络适配器把分组重定向到至少一个次级网络适配器中的一个网络适配器以发送分组,并且响应于第一负载均衡算法选择初级网络适配器,所述初级网络适配器相对于初级网络适配器上的多个端口实现第二负载均衡算法,用以选择所述端口中要在其上发送分组的一个端口。
优选地,在所述系统中,当选择多个网络适配器中的一个网络适配器来接收分组时,所述处理器被进一步配置成不执行负载均衡操作。
按照本发明的一种用于在主机系统中处理要在网络上发送的分组的设备,其中主机系统包括多个网络适配器,并且其中所述设备包括:
用于根据多个网络适配器的每一个网络适配器中可利用的端口数目,来把多个网络适配器中的一个网络适配器指定为初级网络适配器的装置;其中所述网络适配器包括初级网络适配器和至少一个次级网络适配器;
用于接收分组的装置;以及
用于启动向初级网络适配器传送分组的装置,其中所述初级网络适配器实现第一负载均衡算法,用以选择初级网络适配器和次级网络适配器中的一个网络适配器来发送所接收的分组,并且响应于第一负载均衡算法选择一个次级网络适配器,所述初级网络适配器把分组重定向到至少一个次级网络适配器中的一个网络适配器以发送分组,并且响应于第一负载均衡算法选择初级网络适配器,所述初级网络适配器相对于初级网络适配器上的多个端口实现第二负载均衡算法,用以选择所述端口中要在其上发送分组的一个端口。
附图说明
现在参见附图,其中相同的附图标记自始至终表示相应的部分:
图1举例说明了其中实现本发明实施例的计算环境;
图2举例说明了依照本发明实施例选择网络适配器的操作;
图3举例说明了依照本发明实施例处理网络适配器中的端口故障的操作;以及
图4举例说明了可以与所述实施例一起加以使用的计算机体系结构。
具体实施方式
在随后的描述中,将参照附图,所述附图形成本申请的一部分,并且其举例说明了本发明的几个实施例。应该理解的是,在不脱离本发明范围的情况下,也可以采用其他的实施例,并且可以做出结构上和操作上的改变。
图1举例说明了可以实现本发明实施例的计算环境。主计算机2包括一个或多个中央处理单元(CPU)4、易失性存储器6、非易失性存储器8、操作系统10以及多个网络适配器12a、12b。虽然只示出了两个网络适配器,但是主机2可以包括两个以上网络适配器。应用程序14还在存储器6中执行,并且能够经由网络18发送和接收来自远程计算机的分组。主机2可以包括本领域中已知的任何计算设备,诸如大型计算机、服务器、个人计算机、工作站、膝上型电脑、手持式计算机、电话设备、网络设备、虚拟化设备、存储器控制器等等。可以使用本领域中已知的任何CPU 4和操作系统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、串行高级技术附件(Serial Advanced Technology Attachment,SATA)、并行SCSI、串行附属SCSI电缆等等,或者本领域中已知的任何其他网络通信协议。
所述网络适配器12a、12b包括以适配器硬件实现的各种部件。总线控制器30a、30b使网络适配器12a、12b能够在计算机总线32上通信,其可以包括本领域中已知的任何总线接口,诸如外围部件互联(PCI)总线、小型计算机系统接口(SCSI)、串行ATA等等。发送描述符队列34a、34b接收经由总线32发送到适配器12a、12b的分组,并将它们排队。外部负载均衡器36a、36b包括用于实现负载均衡算法的逻辑,用于选择多个网络适配器12a、12b之一来发送所接收的分组。所述外部负载均衡算法可以使用本领域中已知的任何负载均衡技术,诸如循环(round-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示出:每个适配器12a、12b分别具有四个端口44a、46a、48a、50a和44b、46b、48b、50b。适配器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提供用户输入,并且输入设备310可以包括键盘、鼠标、输入笔、麦克风、触敏显示屏或者本领域中已知的其他激活或者输入机构。输出设备212能够再现从处理器202或者诸如显示监视器、打印机、存储器等其他部件发送的信息。
本发明的上述各种实施例已经为举例说明和描述的目的进行了介绍。其不意指穷举或者将本发明限制为所公开的特定形式。根据上述讲授可以做出许多修改和变化。不意旨通过此详细的说明来限制本发明的范围,而是由所附权利要求书来限制本发明的范围。上述说明书、实例和数据提供了生产和使用本发明的结构的完整说明。由于在不脱离本发明精神和范围的情况下,可以做出本发明的许多实施例,因此本发明归属于此后所附的权利要求书。

Claims (15)

1.一种用于在主机系统中处理要在网络上发送的分组的方法,所述主机系统包括多个网络适配器,包括:
在接收网络适配器接收分组,其中所述接收网络适配器具有多个端口;
在所述接收网络适配器内实现第一负载均衡算法,用以选择所述网络适配器中的一个网络适配器来发送所接收的分组;
如果所选择的网络适配器不是所述接收网络适配器,那么就利用所述接收网络适配器把所接收的分组转发到所选择的网络适配器;以及
相对于多个端口实现第二负载均衡算法,用以响应于确定所选择的网络适配器是所述接收网络适配器而在所述接收网络适配器中选择一个要在其上发送分组的端口。
2.如权利要求1所述的方法,还执行:
利用接收网络适配器确定所述接收网络适配器是初级网络适配器还是次级网络适配器,其中第二负载均衡算法响应于确定所述接收网络适配器是次级网络适配器而在所述接收网络适配器中选择一个要在其上发送分组的端口;并且
其中第一负载均衡算法响应于确定所述接收网络适配器是初级网络适配器而选择所述网络适配器中的一个网络适配器。
3.如权利要求2所述的方法,其中只有在初级网络适配器中实现的第一负载均衡算法才选择所述网络适配器中的一个网络适配器。
4.如权利要求1所述的方法,其中第一负载均衡算法根据在每个网络适配器可利用端口的数目来选择一个网络适配器。
5.如权利要求4所述的方法,还包括:
利用所述接收网络适配器查询多个网络适配器中的每一个网络适配器,用以确定在每个网络适配器可利用端口的数目;并且
从多个网络适配器中的每个网络适配器接收关于可利用端口的数目的信息,其中关于可利用端口的信息被第一负载均衡算法使用。
6.如权利要求1所述的方法,其中第二负载均衡算法被在接收网络适配器中实现,用以在接收网络适配器中选择一个要在其上发送分组的端口。
7.一种用于在主机系统中处理要在网络上发送的分组的方法,其中主机系统包括多个网络适配器,并且其中所述方法包括下列步骤:
根据多个网络适配器的每一个网络适配器中可利用端口的数目把多个网络适配器中的一个网络适配器指定为初级网络适配器,其中所述网络适配器包括初级网络适配器和至少一个次级网络适配器;
接收分组;并且
启动向初级网络适配器传送分组,其中所述初级网络适配器实现第一负载均衡算法,用以选择初级网络适配器和次级网络适配器中的一个网络适配器来发送所接收的分组,并且响应于第一负载均衡算法选择一个次级网络适配器,所述初级网络适配器把分组重定向到至少一个次级网络适配器中的一个次级网络适配器以发送分组,并且响应于第一负载均衡算法选择初级网络适配器,所述初级网络适配器相对于初级网络适配器上的多个端口实现第二负载均衡算法,用以选择所述端口中一个要在其上发送分组的端口。
8.如权利要求7所述的方法,其中所述方法还包括当选择多个网络适配器中的一个网络适配器来接收分组时,不执行负载均衡操作的步骤。
9.如权利要求7所述的方法,其中所述方法还包括下列步骤:
检测一个被指定为初级网络适配器的网络适配器的故障;
根据网络适配器中可利用端口的数目,来执行将其余可利用的网络适配器中的一个网络适配器指定为初级网络适配器的操作;并且
配置在所确定的网络适配器中的寄存器,用以使所确定的网络适配器作为初级网络适配器操作并且执行负载均衡操作。
10.一种用于在主机系统中处理要在网络上发送的分组的设备,所述主机系统包括多个网络适配器,该设备包括:
用于在接收网络适配器接收分组的装置,其中所述接收网络适配器具有多个端口;
用于在所述接收网络适配器内实现第一负载均衡算法,用以选择所述网络适配器中的一个网络适配器来发送所接收的分组的装置;
用于如果所选择的网络适配器不是所述接收网络适配器,那么就利用所述接收网络适配器把所接收的分组转发到所选择的网络适配器的装置;以及
用于相对于多个端口实现第二负载均衡算法,用以响应于确定所选择的网络适配器是所述接收网络适配器而在所述接收网络适配器中选择一个要在其上发送分组的端口的装置。
11.如权利要求10所述的设备,还包括:
用于利用接收网络适配器确定所述接收网络适配器是初级网络适配器还是次级网络适配器的装置,其中第二负载均衡算法响应于确定所述接收网络适配器是次级网络适配器而在所述接收网络适配器中选择一个要在其上发送分组的端口,其中第一负载均衡算法响应于确定所述接收网络适配器是初级网络适配器而选择所述网络适配器中的一个网络适配器。
12.如权利要求10所述的设备,其中第一负载均衡算法根据在每个网络适配器可利用的端口数来选择一个网络适配器。
13.如权利要求10所述的设备,还包括:
用于利用所述接收网络适配器查询多个网络适配器中的每一个网络适配器,以确定在每个网络适配器可利用的端口数目的装置;和
用于从多个网络适配器中的每一个网络适配器接收关于可利用的端口数目的信息的装置,其中关于可利用端口的信息被第一负载均衡算法使用。
14.一种用于在主机系统中处理要在网络上发送的分组的设备,其中主机系统包括多个网络适配器,其中所述设备包括:
用于根据多个网络适配器的每一个网络适配器中可利用的端口数目,来把多个网络适配器中的一个网络适配器指定为初级网络适配器的装置;其中所述网络适配器包括初级网络适配器和至少一个次级网络适配器;
用于接收分组的装置;以及
用于启动向初级网络适配器传送分组的装置,其中所述初级网络适配器实现第一负载均衡算法,用以选择初级网络适配器和次级网络适配器中的一个网络适配器来发送所接收的分组,并且响应于第一负载均衡算法选择一个次级网络适配器,所述初级网络适配器把分组重定向到至少一个次级网络适配器中的一个网络适配器以发送分组,并且响应于第一负载均衡算法选择初级网络适配器,所述初级网络适配器相对于初级网络适配器上的多个端口实现第二负载均衡算法,用以选择所述端口中要在其上发送分组的一个端口。
15.如权利要求14所述的设备,还包括用于当选择多个网络适配器中的一个网络适配器来接收分组时,不执行负载均衡操作的装置。
CN2004100633994A 2003-08-08 2004-07-08 用于处理要在网络上发送的分组的方法、系统和程序 Expired - Fee Related CN1581853B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/637305 2003-08-08
US10/637,305 US7506074B2 (en) 2003-08-08 2003-08-08 Method, system, and program for processing a packet to transmit on a network in a host system including a plurality of network adaptors having multiple ports
US10/637,305 2003-08-08

Publications (2)

Publication Number Publication Date
CN1581853A CN1581853A (zh) 2005-02-16
CN1581853B true CN1581853B (zh) 2012-10-10

Family

ID=34193568

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004100633994A Expired - Fee Related CN1581853B (zh) 2003-08-08 2004-07-08 用于处理要在网络上发送的分组的方法、系统和程序

Country Status (2)

Country Link
US (1) US7506074B2 (zh)
CN (1) CN1581853B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8285881B2 (en) * 2003-09-10 2012-10-09 Broadcom Corporation System and method for load balancing and fail over
US7603463B2 (en) * 2003-12-12 2009-10-13 Nortel Networks Limited Method and apparatus for allocating processing capacity of system processing units in an extranet gateway
US7734797B2 (en) * 2004-03-29 2010-06-08 Marvell International Ltd. Inter-processor communication link with manageability port
US8374087B2 (en) * 2004-09-23 2013-02-12 Sony Corporation Reliable audio-video transmission system using multi-media diversity
US8184657B2 (en) * 2004-09-23 2012-05-22 Sony Corporation Reliable audio-video transmission system using multi-media diversity
US7877519B2 (en) * 2004-10-18 2011-01-25 Intel Corporation Selecting one of a plurality of adapters to use to transmit a packet
US7881325B2 (en) * 2005-04-27 2011-02-01 Cisco Technology, Inc. Load balancing technique implemented in a storage area network
US7647434B2 (en) * 2005-05-19 2010-01-12 Cisco Technology, Inc. Technique for in order delivery of traffic across a storage area network
JP2007087266A (ja) * 2005-09-26 2007-04-05 Hitachi Ltd ストレージシステムおよびストレージ装置
US20080192654A1 (en) * 2007-02-09 2008-08-14 Timothy Roy Block Method, Apparatus, and Computer Program Product for Implementing Infiniband Network Topology Simplification
US7768907B2 (en) * 2007-04-23 2010-08-03 International Business Machines Corporation System and method for improved Ethernet load balancing
US8982887B2 (en) * 2007-05-18 2015-03-17 International Business Machines Corporation System, method and program for making routing decisions
TW201007469A (en) * 2008-08-15 2010-02-16 Asustek Comp Inc Computer with remote mangement system
US9288333B2 (en) * 2008-12-01 2016-03-15 At&T Intellectual Property I, L.P. Voice port utilization monitor
US8676930B2 (en) * 2009-08-14 2014-03-18 Tyco Safety Products Canada Ltd. System and method for multiport automation
US8681606B2 (en) 2011-08-30 2014-03-25 International Business Machines Corporation Implementing redundancy on infiniband (IB) networks
US8976666B2 (en) * 2013-07-25 2015-03-10 Iboss, Inc. Load balancing network adapter
US10887237B2 (en) * 2019-03-28 2021-01-05 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Advanced load balancing based on bandwidth estimation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134678A (en) * 1997-05-13 2000-10-17 3Com Corporation Method of detecting network errors
US6393483B1 (en) * 1997-06-30 2002-05-21 Adaptec, Inc. Method and apparatus for network interface card load balancing and port aggregation
US6490632B1 (en) * 1999-03-18 2002-12-03 3Com Corporation High performance load balancing and fail over support of internet protocol exchange traffic over multiple network interface cards

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6314525B1 (en) * 1997-05-13 2001-11-06 3Com Corporation Means for allowing two or more network interface controller cards to appear as one card to an operating system
US6105151A (en) * 1997-05-13 2000-08-15 3Com Corporation System for detecting network errors
US6272113B1 (en) * 1998-09-11 2001-08-07 Compaq Computer Corporation Network controller system that uses multicast heartbeat packets
US20040205414A1 (en) * 1999-07-26 2004-10-14 Roselli Drew Schaffer Fault-tolerance framework for an extendable computer architecture
US6718486B1 (en) * 2000-01-26 2004-04-06 David E. Lovejoy Fault monitor for restarting failed instances of the fault monitor
US7406168B2 (en) * 2002-12-19 2008-07-29 International Business Machines Corporation Connection manager for integrating legacy telephony environments and IP networks
US7353276B2 (en) * 2003-02-13 2008-04-01 Microsoft Corporation Bi-directional affinity
US7949992B2 (en) * 2006-06-27 2011-05-24 International Business Machines Corporation Development of information technology system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134678A (en) * 1997-05-13 2000-10-17 3Com Corporation Method of detecting network errors
US6393483B1 (en) * 1997-06-30 2002-05-21 Adaptec, Inc. Method and apparatus for network interface card load balancing and port aggregation
US6490632B1 (en) * 1999-03-18 2002-12-03 3Com Corporation High performance load balancing and fail over support of internet protocol exchange traffic over multiple network interface cards

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
说明书摘要,正文第2栏第2段,第4栏第2段,第6栏第2段,第7栏第60至64行,第10栏第8至35行,第13栏第5至7段.

Also Published As

Publication number Publication date
US7506074B2 (en) 2009-03-17
US20050044221A1 (en) 2005-02-24
CN1581853A (zh) 2005-02-16

Similar Documents

Publication Publication Date Title
CN1581853B (zh) 用于处理要在网络上发送的分组的方法、系统和程序
US8898385B2 (en) Methods and structure for load balancing of background tasks between storage controllers in a clustered storage environment
CN1902585B (zh) 用于与支持多个设备的网络适配器接口的方法、系统和程序
US8699322B1 (en) Port identifier management for path failover in cluster environments
US7380074B2 (en) Selecting storage clusters to use to access storage
JP3783017B2 (ja) ローカル識別子を使ったエンド・ノード区分
CN100403300C (zh) 镜像网络数据以建立虚拟存储区域网络
US7839788B2 (en) Systems and methods for load balancing storage system requests in a multi-path environment based on transfer speed of the multiple paths
US6968401B2 (en) Method, system, and program for maintaining and swapping paths in an MPIO environment
US9621466B2 (en) Storage area network multi-pathing
US20070130344A1 (en) Using load balancing to assign paths to hosts in a network
US11379127B2 (en) Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11921659B2 (en) Peer-to-peer communications among communication fabric coupled endpoint devices
US9547616B2 (en) High bandwidth symmetrical storage controller
US7562111B2 (en) Multi-processor architecture with high capacity I/O
US7797394B2 (en) System and method for processing commands in a storage enclosure
US20230069339A1 (en) Storage device, electronic device including storage device, and operating method of electronic device
WO2017131724A1 (en) Host devices and non-volatile memory subsystem controllers
US20060020711A1 (en) Cluster network with redundant communication paths
CN1578267B (zh) 处理分组以在主机系统的网络上传送的方法、系统及装置
US20060005196A1 (en) Resource allocation in a computer-based system
JP4379836B2 (ja) 入出力制御装置
US20230161721A1 (en) Peer-to-peer communications initiated among communication fabric coupled endpoint devices
JP6777722B2 (ja) 経路選択ポリシー設定システム、及び、経路選択ポリシー設定方法
CN115865803A (zh) 一种io请求处理方法、装置、设备及可读存储介质

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: 20121010

Termination date: 20210708

CF01 Termination of patent right due to non-payment of annual fee