处理分组以在主机系统的网络上传送的方法、系统及程序的制作方法

文档序号:7595280阅读:109来源:国知局
专利名称:处理分组以在主机系统的网络上传送的方法、系统及程序的制作方法
技术领域
本发明涉及一种处理分组以在包括多个网络适配器的主机系统中的网络上传送的方法、系统及程序。
背景技术
一台主计算机可能具有多个网卡以将系统连接到网络上。在现有的系统中,该主机可能包括网络设备驱动器,该驱动器是一个执行以在所述主机操作系统和所述网卡之间进行对接的软件程序。对于包括多个处理器的主机,该设备驱动器将选择所述网卡中的一个来发送分组。该设备驱动器在所述主机中执行,它典型地是执行一个负载平衡算法以选择一个特定的网卡来发送该分组。这种负载平衡算法需要数量巨大的主机中央处理单元(CPU)资源和周期来执行。当适配器的数量增加时,以及当该设备驱动器要处理的事务的数量增加时,在该主机CPU上的负荷也随之增大。执行负载平衡操作所需要的CPU资源能够在该CPU容量的5%到50%的范围内变动,这取决于该CPU的处理速度、适配器的数目以及传送活动的量。
尽管如此,在本领域中仍然存在对提高所述设备驱动器的性能以及最小化在所述主机处理器上的设备驱动器的处理负荷的持续需求。


