专利名称:网络业务的智能负载平衡和故障转移的制作方法
技术领域:
本发明的实施例大体上涉及网络通信,且更具体地说,涉及一种用于使用散列引擎 来对网络业务进行智能负载平衡和故障转移的系统和方法。
背景技术:
性能和可靠性是对现代计算机网络的关键要求。当新的网络连接在包含多个网络接 口卡("NIC")的计算装置上启动时,操作系统通常为所述连接选择NIC,而不考虑每 个NIC的利用率或出错率。此类环境的一个劣势是新的连接通常被指配给过载且/或不 可靠的NIC,从而导致用于新的连接且可能用于选定NIC上的其它现存连接的网络性能 降低。
一些现有技术解决方案试图通过保存含有"连接状态"的复杂的数据结构来避免将 新的连接指配给过载且/或不可靠的NIC。分析此数据结构使得网络装置驱动器可确定哪 些NIC是过载且/或不可靠的。然而,此连接状态的结构无助于有效地识别已向每个连 接指配哪一 NIC,或有效地将连接从过载或不可靠的NIC重新分配到完全起作用的NIC。 另外,保存或分析此连接状态在计算上是昂贵的,这可能使计算装置的计算和网络性能 降级。
如前面所说明,此项技术中需要一种更有效的用于在计算装置中的NIC上分配和再 分配网络连接的技术。
发明内容
本发明的一个实施例陈述一种用于智能地将网络连接转移到网络接口卡(NIC)以 接收网络业务的方法。所述方法包含截取由操作系统产生的地址解析协议(ARP)响 应包,其中所述ARP响应包具有与第一 NIC相关联的第一媒体接入控制(MAC)地址, 所述第一 NIC已经被操作系统选择用来接收与网络连接有关的网络业务对ARP响应 包进行解码;通过向散列函数提供经解码的ARP响应包中所包含的一个或一个以上网 络参数来产生与第二 NIC相关联的第二 MAC地址;以及用第二 MAC地址来代替ARP 响应包中的第一 MAC地址。所揭示的方法的一个优势是其允许网络连接使用散列引擎在计算装置中的多个 NIC上智能地转移。可使用连接转移来执行负载平衡、故障转移或故障恢复功能。以此 方式,可更容易地避免通过过载或不可靠的NIC来运行网络连接,从而改进总体网络性
因此,为了可更详细了解本发明的上述特征,可参考实施例对上文简要概述的本发 明进行更具体的描述,所述实施例中的一些实施例在附图中说明。然而,应注意,附图 只说明本发明的典型实施例,且因此不应被视为限制本发明的范围,因为本发明可承认 其它同等有效的实施例。
图1A到图1C说明可实施本发明的一个或一个以上方面的计算装置;以及
图2说明根据本发明一个实施例的用于基于向散列函数提供的参数来从散列表中选 择MAC地址的方法步骤的流程图。
图3A和图3B说明根据本发明一个实施例的用于将连接转移到被散列引擎选择用 来接收网络业务的NIC的方法步骤的流程图;以及
图4A和图4B说明根据本发明一个实施例的用于将连接转移到被散列引擎选择用 来传输网络业务的NIC的方法步骤的流程图。
图5说明根据本发明一个实施例的用于将现存连接卸载到由散列引擎选择的NIC的 方法步骤的流程图。
图6说明根据本发明一个实施例的用于使用虚拟因特网协议地址来执行地址解析协 议请求的方法步骤的流程图。
具体实施例方式
可通过使用截取、修改和重新引导从计算装置中的操作系统传输到网络上的远程计 算装置的包,来实现计算装置中的多个NIC之间的网络连接的智能负载平衡和故障转 移。可通过在地址解析协议("ARP")响应包由操作系统传输到远程计算装置时截取所 述ARP响应包,来对用于连接的接收业务进行负载平衡或故障转移。在被继续发送到 远程计算装置之前,被截取的ARP响应包经修改以包含被网络驱动器选择用来接收用 于连接的业务的NIC的MAC地址。此修改导致来自远程计算装置的接收业务到达由网 络驱动器选择的NIC,而不是到达由操作系统选择的NIC。
类似地,可通过在标准传输包由操作系统传输到远程计算装置时截取所述标准传输
包,来对用于连接的传输业务进行负载平衡或故障转移。在被发送到远程计算装置上之 前,被截取的传输包经修改以包含被网络驱动器选择用来传输用于连接的业务的NIC的 MAC地址。此修改导致传输业务通过由网络驱动器选择的NIC而不是通过由操作系统 选择的NIC发送到远程计算装置。
图1A到图1C说明可实施本发明的一个或一个以上方面的计算装置100。计算装置 IOO可以是桌上型计算机、服务器、膝上型计算机、掌上型计算机、个人数字助理、平 板电脑、游戏控制台、蜂窝式电话或处理信息的任何其它类型的类似装置。如图所示, 计算装置IOO包含主存储器102、存储器控制器104、微处理器106、 1/O控制器108和 NIC 110、 116。 NIC 110包含硬件卸载引擎("HOE") 112,且NIC 116包含HOE 118。 HOE 112和118包含经配置以用于处理与计算装置100与已经被选择性地卸载到NIC 110、 116的一个或一个以上远程网络计算装置(未图示)之间的网络连接相关联的网络 帧的逻辑。与常规做法一样,通过用HOE112和118来处理网络帧(有时被称为"在硬 件中处理连接"),而不是在主机软件传输控制协议和因特网协议("TCP/IP")堆栈中执 行那些处理功能(有时被称为"在软件中处理连接"),可实质上减少NIC 110、 116与 微处理器106之间的通信以及由微处理器106执行的计算。
存储器控制器104耦接到主存储器102,且耦接到微处理器106,且I/0控制器108 耦接到微处理器106和NIC 110、 116。在本发明的一个实施例中,微处理器106通过将 命令或数据写入到1/0控制器108中来向NIC 110、 116传输命令或数据。 一旦此类命令 或数据被写入到I/O控制器108中,I/O控制器108就视情况将所述命令或数据翻译成 目标NIC可理解的格式,并将所述命令或数据传送到所述目标NIC。类似地,NIC 110, 116通过将命令或数据写入到I/O控制器108中来向微处理器106传输命令或数据,且 I/O控制器108视情况将所述命令或数据翻译成微处理器106可理解的格式,并将所述 命令或数据传送到微处理器106。前面提及的耦接可实施为存储器总线或I/O总线,例 如PCITM总线或其任一组合,或否则可以任何其它技术上可行的方式来实施。
如图IB中更详细展示,主存储器102包含操作系统122和软件驱动器124。软件 驱动器124包含负载平衡和故障转移("LBFO")模块126和TCP/IP堆栈130。 LBFO 模块125跟踪每个NIC的联网状态(例如每个NIC的链接状态,每个NIC上的发送和 接收错误的数目和/或每个NIC是否发送和接收保持有效的包),且在网络连接在计算装 置100内从一个NIC移动到另一 NIC时与TCP/IP堆栈130通信。LBFO模块126包含 散列引擎128,其基于前面提及的每个NIC的联网状态,来智能地确定应如何在计算装 置100中的不同的起作用的NIC上分配网络连接。
如图1C中更详细展示,散列引擎128包含传输散列表138和接收散列表140。传 输散列表138的目的是基于由LBFO模块126向传输散列表138提供的数据,在计算装 置100内选择用于传输与网络连接有关的包的起作用的NIC。传输散列表138包含多个 散列表条目(例如,散列表条目134)和软件散列函数(未图示)。另外,每个散列表条 目包含表索引(例如,表索引132)和表值(例如,表值136)。 LBFO模块126引导散 列引擎128通过将TCP/IP连接数据传送到散列引擎128来在计算装置100内选择传输 NIC,所述散列引擎128将TCP/IP连接数据传送到传输散列表138中的软件散列函数。 作为响应,软件散列函数基于所述TCP/IP连接数据而在传输散列表138内选择表索弓l。 从此选定的表索引中,传输散列表138识别对应的表值,且散列引擎128将识别出的表 值传送回到LBFO模块126。如果对应的表值是无效的,那么散列引擎128基于计算装 置100中的所有NIC的NIC利用率和NIC出错率数据的经加权的组合(如由LBFO模 块126保存),而为连接选择NIC,且散列引擎128将选定NIC的MAC地址存储在对 应于当前表索引的表值中。由于软件散列函数的设计和操作是所属领域的技术人员众所 周知的,所以本文将不会论述这些问题。在一个实施例中,LBFO模块126将以下四个 TCP/IP数据传送到散列引擎128:客户机因特网协议("IP")地址、服务器IP端口、 客户机IP端口和虚拟局域网识别符("VLAN ID")。在其它实施例中,LBFO模块126 可将任何技术上可行的TCP/IP参数传送到散列引擎128。
接收散列表140的目的是基于由LBFO模块126向接收散列表140提供的数据,在 计算装置100内选择用于接收与网络连接有关的包的起作用的NIC。类似于传输散列表 138,接收散列表140包含多个散列表条目和软件散列函数(未图示),且每个散列表条 目包含表索引和表值。同样,LBFO模块126通过将TCP/IP连接数据传送到散列引擎 128来引导散列引擎128在计算装置100内选择接收NIC,所述散列引擎128将TCP/IP 连接数据传送到接收散列表140中的软件散列函数。作为响应,软件散列函数基于所述 TCP/IP连接数据而在接收散列表140内选择表索引。从此选定的表索引中,接收散列表 140识别对应的表值,且散列引擎128将识别出的表值传送回到LBFO模块126。同样, 如果对应的表值是无效的,那么散列引擎128基于计算装置100中的所有NIC的NIC 利用率和NIC出错率数据的经加权的组合(如由LBFO模块126保存),而为连接选择 NIC,且散列引擎128将选定NIC的MAC地址存储在对应于当前表索引的表值中。在 一个实施例中,LBFO模块126传送到散列引擎128的TCP/IP数据包含服务器IP地址。 在其它实施例中,LBFO模块126可将任何技术上可行的TCP/IP数据传送到散列引擎 128。
重要的是,散列引擎128的结构有效地支持在执行负载平衡、故障转移或故障恢复 操作时,将连接从一个NIC转移到另一个NIC。举例来说,在一个实施例中,如果第一 NIC过载,且LBFO模块126希望将第一 NIC上的一些连接转移到第二 NIC,那么散列 引擎128可使散列表值含有过载的第一NIC的MAC地址的散列表条冃失效。如下文在 图2的论述中更详细地描述,使散列表条目失效导致散列引擎128选择第二NIC作为对 应于失效的散列表条目的新的用于连接的NIC,并将第二 NIC的MAC地址存储在散列 表条目中。在对散列表值的此改变之后,散列表索引对应于经修改的散列表值的所有连 接都将通过第二 NIC来通信。
另外,散列引擎128的结构有效地支持将连接从一个NIC故障转移到另一 NIC。举 例来说,在一个实施例中,如果第一 NIC已经失效或已经变得不可靠,且LBFO模块 126希望将第一NIC上的连接转移到第二NIC,那么散列引擎128可使散列表值包含失 效或不可靠的NIC的MAC地址的所有散列表条目失效。同样,如下文在图2中所述, 使散列表条目失效导致散列引擎128选择第二NIC作为对应于失效的散列表条目的新的 用于连接的NIC,且散列表128将第二NIC的MAC地址存储在那些散列表条目中。一 旦已经用第二 NIC的MAC地址覆写了包含失效或不可靠的NIC的MAC地址的所有散 列表值,第一 NIC上的所有连接都已经被故障转移到第二 NIC。在2007年5月18日申 请且序号为11/750,903且代理人案号为NVDA/P001880的题为"负载平衡联网环境下的 智能故障转移"("Intelligent Failover In a Load-Balanced Networking Environment")的 相关美国专利申请案中描述了关于LBFO模块126在故障转移期间的功能性的更多细 节。此相关专利申请案以引用的方式并入本文中。
另外,散列引擎128的结构有效地支持连接从一个NIC故障恢复到另一 NIC。举例 来说,在一个实施例中,如果LBFO模块126已经使一些连接从第一 NIC故障转移到第 二 NIC,且第一 NIC随后变得完全起作用,那么LBFO模块126可使一些或所有故障转 移的连接故障恢复到第一NIC。在一个实施例中,LBFO模块126可通过更新对应于选 定的经故障转移的连接的散列表值来对选定的连接进行故障恢复,以存储第一 NIC而不 是第二 NIC的MAC地址。 一旦已经用第一 NIC的MAC地址覆写了包含第二 NIC的 MAC地址的散列表值,对应于经覆写的散列表值的连接就已经故障恢复到第一 NIC。 在2007年5月18日申请的序号为11/750,914且代理人案号为NVDA/P001882的题为"负 载平衡联网环境下的智能故障恢复"("Intelligent Failback In a Load-Balanced Networking Environment")的相关美国专利申请案中描述了关于LBFO模块126在故障 恢复期间的功能性的更多细节。此相关专利申请案以引用的方式并入本文中。
基于前面提及的对负载平衡和故障转移/故障恢复的论述,本发明可经配置以在四 种模式下操作,每个模式有效地解决不同操作环境的需要。在第一操作模式下,使用散 列引擎128来转移连接,以在不依赖于交换机的网络环境(即,将计算装置100的NIC 耦接到外部网络的交换机不在802.3ad模式下操作的网络环境)下执行负载平衡和故障 转移/故障恢复。在此实施例中,下文所描述的图3和图4的方法使用散列引擎128来 识别用于转移连接以分别接收业务和传输业务的NIC。而且,此识别可作为负载平衡的 一部分而执行,或作为将连接故障转移到可靠NIC的一部分而执行。重要的是,用于连 接的接收业务和传输业务可利用不同的NIC,除非所述连接被卸载,所述卸载会导致单 个NIC处理用于被卸载的连接的接收业务和传输业务,如下文更详细地描述。
在第二操作模式下,散列引擎128用于转移连接以在不依赖于交换机的网络环境下 对传输业务执行负载平衡,但不用于对接收业务执行负载平衡。重要的是,在此操作模 式下,散列引擎128不用于转移连接以执行故障转移或故障恢复。因此,散列引擎128 可为连接上的传输业务选择NIC,且可随后修改所述选择以对传输业务进行负载平衡, 但通过操作系统所选择的NIC来处理用于连接的接收业务。同样,用于连接的接收业务 和传输业务可利用不同的NIC,除非所述连接被卸载,所述卸载会导致由操作系统选择 的NIC处理用于被卸载的连接的接收业务和传输业务,如下文更详细地描述。
在第三操作模式下,散列引擎128用于转移连接以在不依赖于交换机的网络环境下 执行故障转移和故障恢复,但不执行负载平衡。由于在此实施例中,散列引擎128不转 移连接以执行负载平衡,所以由操作系统122选择用来在所述连接上传输业务和接收业 务的NIC被维持。另外,LBFO模块126可引导散列引擎128在NIC出现故障或变得不 可靠时对网络业务进行故障转移,并且引导散列引擎128在NIC回到完全起作用的状态 时对业务进行故障恢复。
在第四操作模式下,散列引擎128用于转移连接以在依赖于交换机的网络环境(即, 将计算装置100的NIC耦接到外部网络的交换机在802.3ad模式下操作的网络环境)下 执行传输业务而不是接收业务的负载平衡和故障转移/故障恢复。重要的是,在依赖于 交换机的网络环境下,交换机选择计算装置100中的哪一NIC接收用于连接的业务。因 此,散列引擎128不执行接收业务的负载平衡或故障转移/故障恢复,但散列引擎128 可对传输业务进行负载平衡,且LBFO模块126可引导散列引擎128对传输业务进行故 障转移/故障恢复。然而,同样,如果网络连接被卸载在由交换机选择用来接收用于连 接的业务的NIC上,那么散列引擎128选择同一 NIC来传输用于所述连接的业务,如 下文进一步详细描述。
图2绘示根据本发明一个实施例基于向散列函数提供的参数而从散列表中选择 MAC地址的方法步骤200的流程图。尽管参考计算装置IOO来描述所述方法,但所属 领域的技术人员将了解,经配置而以任何次序执行所述方法步骤的任何系统都在本发明 的范围内。
如图所示,从散列引擎128中的散列表中选择MAC地址的方法开始于步骤202, 其中所述散列表内的散列函数根据由所述散列函数接收到的参数来确定散列表索引。由 于用于创建和使用散列函数以基于向散列函数提供的参数来为所述散列表编索引的方 法是所属领域的技术人员众所周知的,所以本文将不再论述这些方法。应注意,传输散 列函数接收到的参数(其作用是为传输散列表138编索引)可能不同于接收散列函数接 收到的参数(其作用是为接收散列表140编索引)。在本发明的一个实施例中,接收散 列函数接收远程计算装置的IP地址,作为用于为接收散列表140编索引的参数。另外, 如果在联网环境下利用VLAN技术,那么传输散列函数接收远程计算装置的IP地址、 用于远程计算装置的TCP端口、用于计算装置IOO的TCP端口以及VLANID,作为用 于为传输散列表138编索引的参数。在本发明的其它实施例中,接收散列函数和传输散 列函数可分别接收任何技术上可行的用于为接收散列表140和传输散列表138编索引的 参数。
在步骤204中,散列引擎128读取对应于在步骤202中识别出的散列表索引的散列 表条目。在步骤206中,散列引擎128确定在步骤204中读取的散列表条目是否有效。 如果在步骤206中散列表条目有效,那么方法继续到步骤208,其中散列引擎128选择 存储在被索引的散列表条目中的MAC地址。在步骤216中,散列引擎128将所选的 MAC地址返回到LBFO模块126,且所述方法终止。
如果在步骤206中,在步骤204中读取的散列表条目无效,那么所述方法继续到步 骤210,其中散列引擎128识别适合传送网络业务的NIC。在一个实施例中,当NIC的 利用率(作为所述NIC的传输能力或接收能力的百分比)低于计算装置100中的其它 NIC的利用率时,认为所述NIC适合传送网络业务。在另一实施例中,当NIC的出错 率低于计算装置100中的其它NIC的出错率时,认为所述NIC适合传送网络业务。在 又一实施例中,NIC的利用率和出错率的经加权的组合(相对于计算装置100中的其它 NIC的利用率和出错率的经加权的组合)可用来确定NIC是否适合传送网络业务。在步 骤212中,散列引擎128选择在步骤210中识别的合适的NIC的MAC地址。在步骤214 中,散列引擎128将所选的MAC地址存储在对应于在步骤202中识别的散列表索引的 散列表条目中。
图3A和图3B说明根据本发明一个实施例的用于将连接转移到被散列引擎128选 择用来接收网络业务的NIC的方法步骤300的流程图。尽管参考计算装置100描述了所 述方法,但所属领域的技术人员将了解,经配置而以任何次序执行所述方法步骤的任何 系统都在本发明的范围内。
如图所示,所述用于转移连接的方法开始于步骤302,其中操作系统122收听来自 远程计算装置(未图示)的ARP请求包。当远程计算装置启动连接以将数据传输到计 算装置100时,远程计算装置通过向耦接到本地网络的计算装置发送包含计算装置100 的IP地址的ARP请求包,来请求计算装置100的MAC地址。计算装置100通过发送 包含计算装置100的MAC地址的ARP响应包来响应ARP请求包。在接收到ARP响应 包并对其进行解码之后,远程计算装置立即可使用从ARP响应包解码的MAC地址来向 本地计算装置100传输包。由于所述用于交换ARP请求包与ARP响应包的方法是所属 领域的技术人员众所周知的,所以本文将不会论述这些方法。在步骤304中,操作系统 122确定在步骤302中是否接收到ARP请求包。如果操作系统122发现没有接收到ARP 请求包,那么方法返回到步骤302,其中操作系统122继续收听ARP请求包。
然而,如果在步骤304中,操作系统122发现接收到了 ARP请求包,那么方法继 续到步骤306到310,其中操作系统122响应于接收到ARP请求包而产生ARP响应包。 在步骤306中,操作系统122识别将通过其而接收用于连接的业务的NIC。仅出于论述 的目的,假定操作系统122选择NIC IIO作为用于接收业务的NIC。在步骤308中,操 作系统122产生ARP响应包,其包含NIC 110的MAC地址。在步骤310中,操作系统 122向NIC 110发送ARP响应包。
在步骤312中,LBFO模块126截取从操作系统122发送到NIC 110的ARP响应包。 而且,LBFO模块126经配置以截取从操作系统122发送到由计算装置IOO中的操作系 统122选择的NIC的ARP响应包,且修改这些ARP响应包的MAC地址。如下文所陈 述,修改ARP响应包以反映由散列引擎128所选择的NIC的MAC地址允许LBFO模 块126 (而不是操作系统122)控制哪一NIC接收来自远程计算装置的包。因此,并入 至U ARP响应包中的由散列引擎128作出的智能NIC选择导致在由LBFO模块126选择 的NIC而不是在另一较不有利的NIC上接收对应的连接。
在步骤314中,LBFO模块126将截取的ARP响应包解码成多个组成部分,其中包 含ARP响应包送交到其的远程计算装置的IP地址。在步骤315中,LBFO模块126确 定与ARP响应包有关的连接是否存在且已经被卸载到驻存在接收NIC上的硬件卸载引 擎。如果LBFO模块126发现所述连接不存在,或所述连接存在但没有卸载到驻存在接
收NIC上的硬件卸载引擎,那么所述方法继续到步骤316,其中散列引擎128选择MAC 地址。此选择是基于LBFO模块126将远程计算装置的IP地址作为参数传递到散列引 擎128的,如先前上文在图2中所描述。
在步骤318中,LBFO模块126用选定的MAC地址来代替经解码的ARP响应包中 由操作系统122选择的MAC地址。在步骤320中,LBFO模块126对选定的MAC地址 和经解码的ARP响应包的其余组成部分进行编码,以形成ARP响应包。在步骤322中, LBFO模块将ARP响应包传输到远程计算装置,且所述方法终止。在一个实施例中,通 过对应于选定MAC地址的NIC来传输ARP响应包。
现返回到步骤315,如果LBFO模块126发现与被截取的ARP响应包有关的连接存 在且已经被卸载到驻存在接收NIC上的硬件卸载引擎,那么所述方法继续到步骤317。 在步骤317中,散列引擎128在继续进行到修改ARP响应包、对所述包进行编码且传 输所述包(如先前上文在步骤318到322中所描述)之前,选择接收NIC的MAC地址。
图4A和图4B绘示根据本发明一个实施例将连接转移到由散列引擎128选择用来 传输网络业务的NIC的方法步骤400的流程图。尽管参考计算装置IOO描述所述方法, 但所属领域的技术人员将了解,经配置以用任何次序执行所述方法步骤的任何系统都在 本发明的范围内。
如图所述,所述用于转移连接的方法开始于步骤402,其中操作系统122创建传输 包,其中包含由操作系统122选择的NIC的MAC地址。举例来说,应用程序可请求操 作系统122创建传输包,作为计算装置100与远程计算装置(未图示)之间正在进行的 通信的一部分。仅出于论述的目的,假定操作系统122选择NIC 110来将传输包发送到
远程计算装置。
在步骤404中,操作系统122将在步骤402中创建的传输包发送到NIC 110。在步 骤406中,LBFO模块126截取从操作系统122发送到NIC 110的传输包。如本文先前 所论述,LBFO模块126经配置以截取从操作系统122发送到由计算装置100中的操作 系统122选择的NIC的传输包,且修改被截取的传输包的MAC地址。同样,修改传输 包以反映由散列引擎128选择的NIC的MAC地址允许LBFO模块126 (而不是操作系 统122)控制哪一NIC发送来自远程计算装置的传输包。因此,由散列引擎128进行的 智能NIC选择导致在由LBFO模块126选择的NIC上而不是在另一较不有利的NIC上 传输包。
在步骤408中,LBFO模块126对来自步骤406的传输包进行解码,以识别传输包 的一个或一个以上TCP/IP参数。在步骤410中,LBFO模块126确定对应于所述传输
包的连接是否已经卸载到驻存在接收NIC上的硬件卸载引擎。同样,如果连接已经被卸 载到驻存在接收NIC上的硬件卸载引擎,那么用于所述连接的包有利地从驻存在接收 NIC上的硬件卸载引擎而不是从不同NIC上的软件传输。因此,如果对应于传输包的连 接已经被卸载到驻存在接收NIC上的硬件卸载引擎,那么在步骤412中,散列引擎128 选择接收NIC的MAC地址作为传输MAC地址。
在步骤416中,LBFO模块126用传输MAC地址来代替经解码的源MAC地址,以 形成经修改的经解码包。在步骤418中,LBFO模块126将经修改的经解码包编码成传 输包。在步骤420中,LBFO模块126通过对应于传输MAC地址的NIC将传输包传送 到远程计算装置。
现返回到步骤410,如果对应于传输包的连接尚未被卸载到驻存在接收NIC上的硬 件卸载引擎,那么方法继续到步骤414。在步骤414中,散列引擎128使用在步骤408 中从传输包解码的TCP/IP参数来从传输散列表138中选择传输MAC地址,如上文在图 2中所述。所述方法接着继续进行到步骤416到420,如上文所述。
图5说明根据本发明一个实施例的用于将现存连接卸载到由散列引擎128选择的 NIC的方法步骤500的流程图。尽管参考计算装置100来描述所述方法,但所属领域的 技术人员将了解,经配置以用任何次序执行所述方法步骤的任何系统都在本发明的范围 内。
如图所示,所述用于卸载现存连接的方法开始于步骤502,其中软件驱动器124启 动卸载现存连接的操作。软件驱动器124可在操作系统122的请求下或基于由软件驱动 器124执行的某些处理操作而启动卸载操作。软件驱动器124可(例如)确定现存连接 是将由硬件卸载引擎来较好处理的高业务量连接。
在步骤504中,LBFO模块126询问散列引擎128以选择新的NIC来接收与所述连 接相关联的网络业务。在步骤506中,散列引擎128使用接收散列表140来确定应选择 计算装置100内的哪一NIC和硬件卸载引擎来接收与所述连接相关联的网络业务。选定 的NIC和硬件卸载引擎可(例如)正运载最小平均负载、具有最小数目的被卸载连接, 或可连接到最可靠的物理链路。在步骤508中,LBFO模块126将接收NIC卸载到选定 NIC和硬件卸载引擎。
图6说明根据本发明一个实施例的用于使用虚拟因特网协议地址来执行地址解析协 议(ARP)请求的方法步骤600的流程图。尽管参考计算装置IOO来描述所述方法,但 所属领域的技术人员将了解,经配置以用任何次序执行所述方法步骤的任何系统都在本 发明的范围内。
如图所示,所述用于执行地址解析协议请求的方法开始于步骤602,其中操作系统 122创建ARP请求包,其包含由操作系统122选择用来接收与被建立的连接和计算装置 100的IP地址相关联的网络业务的NIC的MAC地址。可手动地或通过自动化的技术(例 如工业标准动态主机配置协议(DHCP))将IP地址指配给计算装置100。 MAC地址可 对应于由操作系统122认出的默认或首要NIC。在步骤604中,操作系统122将ARP 请求包发送到选定NIC。
在步骤606中,LBFO模块126在ARP请求包被提供给选定NIC以供传输之前截 取所述ARP请求。在步骤608中,LBFO模块126用由LBFO模块126选择的虚拟IP 地址来代替计算装置100的IP地址,从而产生经修改的ARP请求包。所述虚拟IP地址 应为网络内未经映射的IP地址。举例来说,在具有在从10丄1.0到10丄1.255的范围内 的IP地址的网络中, 一个IP地址(例如10丄1.254)可被网络管理员保留作为虚拟IP 地址。在此实例中,接收ARP请求包的装置可用新的MAC地址来更新用于虚拟IP地 址的本地ARP高速缓冲存储器条目,从而避免破坏用于计算装置100的IP地址的高速 缓冲存储器条目。可通过任何技术上可行的构件(包含手动配置)来建立虚拟IP地址 以供LBFO模块126使用。在步骤610中,LBFO模块126通过选定NIC将经修改的 ARP请求包广播给与计算装置100附接到同一个网络的一个或一个以上远程计算装置。
图6的方法允许LBFO模块126在不涉及操作系统122的情况下管理多个NIC上的 ARP请求过程。另外,所述方法可用于避免破坏由接收经修改的ARP请求包的远程计 算装置维持的ARP高速缓冲存储器。
所揭示的系统和方法的一个优势是它们允许使用散列引擎来在计算装置中的多个 NIC上智能地转移网络连接。可使用连接转移来执行负载平衡、故障转移或故障恢复功 能。以此方式,可能更容易避免通过过载或不可靠的NIC来运行网络连接,从而改进总 体网络性能。另一优势是使用散列引擎来管理连接对于相应NIC的连接指配允许有效地 确定哪一 NIC正处理每个连接,同时避免管理连接状态的复杂且计算上昂贵的过程。
虽然前述内容是针对本发明的实施例,但可在不脱离本发明的基本范围的情况下, 设计本发明的其它和进一步实施例。举例来说,可在硬件或软件中或在硬件与软件的组 合中实施本发明的方面。本发明的一个实施例可实施为用于与计算机系统一起使用的程 序产品。所述程序产品的程序定义所述实施例(包含本文所述的方法)的功能,且可包 含在多种计算机可读存储媒体上。说明性计算机可读存储媒体包含(但不限于)(i) 上面可永久存储有信息的非可写存储媒体(例如,计算机内的只读存储器装置,例如可
由CD-ROM驱动器读取的CD-ROM盘、快闪存储器、ROM芯片或任何类型的固态非 易失性半导体存储器);和(ii)上面存储有可更改的信息的可写存储媒体(例如,磁盘 驱动器内的软盘,或硬盘驱动器,或任何类型的固态随机存取半导体存储器)。此类计 算机可读存储媒体在运载指导本发明的功能的计算机可读指令时是本发明的实施例。因 此,本发明的范围由所附权利要求书来确定。
权利要求
1.一种用于智能地将网络连接转移到网络接口卡(NIC)以用于传输网络业务的方法,所述方法包括截取操作系统所产生的传输包,其中所述传输包包含与第一NIC相关联的第一媒体接入控制(MAC)地址,所述第一NIC已被所述操作系统选择用来传输与所述网络连接有关的网络业务;对所述传输包进行解码;通过向散列函数提供所述经解码的传输包中所包含的一个或一个以上网络参数来产生与第二NIC相关联的第二MAC地址;以及用所述第二MAC地址来代替所述传输包中的所述第一MAC地址。
2. 根据权利要求1所述的方法,其进一步包括以下步骤对包含所述第二MAC地址 的所述传输包进行编码,以及将所述经编码的传输包传输到远程计算装置。
3. 根据权利要求2所述的方法,其中所述第二 NIC而不是所述第一 NIC传输与所述 网络连接有关的网络业务。
4. 一种计算机可读媒体,其所包含的指令在被执行时使处理器通过执行以下步骤来智 能地将网络连接转移到网络接口卡(NIC)以用于传输网络业务截取操作系统所产生的传输包,其中所述传输包包含与第一 NIC相关联的第一 媒体接入控制(MAC)地址,所述第一 NIC己被所述操作系统选择用来传输与所 述网络连接有关的网络业务;对所述传输包进行解码;通过向散列函数提供所述经解码的传输包中所包含的一个或一个以上网络参数 来产生与第二NIC相关联的第二MAC地址;以及用所述第二 MAC地址来代替所述传输包中的所述第一 MAC地址。
5. 根据权利要求4所述的计算机可读媒体,其进一步包括以下步骤对包含所述第二 MAC地址的所述传输包进行编码,以及将所述经编码的传输包传输到远程计算装置。
6. —种计算装置,其经配置以智能地将网络连接转移到网络接口卡(NIC)以用于接 收网络业务,所述计算装置包括处理器;操作系统,其经配置以响应于接收到ARP请求包而产生传输包,其中所述传输 包包含与已被所述操作系统选择用来传输与所述网络连接有关的网络业务的第一 NIC相关联的第一媒体接入控制(MAC)地址;以及 负载平衡故障转移(LBFO)模块,其经配置以 截取所述操作系统所产生的所述传输包; 对所述传输包进行解码;通过向散列函数提供所述经解码的传输包中所包含的一个或一个以上网络参 数来产生与第二NIC相关联的第二MAC地址;以及用所述第二 MAC地址来代替所述传输包中的所述第一 MAC地址。
7. 根据权利要求6所述的计算装置,其中所述LBFO模块进--步经配置以对包含所述 第二 MAC地址的所述传输包进行编码,并将所述经编码的传输包传输到远程计算 装置。
8. 根据权利要求7所述的计算装置,其中所述被提供到所述散列函数的一个或一个以 上网络参数包含所述远程计算装置的因特网协议(IP)地址、所述远程计算装置的 传输控制协议(TCP)端口、以及传输计算装置的TCP端口。
9. 根据权利要求8所述的计算装置,其中所述被提供到所述散列函数的一个或一个以 上网络参数还包含虚拟局域网识别符。
10. 根据权利要求6所述的计算装置,其中所述LBFO模块包含散列引擎,所述散列引 擎经配置以基于由所述LBFO模块提供的所述一个或一个以上网络参数来确定散 列表索引,以及读取对应于所述散列表索引的散列表条目。
全文摘要
一种位于网络装置驱动器中的散列引擎保存关于本地计算装置内每个网络接口卡(“NIC”)的利用率和出错率的数据。根据此数据,所述散列引擎基于从软件驱动器程序提供的各种联网参数而智能地选择传输NIC和接收NIC。从本地计算装置中的操作系统发送到远程计算装置的传输包被截取、修改并重新引导到由所述散列引擎选择的传输NIC,以用于传输到远程计算装置。类似地,由所述操作系统响应于ARP请求包而发送的地址解析协议(“ARP”)响应包被截取、修改并重新引导到由所述散列引擎选择的接收NIC,以用于传输。通过以此方式选择接收NIC和传输NIC,所述散列引擎能够智能地对所述本地计算装置中的传输和接收业务进行负载平衡,从而相对于现有技术来改进总体网络性能。
文档编号H04L29/08GK101350818SQ20081009889
公开日2009年1月21日 申请日期2008年5月19日 优先权日2007年5月18日
发明者萨米尔·南达, 诺曼·K·陈, 赫马马利尼·马尼克瓦萨甘, 阿亚兹·阿卜杜拉, 阿南德·拉贾戈帕兰, 阿舒托什·K·杰哈 申请人:辉达公司