网络业务的智能负载平衡和故障转移的制作方法

文档序号:7691796阅读:162来源:国知局
专利名称:网络业务的智能负载平衡和故障转移的制作方法
技术领域
本发明的实施例大体上涉及网络通信,且更具体地说,涉及一种用于使用散列引擎 来对网络业务进行智能负载平衡和故障转移的系统和方法。
背景技术
性能和可靠性是对现代计算机网络的关键要求。当新的网络连接在包含多个网络接 口卡("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发送到远程计算装置。5图1A到图1C说明可实施本发明的一个或一个以上方面的计算装置100。计算装置 100可以是桌上型计算机、服务器、膝上型计算机、掌上型计算机、个人数字助理、平 板电脑、游戏控制台、蜂窝式电话或处理信息的任何其它类型的类似装置。如图所示, 计算装置100包含主存储器102、存储器控制器104、微处理器106、 I/O控制器108和 NIC 110、 116。 NIC 110包含硬件卸载引擎("HOE") 112,且NIC 116包含HOE 118。 HOE 112和118包含经配置以用于处理与计算装置100与已经被选择性地卸载到NIC 110、 116的一个或一个以上远程网络计算装置(未图示)之间的网络连接相关联的网络 帧的逻辑。与常规做法一样,通过用HOE 112和U8来处理网络帧(有时被称为"在硬 件中处理连接"),而不是在主机软件传输控制协议和因特网协议("TCP/IP")堆栈中执 行那些处理功能(有时被称为"在软件中处理连接"),可实质上减少NIC 110、 116与微 处理器106之间的通信以及由微处理器106执行的计算。存储器控制器104耦合到主存储器102,且耦合到微处理器106,且I/O控制器108 耦合到微处理器106和NIC 110、 116。在本发明的一个实施例中,微处理器106通过将 命令或数据写入到I/0控制器108中来向NIC110、 116传输命令或数据。 一旦此类命令 或数据被写入到I/O控制器108中,I/O控制器108就视情况将所述命令或数据翻译成目 标NIC可理解的格式,并将所述命令或数据传送到所述目标NIC。类似地,NIC 110, 116 通过将命令或数据写入到I/O控制器108中来向微处理器106传输命令或数据,且I/O控 制器108视情况将所述命令或数据翻译成微处理器106可理解的格式,并将所述命令或 数据传送到微处理器106。前面提及的耦合可实施为存储器总线或I/0总线,例如PCFM 总线或其任一组合,或否则可以任何其它技术上可行的方式来实施。如图1B中更详细展示,主存储器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。传输 散列表13—8的目的是基于由LBFO模块126向传输散列表138提供的数据,在计算装置 100内选择用于传输与网络连接有关的包的起作用的NIC。传输散列表138包含多个散列表条目(例如,散列表条目134)和软件散列函数(未图示)。另外,每个散列表条目包 含表索引(例如,表索引132)和表值(例如,表值136)。 LBFO模块126引导散列引 擎128通过将TCP/IP连接数据传送到散列引擎128来在计算装置100内选择传输NIC, 所述散列引擎128将TCP/IP连接数据传送到传输散列表138中的软件散列函数。作为响 应,软件散列函数基于所述TCP/IP连接数据而在传输散列表138内选择表索引。从此选 定的表索引中,传输散列表138识别对应的表值,且散列引擎128将识别出的表值传送 回到LBFO模±央126。如果对应的表值是无效的,那么散列引擎128基于计算装置100 中的所有NIC的NIC利用率和NIC出错率数据的经加权的组合(如由LBFO模块126 保存),而为连接选择NIC,且散列引擎128将选定NIC的MAC地址存储在对应于当前 表索引的表值中。由于软件散列函数的设计和操作是所属领域的技术人员众所周知的, 所以本文将不会论述这些问题。在一个实施例中,LBFO模块126将以下四个TCP/IP数 据传送到散列引擎128:客户机因特网协议("IP")地址、服务器IP端口、客户机IP端 口和虚拟局域网识别符("VLANID")。在其它实施例中,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用于转移连接以在不依赖于交换机的网络环境下 对传输业务执行负载平衡,但不用于对接收业务执行负载平衡。重要的是,在此操作模 式下,散歹pl擎128不用于转移连接以执行故障转移或故障恢复。因此,散列引擎128 可为连接上的传输业务选择NIC,且可随后修改所述选择以对传输业务进行负载平衡, 但通过操作系统所选择的NIC来处理用于连接的接收业务。同样,用于连接的接收业务 和传输业务可利用不同的NIC,除非所述连接被卸载,所述卸载会导致由操作系统选择 的NIC处理用于被卸载的连接的接收业务和传输业务,如下文更详细地描述。在第三操作模式下,散列引擎128用于转移连接以在不依赖于交换机的网络环境下 执行故障转移和故障恢复,但不执行负载平衡。由于在此实施例中,散列引擎128不转 移连接以执行负载平衡,所以由操作系统122选择用来在所述连接上传输业务和接收业 务的NIC被维持。另外,LBFO模块126可引导散列引擎128在NIC出现故障或变得不 可靠时对网络业务进行故障转移,并且引导散列引擎128在NIC回到完全起作用的状态 时对业务进行故障恢复。在第四操作模式下,散列引擎128用于转移连接以在依赖于交换机的网络环境(即, 将计算装置100的NIC耦合到外部网络的交换机在802.3ad模式下操作的网络环境)下 执行传输业务而不是接收业务的负载平衡和故障转移/故障恢复。重要的是,在依赖于交 换机的网络环境下,交换机选择计算装置IOO中的哪一NIC接收用于连接的业务。因此, 散列引擎128不执行接收业务的负载平衡或故障转移/故障恢复,但散列引擎128可对传 输业务进行负载平衡,且LBFO模块126可引导散列引擎128对传输业务进行故障转移/ 故障恢复。然而,同样,如果网络连接被卸载在被交换机选择用来接收用于连接的业务 的NIC上,那么散列引擎128选择同一NIC来传输用于所述连接的业务,如下文进一步 详细描述。图2说明根据本发明一个实施例的用于基于向散列函数提供的参数而从散列表中选择MAC地址的方法步骤200的流程图。尽管参考计算装置100来描述所述方法,但所属 领域的技术人员将了解,经配置而以任何次序执行所述方法步骤的任何系统都在本发明 的范围内。如图所示,用于从散列引擎128中的散列表中选择MAC地址的方法开始于步骤202, 其中所述散列表内的散列函数根据由所述散列函数接收到的参数来确定散列表索引。由 于用于创建和使用散列函数以基于向散列函数提供的参数来为所述散列表编索引的方法 是所属领域的技术人员众所周知的,所以本文将不会论述这些方法。应注意,传输散列 函数接收到的参数(其作用是为传输散列表138编索引)可能不同于接收散列函数接收 到的参数(其作用是为接收散列表140编索引)。在本发明的一个实施例中,接收散列函 数接收远程计算装置的IP地址,作为用于为接收散列表140编索引的参数。另外,如果 在联网环境下利用VLAN技术,那么传输散列函数接收远程计算装置的IP地址,用于远 程计算装置的TCP端口、用于计算装置IOO的TCP端口以及VLAN ID,作为用于为传 输散列表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的传输能力或接收能力的百分比)低于计算装置IOO中的其它NIC 的利用率时,认为所述NIC适合传送网络业务。在另一实施例中,当NIC的出错率低于 计算装置IOO中的其它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 IIO的ARP响应包。 而且,LBFO模块126经配置以截取从操作系统122发送到由计算装置100中的操作系 统122选择的NIC的ARP响应包,且修改这些ARP响应包的MAC地址。如下文所陈 述,修改ARP响应包以反映由散列引擎128选择的NIC的MAC地址允许LBFO模块126 (而不是操作系统122)控制哪一 NIC接收来自远程计算装置的包。因此,并入到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创建传输包,作为计算装置IOO与远程计算装置(未图示)之间正在进行的通 信的一部分。仅出于论述的目的,假定操作系统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的流程图。尽管参考计算装置IOO来描述所述方法,但所属领域的 技术人员将了解,经配置以用任何次序执行所述方法步骤的任何系统都在本发明的范围 内。如图所示,所述用于卸载现存连接的方法开始于步骤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的流程图。尽管参考计算装置100来描述所述方法,但 所属领域的技术人员将了解,经配置以用任何次序执行所述方法步骤的任何系统都在本发明的范围内。如图所示,所述用于执行地址解析协议请求的方法开始于步骤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地址。举例来说,在具有在从IO丄I.O到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. 一种用于建立避免地址解析协议(ARP)高速缓冲存储器破坏的网络连接的方法,所述方法包括截取正被传输到第一网络接口卡(NIC)的ARP请求包,其中所述ARP请求包包含第一媒体接入控制(MAC)地址和第一因特网协议(IP)地址;用虚拟IP地址代替所述第一IP地址,以产生经修改的ARP请求包;以及将所述经修改的ARP请求包广播给一个或一个以上远程计算装置。
2. 根据权利要求1所述的方法,其进一步包括创建所述ARP请求包和将所述ARP请 求包传输到所述第一NIC的步骤。
3. 根据权利要求'2所述的方法,其中主机操作系统创建所述ARP请求包并传输所述 ARP请求包。
4. 根据权利要求l所述的方法,其中网络驱动器内的负载平衡故障转移模块截取所述 ARP请求包,并用所述虚拟IP地址来代替所述第一IP地址。
5. 根据权利要求1所述的方法,其中所述第一 IP地址包括主机计算装置的IP地址。
6. 根据权利要求5所述的方法,其中所述虚拟IP地址包括包含所述主机计算装置的网 络中的未经映射的IP地址。
7. 根据权利要求1所述的方法,其中所述第一 MAC地址包括由主机操作系统选择用 来接收与所述网络连接相关联的网络业务的NIC的MAC地址。
8. —种包含指令.的计算机可读媒体,所述指令在由处理器执行时致使所述处理器通过 执行以下步骤来建立避免地址解析协议(ARP)高速缓冲存储器破坏的网络连接截取正被传输到第一网络接口卡(NIC)的ARP请求包,其中所述ARP请求包 包含第一媒体接入控制(MAC)地址和第一因特网协议(IP)地址用虛拟IP地址代替所述第一IP地址,以产生经修改的ARP请求包;以及 将所述经修改的ARP请求包广播给一个或一个以上远程计算装置。
9. 根据权利要求8所述的计算机可读媒体,其中所述计算机可读媒体包括网络驱动器 内的负载平衡故障转移模块。
10. 根据权利要求8所述的计算机可读媒体,其中所述第一 IP地址包括主机计算装置的 IP地址。
11. 根据权利要求IO所述的计算机可读媒体,其中所述虚拟IP地址包括包含所述主机计算装置的网络中的未经映射的IP地址。
12. 根据权利要求8所述的计算机可读媒体,其中所述第一MAC地址包括由主机操作 系统选择用来接收与所述网络连接相关联的网络业务的NIC的MAC地址。
13. —种用来将网络连接卸载到硬件卸载引擎的方法,所述方法包括-启动卸载所述网络连接的操作;询问散列引擎以选捧网络接口卡(NIC)来接收与所述网络连接相关联的网络业 务;选择所述接收NIC;以及将所述网络连接转移到驻存在所述接收NIC上的硬件卸载引擎。
14. 根据权利要求13所述的方法,其中所述硬件卸载引擎经配置以。
15. 根据权利要求13所述的方法,其中网络驱动器内的负载平衡故障转移模块询问所 述散列引擎并转移所述网络连接。
16. 根据权利要求13所述的方法,其中所述转移步骤包含设置包含在所述硬件卸载引擎中的受托连接表中的条目,其中所述条目包含所述 网络连接的连接状态;'以及设置包含在主机软件模块中的连接表中的对应于所述网络连接的硬件识别符,其 中所述设置的硬件识别符指示所述网络连接正通过所述硬件卸载引擎而运行。
全文摘要
本发明大体上涉及网络通信中的网络业务的智能负载平衡和故障转移,且更具体地说,涉及一种用于使用散列引擎来对网络业务进行智能负载平衡和故障转移的系统和方法。本发明的已实施例包括一种位于网络装置驱动器中的散列引擎,其保存关于本地计算装置内的每个网络接口卡(“NIC”)的利用率和出错率的数据。从本地计算装置中的操作系统发送到远程计算装置的传输包被截取、修改并重新引导到由所述散列引擎选择的传输NIC,以用于传输到远程计算装置。通过以此方式选择接收NIC和传输NIC,所述散列引擎能够智能地对所述本地计算装置中的传输和接收业务进行负载平衡,从而相对于现有技术来改进总体网络性能。
文档编号H04L29/06GK101394400SQ20081009477
公开日2009年3月25日 申请日期2008年5月16日 优先权日2007年5月18日
发明者萨米尔·南达, 诺曼·K·陈, 赫马马利尼·马尼克瓦萨甘, 阿亚兹·阿卜杜拉, 阿南德·拉贾戈帕兰, 阿舒托什·K·杰哈 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1