现在参考附图,其中贯穿所有附图以相似的参考数字代表相应部分图1说明了一个计算环境,其中本发明的实施方案被实现;图2说明了依照本发明的实施方案来选择一个网络适配器的操作;以及图3说明了可能被用于所描述的实施方案的计算机结构。
具体实施例方式
在以下的描述中,对所述附图进行参考,这些附图形成了本文的一部分并且说明了本发明的几个实施例。应当理解可以利用其他的实施方案并且可能做出结构上和操作上的变化而不偏离本发明的范围。
图1说明了一个计算环境,其中本发明的实施方案可被实现。主计算机2包括一个或多个中央处理单元(CPU)4、一个易失性存储器6、非易失性存储装置8、一个操作系统10以及多个网络适配器12a,12b。尽管只有两个网络适配器被示出,但该主机2可以包括两个以上的网络适配器。应用程序14还可以在存储器6中执行并且能够从远程计算机发送以及接收分组。该主机2可以包含在本领域中已公知的任意计算设备,例如大型机、服务器、个人计算机、工作站、膝上型计算机、手持式计算机、电话设备、网络装置、虚拟化设备、存储控制器等等。在本领域中已知的任意CPU4和操作系统10都可以被使用。作为存储器管理操作的一部分,在存储器6中的程序和数据可以被交换到存储装置8中。
所述网卡12a,12b能够在网络18上发送和接收数据的分组,其中所述网络18可以包括局域网(LAN)、因特网、广域网(WAN)、存储区域网(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,所述设备驱动器然后将发送该数据到所述传输协议层以在所述网络18上传输之前打包成TCP/IP分组。
该网络适配器12a,12b还可另外包括一个网络协议层,该网络协议层实施物理通信层以通过网络18来发送和接收去往和来自远程设备的网络分组。在某些实施方案中,所述网络适配器12a,12b网络协议层(未被示出)可以实施以太网协议、令牌环协议、光纤信道协议、无限带宽(Infiniband)、串行高级技术配件(SATA)、并行SCSI、串行附加SCSI电缆等等,或者任意其他本领域中公知的网络通信协议。
所述网络适配器12a,12b包括多个在该适配器的硬件中实施的元件。总线控制器30a,30b启动所述网络适配器12a,12b以在计算机总线32上通信,所述计算机总线32可以包括本领域中公知的任何总线接口,例如外设部件互连(PCI)总线、小型计算机系统接口(SCSI)、串行ATA等等。传送描述符队列34a,34b在所述总线32上接收被传送到所述适配器12a,12b的分组并对其进行排队。负载平衡块36a,36b包括逻辑以实施负载平衡算法来选择所述多个网络适配器12a,12b中的一个去发送所接收到的分组。所述负载平衡算法可能使用本领域中公知的任意负载平衡技术,例如循环法(round robin)等等。在该负载平衡模块36a,36b中实施的负载平衡算法可以决定在每一个所述网络适配器12a,12b上的相对负载,然后选择具有最少负载的一个网络适配器。作为选择,所述负载平衡算法可以选择一个网络适配器12a,12b以基于所述分组指向的网络地址如IP地址来处理分组。散列表可以被用来把一个IP地址和一个网络适配器12a,12b关联在一起以发送所述分组。在这样的散列表实现中,所述负载平衡块36a,36b将对该分组的目标IP地址进行散列以选择一个网络适配器来发送所述分组。在某些实现中,只有作为主适配器进行操作的网络适配器12a,12b才将执行所述负载平衡操作。
该网络适配器12a,12b还包括一个重新定向模块38a,38b,其中如果所述负载平衡块36a,36b确定另一个网络适配器12a,12b应处理对所接收到的分组的发送,则该重新定向模块与所述总线控制器30a,30b相对接以将在所述发送描述符队列34a,34b中的分组重新定向到该另一个网络适配器12a,12b。该重新定向模块38a,38b只在所述主网络适配器12a,12b上被启动。配置寄存器和地址表40a,40b提供被用于指示所述网卡的状态的状态信息。该配置寄存器40a,40b将指示网络适配器12a,12b是主适配器还是次适配器。该地址表40a,40b包括耦合到所述总线32的其他网络适配器12a,12b的总线地址。
该网络适配器12a,12b可能包括附加的硬件逻辑以执行附加的操作来处理从所述主机2或者所述网络18接收到的分组。此外,与所述主机设备驱动器30相反,该网络适配器12a,12b可能实施一个传输层卸载引擎(engine)(TOE)以在该网络适配器中实施所述传输协议层,来进一步减轻主机处理负荷。作为选择,该传输层可以被实施在所述设备驱动器20中。
图2说明了在该网络适配器12a,12b的元件中执行的操作。一旦在所述发送描述符队列34a,34b中接收到(在块100)来自所述主机设备驱动器20的分组,那么如果(在块102)所述配置寄存器40a,40b指示该网络适配器12a,12b是次适配器,则该排队的分组被从该适配器12a,12b发送(在块104)到所述网络18,该适配器是或者从主机或者从主适配器接收该分组的。如果(在块102)所述配置寄存器40a,40b指示该网络适配器12a,12b是主适配器并且如果(在块106)在所述总线32上有至少一个次网络适配器可用,那么所述负载平衡块36a,36b执行(在块108)负载平衡操作来选择一个网络适配器12a,12b,或者是它本身(所述主网络适配器)或者是所述次网络适配器中的一个,来发送该分组。如果(在块106)没有活动的次适配器,那么控制就进行到块104以发送该分组。如果(在块110)在块36a,36b中的该负载平衡算法选择了所述主网络适配器12a,12b,那么该主网络适配器12a,12b将在所述发送描述符队列34a,34b中的分组发送至网络18。否则,如果(在块110)次适配器被选择了,则所述重新定向模块38a,38b从所述地址表40a,40b确定(在块112)所选择的次适配器的总线地址并且在该总线32上、将在所述发送描述符队列34a,34b中的分组发送(在块114)至所选择的次网络适配器12a,12b的所被确定的总线地址。然后该接收所述分组的次网络适配器12a,12b将执行在图2中的操作来处理所接收到的分组。
所述设备驱动器20可以指定一个网络适配器12a,12b缺省地作为所述主适配器并且总是发送分组到该被指定的主适配器。以这种方式,所述设备驱动器20不执行任何负载平衡或者权重操作的选择,而只是发送所述分组到该被指定的主网络适配器。在该主适配器故障的情况下,该设备驱动器20能够执行故障解决(failover)操作来指定一个残存的网络适配器作为主适配器。
通过根据在所述网络适配器逻辑中所实施的负载平衡算法,使所述网络适配器执行团队操作(teaming operation)来将分组转移到最适合于发送分组的网络适配器,从而从所述主机设备驱动器卸载该负载平衡操作到所述网络适配器硬件,因此所描述的实现大大减少了主机CPU的利用。此外,所描述的实施例以在所述总线32上、在网络适配器之间转移分组的I/O开销中的极小增加,减少了处理器开销。I/O开销极小,是因为如果满足一定的负载平衡条件,则只有一部分的所述分组在该总线上被转移到次适配器。
附加的实施方案详述所描述的处理数据分组的技术可以通过使用标准编程和/或工程技术来制造软件、固件、硬件或者其中的任意组合,而被实施为一种方法、装置或者制造的物品。在此使用的术语“制造的物品”指的是代码或是实施在硬件逻辑中的逻辑(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC),等等)或者计算机可读媒体,例如磁存储媒体(例如,硬盘驱动器、软盘、磁带,等等)、光存储装置(CD-ROM,光盘,等等)、易失性的和非易失性的存储设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可编程逻辑,等等)。在计算机可读媒体中的代码被处理器存取和执行。实施优选实施方案的代码还可以通过一个传送媒体或者从在网络上的文件服务器来访问。在这种情况下,实施该代码的制造的物品可以包括一个传送媒体,例如网络传送线路、无线传送媒体、通过空间传播的信号、无线电波、红外信号,等等。这样,该“制造的物品”可以包括具体化该代码的媒体。此外,所述“制造的物品”可以包括硬件和的软件组件的组合,其中所述代码被具体化、处理和执行。当然,本领域的那些技术人员将意识到对这种配置可以做许多修改而不偏离本发明的范围,并且所述制造的物品可以包括本领域所公知的任何信息承载媒体。
在所描述的实施方案中,该负载平衡逻辑在网络适配器硬件中被实施。跟在诸如专用集成电路(ASIC)的硬件中实施负载平衡逻辑相反,在附加的实现中,该网络适配器可以包括一个处理器和存储器来执行被加载到存储器的指令以执行所述负载平衡操作。
在所描述的实现中,所述次网络适配器一旦接收到一个分组,就将发送这样的分组并且不执行任何进一步的负载平衡操作。在进一步的实现中,从主网络适配器接收到重新定向的分组的次网络分组可以执行附加的负载平衡操作来确定是发送还是重新定向该分组到另一个网络适配器。
该网络适配器可以被实施在一个网络适配器卡中,如PCI卡,该卡被插入所述主机2的一个插槽中。作为选择,该网络适配器可以包括被安装到所述主机2的母板上的集成电路元件。
在某些实现中,所述设备驱动器和网络适配器实施例可以被包括进计算机系统中,该系统包括一个存储控制器,例如SCSI、集成驱动电子技术(IDE)、独立磁盘冗余阵列(RAID),等等,其管理对诸如磁盘驱动器、磁带媒体、光盘等等的非易失性存储设备的访问的控制器。在替代的实现中,该网络适配器实施例可以被包括进一个系统,该系统不包括存储控制器,例如某些集线器和交换机。
在某些实现中,该网络适配器可以被配置成通过连接到在该网络适配器上的一个端口的电缆来发送数据。作为选择,该网络适配器实施例可以被配置成在无线网络或连接上,例如在无线LAN、蓝牙等等上发送数据。
在所描述的实现中,该设备驱动器20不执行负载平衡操作并且负载平衡操作在所述主网络适配器12a,12b中被执行。在替代的实施方案中,该设备驱动器20可以执行某些负载平衡算法来选择一个网络适配器,然后该被选择的网络适配器可进一步更集中地执行负载平衡操作以提高选择最优网络适配器来处理该请求的能力。
图2的所示逻辑表明某些事件以一定的顺序发生。在替代的实施方案中,某些操作可以以不同的顺序被执行、修改或删除。而且,可以向前面所描述的逻辑增加步骤,并且该步骤仍然同所描述的实施方案一致。此外,在此描述的操作可能顺序地出现或者某些操作可能被并行处理。而更进一步,操作可以由单个处理单元或者由分布式处理单元来执行。
图3说明了网络元件,例如在图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.权利要求5所述的方法,其中确定一个网络适配器作为目标网络地址的函数包括基于该目标网络地址,利用一散列算法来选择一个网络适配器。
7.权利要求1所述的方法,其中执行该负载平衡操作包括基于所述网络适配器中每一个的相对负载来确定一个网络适配器。
8.一种在主机系统中执行的设备驱动器中实施的方法,用于处理分组以在网络上传送,其中该主机包括多个网络适配器,并且其中该设备驱动器执行接收分组;以及起动该分组到一个网络适配器的发送,该网络适配器被指定为主网络适配器,其中该主网络适配器能够执行负载平衡操作以确定一个网络适配器来发送所接收到的分组,并且重新定向该分组至另一个网络适配器以发送该分组。
9.权利要求8所述的方法,其中当选择所述多个网络适配器中的一个来接收该分组时,该设备驱动器不执行负载平衡操作。
10.权利要求8所述的方法,其中该设备驱动器还执行检测被指定为所述主网络适配器的一个网络适配器的故障;确定一个可用的网络适配器来充当所述主网络适配器,其中随后接收到的分组被发送到所述被确定的网络适配器;在所述被确定的网络适配器中配置一个寄存器以使得该被确定的网络适配器作为所述主网络适配器操作并且执行负载平衡操作。
11.一种在主机系统中执行的设备驱动器中实施的方法,用于处理分组以在网络上传送,其中该主机包括多个网络适配器,并且其中该设备驱动器执行接收分组;以及起动该分组到一个网络适配器的发送,该网络适配器被指定为主网络适配器,其中该主网络适配器能够执行负载平衡操作以确定一个网络适配器来发送所接收到的分组,并且重新定向该分组至另一个网络适配器以发送该分组。
12.权利要求11所述的方法,其中当选择所述多个网络适配器中的一个来接收该分组时,该设备驱动器不执行负载平衡操作。
13.权利要求11所述的方法,其中该设备驱动器还执行检测被指定为所述主网络适配器的一个网络适配器的故障;确定一个可用的网络适配器来充当所述主网络适配器,其中随后接收到的分组被发送到所述被确定的网络适配器;以及在所述被确定的网络适配器中配置一个寄存器以使得该被确定的网络适配器作为所述主网络适配器操作并且执行负载平衡操作。
14.一种在主机系统中与一个外部网络适配器进行通信的网络适配器,该网络适配器包括同至少一个外部网络适配器相对接的接口;控制逻辑,使得该网络适配器执行操作,该操作包括(i)接收分组;(ii)执行负载平衡操作以选择一个网络适配器来发送所接收到的分组;以及(iii)如果被确定的网络适配器是一个外部网络适配器,那么将所接收到的分组转发到该外部网络适配器。
15.权利要求14所述的网络适配器,其中由该控制逻辑引起的操作还包括确定该网络适配器是主网络适配器还是次网络适配器;以及如果该网络适配器是所述次网络适配器,则起动在网络上对所接收到的分组的发送,其中如果该网络适配器是所述主网络适配器,则该负载平衡操作被执行。
16.权利要求14所述的网络适配器,其中该负载平衡操作包括确定一个网络适配器作为在该网络上所接收到的分组要被发送到的目的网络地址的函数。
17.权利要求16所述的网络适配器,其中确定一个网络适配器作为目标网络地址的函数包括基于该目标网络地址,利用一散列算法来选择一个网络适配器。
18.权利要求14所述的网络适配器,其中该负载平衡操作包括基于所述网络适配器的每一个的相对负载来确定一个网络适配器。
19.权利要求14所述的方法,其中该分组被利用所述网际协议(IP)来编码。
20.一种被耦合到网络和数据存储装置的系统,该系统包括处理器;存储控制器,该控制器管理对该数据存储装置的输入/输出(I/O)访问;能够在该网络上发送和接收数据的多个网络适配器;设备驱动器,由该处理器执行以完成操作,所述操作包括(i)接收分组;以及(ii)起动该分组到一个网络适配器的发送,该网络适配器被指定为主网络适配器,其中该主网络适配器能够执行负载平衡操作以选择一个网络适配器来发送所接收到的分组,并且将该分组转发到另一个网络适配器以发送该分组。
21.权利要求20所述的系统,其中当选择所述多个网络适配器中的一个来接收该分组时,该设备驱动器不执行负载平衡操作。
22.权利要求20所述的系统,其中该设备驱动器操作还包括检测被指定为所述主网络适配器的一个网络适配器的故障;确定一个可用的网络适配器来充当所述主网络适配器,其中随后接收到的分组被发送到所述被确定的网络适配器;以及在所述被确定的网络适配器中配置一个寄存器以使得所述被确定的网络适配器作为该主网络适配器操作并且执行负载平衡操作。
23.权利要求20所述的系统,其中该数据存储装置包括磁存储媒体。
24.权利要求23所述的系统,其中该第一网络适配器执行操作包括确定该第一网络适配器是主网络适配器还是次网络适配器;以及如果该第一网络适配器是所述次网络适配器,则起动在网络上对所接收到的分组的发送,其中如果该第一网络适配器是所述主网络适配器,则该第一网络适配器执行该负载平衡操作。
25.一种处理分组以在包括多个网络适配器的主机系统中的网络上传送的制造的物品,其中该制造的物品使得操作被执行,该操作包括在第一网络适配器上接收分组;在该第一网络适配器内执行负载平衡操作,以选择一个网络适配器来发送所接收到的分组;以及如果所确定的网络适配器是第二网络适配器,那么利用该第一网络适配器将所接收到的分组发送到所述第二网络适配器。
26.权利要求25所述的制造的物品,其中该操作还包括利用该第一网络适配器,确定该第一网络适配器是主网络适配器还是次网络适配器;以及如果该第一网络适配器是所述次网络适配器,则利用该第一网络适配器来起动在网络上对所接收到的分组的发送,其中如果该第一网络适配器是所述主网络适配器,则该第一网络适配器执行所述负载平衡操作。
27.权利要求26所述的制造的物品,其中该负载平衡操作只在所述主网络适配器中被执行。
28.权利要求25所述的制造的物品,其中执行该负载平衡操作包括确定一个网络适配器作为在该网络上所接收到的分组要被发送到的目的网络地址的函数。
29.权利要求27所述的制造的物品,其中确定一个网络适配器作为目标网络地址的函数包括基于该目标网络地址,利用一散列算法来选择一个网络适配器。
30.权利要求24所述的制造的物品,其中执行该负载平衡操作包括基于所述网络适配器中每一个的相对负载来确定一个网络适配器。
31.一种处理分组以在包括多个网络适配器的主机中的网络上传送的制造的物品,其中该制造的物品使得操作被执行,该操作包括接收分组;以及起动所述分组到一个网络适配器的发送,该网络适配器被指定为主网络适配器,其中该主网络适配器能够执行负载平衡操作以确定一个网络适配器来发送所接收到的分组,并且重新定向该分组至另一个网络适配器以发送该分组。
32.权利要求31所述的制造的物品,其中当选择所述多个网络适配器中的一个以接收该分组时,不执行该负载平衡操作。
33.权利要求31所述的制造的物品,其中该操作还包括检测被指定为所述主网络适配器的一个网络适配器的故障;确定一个可用的网络适配器以充当所述主网络适配器,其中随后接收到的分组被发送到所述被确定的网络适配器;以及在所述被确定的网络适配器中配置一个寄存器以使得该被确定的网络适配器作为所述主网络适配器操作并且执行负载平衡操作。
全文摘要
提供了一种处理分组以在包括多个网络适配器的主机系统中的网络上传送的方法、系统及程序。分组在第一网络适配器上被接收。该第一网络适配器执行负载平衡操作来选择一个网络适配器以发送所接收到的分组。如果所述被确定的网络适配器是第二网络适配器,那么所接收到的分组被转发到该第二网络适配器。
文档编号H04L12/66GK1578267SQ20041006205
公开日2005年2月9日 申请日期2004年6月25日 优先权日2003年7月2日
发明者A·文卡塔纳拉彦, A·曼诺哈 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1