CN101350818B - 网络业务的智能负载平衡和故障转移 - Google Patents

网络业务的智能负载平衡和故障转移 Download PDF

Info

Publication number
CN101350818B
CN101350818B CN2008100988970A CN200810098897A CN101350818B CN 101350818 B CN101350818 B CN 101350818B CN 2008100988970 A CN2008100988970 A CN 2008100988970A CN 200810098897 A CN200810098897 A CN 200810098897A CN 101350818 B CN101350818 B CN 101350818B
Authority
CN
China
Prior art keywords
nic
hash
network
calculation element
engine
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
CN2008100988970A
Other languages
English (en)
Other versions
CN101350818A (zh
Inventor
阿亚兹·阿卜杜拉
诺曼·K·陈
阿南德·拉贾戈帕兰
阿舒托什·K·杰哈
赫马马利尼·马尼克瓦萨甘
萨米尔·南达
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of CN101350818A publication Critical patent/CN101350818A/zh
Application granted granted Critical
Publication of CN101350818B publication Critical patent/CN101350818B/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/122Avoiding congestion; Recovering from congestion by diverting traffic away from congested entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • H04L45/245Link aggregation, e.g. trunking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/28Routing or path finding of packets in data switching networks using route fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/10Mapping addresses of different types
    • H04L61/103Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2596Translation of addresses of the same type other than IP, e.g. translation from MAC to MAC addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/618Details of network addresses
    • H04L2101/622Layer-2 addresses, e.g. medium access control [MAC] addresses

Abstract

一种位于网络装置驱动器中的散列引擎保存关于本地计算装置内每个网络接口卡(“NIC”)的利用率和出错率的数据。根据此数据,所述散列引擎基于从软件驱动器程序提供的各种联网参数而智能地选择传输NIC和接收NIC。从本地计算装置中的操作系统发送到远程计算装置的传输包被截取、修改并重新引导到由所述散列引擎选择的传输NIC,以用于传输到远程计算装置。类似地,由所述操作系统响应于ARP请求包而发送的地址解析协议(“ARP”)响应包被截取、修改并重新引导到由所述散列引擎选择的接收NIC,以用于传输。通过以此方式选择接收NIC和传输NIC,所述散列引擎能够智能地对所述本地计算装置中的传输和接收业务进行负载平衡,从而相对于现有技术来改进总体网络性能。

Description

网络业务的智能负载平衡和故障转移
技术领域
本发明的实施例大体上涉及网络通信,且更具体地说,涉及一种用于使用散列引擎来对网络业务进行智能负载平衡和故障转移的系统和方法。
背景技术
性能和可靠性是对现代计算机网络的关键要求。当新的网络连接在包含多个网络接口卡(“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。计算装置100可以是桌上型计算机、服务器、膝上型计算机、掌上型计算机、个人数字助理、平板电脑、游戏控制台、蜂窝式电话或处理信息的任何其它类型的类似装置。如图所示,计算装置100包含主存储器102、存储器控制器104、微处理器106、I/O控制器108和NIC 110、116。NIC 110包含硬件卸载引擎(“HOE”)112,且NIC 116包含HOE 118。HOE 112和118包含经配置以用于处理与计算装置100与已经被选择性地卸载到NIC110、116的一个或一个以上远程网络计算装置(未图示)之间的网络连接相关联的网络帧的逻辑。与常规做法一样,通过用HOE 112和118来处理网络帧(有时被称为“在硬件中处理连接”),而不是在主机软件传输控制协议和因特网协议(“TCP/IP”)堆栈中执行那些处理功能(有时被称为“在软件中处理连接”),可实质上减少NIC 110、116与微处理器106之间的通信以及由微处理器106执行的计算。
存储器控制器104耦接到主存储器102,且耦接到微处理器106,且I/O控制器108耦接到微处理器106和NIC 110、116。在本发明的一个实施例中,微处理器106通过将命令或数据写入到I/O控制器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总线或其任一组合,或否则可以任何其它技术上可行的方式来实施。
如图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。传输散列表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内选择表索引。从此选定的表索引中,传输散列表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-B alanced 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-BalancedNetworking Environment”)的相关美国专利申请案中描述了关于LBFO模块126在故障恢复期间的功能性的更多细节。此相关专利申请案以引用的方式并入本文中。
基于前面提及的对负载平衡和故障转移/故障恢复的论述,本发明可经配置以在四种模式下操作,每个模式有效地解决不同操作环境的需要。在第一操作模式下,使用散列引擎128来转移连接,以在不依赖于交换机的网络环境(即,将计算装置100的NIC耦接到外部网络的交换机不在802.3ad模式下操作的网络环境)下执行负载平衡和故障转移/故障恢复。在此实施例中,下文所描述的图3和图4的方法使用散列引擎128来识别用于转移连接以分别接收业务和传输业务的N1C。而且,此识别可作为负载平衡的一部分而执行,或作为将连接故障转移到可靠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的流程图。尽管参考计算装置100来描述所述方法,但所属领域的技术人员将了解,经配置而以任何次序执行所述方法步骤的任何系统都在本发明的范围内。
如图所示,从散列引擎128中的散列表中选择MAC地址的方法开始于步骤202,其中所述散列表内的散列函数根据由所述散列函数接收到的参数来确定散列表索引。由于用于创建和使用散列函数以基于向散列函数提供的参数来为所述散列表编索引的方法是所属领域的技术人员众所周知的,所以本文将不再论述这些方法。应注意,传输散列函数接收到的参数(其作用是为传输散列表138编索引)可能不同于接收散列函数接收到的参数(其作用是为接收散列表140编索引)。在本发明的一个实施例中,接收散列函数接收远程计算装置的IP地址,作为用于为接收散列表140编索引的参数。另外,如果在联网环境下利用VLAN技术,那么传输散列函数接收远程计算装置的IP地址、用于远程计算装置的TCP端口、用于计算装置100的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的传输能力或接收能力的百分比)低于计算装置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 110作为用于接收业务的NIC。在步骤308中,操作系统122产生ARP响应包,其包含NIC 110的MAC地址。在步骤310中,操作系统122向NIC 110发送ARP响应包。
在步骤312中,LBFO模块126截取从操作系统122发送到NIC 110的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的流程图。尽管参考计算装置100描述所述方法,但所属领域的技术人员将了解,经配置以用任何次序执行所述方法步骤的任何系统都在本发明的范围内。
如图所述,所述用于转移连接的方法开始于步骤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的流程图。尽管参考计算装置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地址。举例来说,在具有在从10.1.1.0到10.1.1.255的范围内的IP地址的网络中,一个IP地址(例如10.1.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)上面存储有可更改的信息的可写存储媒体(例如,磁盘驱动器内的软盘,或硬盘驱动器,或任何类型的固态随机存取半导体存储器)。此类计算机可读存储媒体在运载指导本发明的功能的计算机可读指令时是本发明的实施例。因此,本发明的范围由所附权利要求书来确定。

Claims (6)

1.一种用于智能地将网络连接转移到驻存在计算装置中的网络接口卡以用于传输网络业务的方法,所述方法包括:
通过负载平衡故障转移模块,保持所述计算装置中的所有网络接口卡的网络接口卡利用率和网络接口卡出错率数据,其中,所述负载平衡故障转移模块配置在软件驱动器中,所述软件驱动器配置在所述计算装置的主存储器中;
通过配置在所述负载平衡故障转移模块中的散列引擎,确定应将网络连接从驻存在所述计算装置中的第一网络接口卡转移到驻存在所述计算装置中的第二网络接口卡;
通过所述散列引擎,无效包括对应于所述第一网络接口卡的第一媒体接入控制地址的散列表中的第一条目,其中控制所述计算装置的操作系统初始地选择所述第一网络接口卡用以接收与所述网络连接相关的网络业务;
通过所述负载平衡故障转移模块,截取所述操作系统所产生的传输包,其中所述传输包包含所述第一媒体接入控制地址;
通过所述负载平衡故障转移模块,对所述传输包进行解码,用以通过将经解码的所述传输包包含的一个或多个网络参数提供给散列函数来确定对应于所述散列表中的所述第一条目的散列表索引;
通过所述散列引擎,确定所述散列表中的所述第一条目是无效的;
通过所述散列引擎,基于所述计算装置中的所有网络接口卡的网络接口卡利用率和网络接口卡出错率数据的经加权的组合,选择对应于驻存在所述计算装置中的所述第二网络接口卡的第二媒体接入控制地址;以及
通过所述负载平衡故障转移模块,用所述第二媒体接入控制地址来代替所述传输包中的所述第一媒体接入控制地址。
2.根据权利要求1所述的方法,其进一步包括以下步骤:通过所述负载平衡故障转移模块,对包含所述第二媒体接入控制地址的所述传输包进行编码,以及将所述经编码的传输包传输到远程计算装置。
3.根据权利要求1所述的方法,其中所述第二媒体接入控制地址被通过所述散列引擎存储到所述散列表中的所述第一条目中用以传输所述网络连接到所述第二网络接口卡。
4.根据权利要求2所述的方法,其中所述被提供到所述散列函数的一个或多个网络参数包含所述远程计算装置的因特网协议地址、所述远程计算装置的传输控制协议端口、以及所述计算装置的传输控制协议端口。
5.根据权利要求4所述的方法,其中所述被提供到所述散列函数的一个或多个网络参数还包含虚拟局域网识别符。
6.根据权利要求1所述的方法,其进一步包括以下步骤:通过所述散列引擎,基于由所述负载平衡故障转移模块提供的所述一个或多个网络参数来确定散列表索引,以及读取对应于所述散列表索引的散列表条目。
CN2008100988970A 2007-05-18 2008-05-19 网络业务的智能负载平衡和故障转移 Expired - Fee Related CN101350818B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/750,984 2007-05-18
US11/750,984 US7792018B2 (en) 2007-05-18 2007-05-18 Intelligent load balancing and failover of network traffic

Publications (2)

Publication Number Publication Date
CN101350818A CN101350818A (zh) 2009-01-21
CN101350818B true CN101350818B (zh) 2012-12-26

Family

ID=40027354

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100988970A Expired - Fee Related CN101350818B (zh) 2007-05-18 2008-05-19 网络业务的智能负载平衡和故障转移

Country Status (5)

Country Link
US (1) US7792018B2 (zh)
JP (1) JP4840943B2 (zh)
KR (1) KR100978681B1 (zh)
CN (1) CN101350818B (zh)
TW (1) TWI479841B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8284782B1 (en) * 2005-11-15 2012-10-09 Nvidia Corporation System and method for avoiding ARP cache pollution
US8284783B1 (en) * 2005-11-15 2012-10-09 Nvidia Corporation System and method for avoiding neighbor cache pollution
US7995465B2 (en) * 2007-05-18 2011-08-09 Nvidia Corporation Intelligent load balancing and failover of network traffic
US9430297B2 (en) * 2008-12-15 2016-08-30 International Business Machines Corporation Load balancing of adapters on a multi-adapter node
JP5060572B2 (ja) * 2010-03-09 2012-10-31 株式会社東芝 データ通信装置及び方法
US9300491B2 (en) * 2011-02-11 2016-03-29 Qualcomm Incorporated Frame delivery path selection in hybrid communication networks
US8897169B2 (en) 2011-03-02 2014-11-25 Qualcomm Incorporated Discovery of conventional devices and bridges in hybrid communication networks
US9025603B2 (en) * 2011-03-08 2015-05-05 Qualcomm Incorporated Addressing scheme for hybrid communication networks
US8730811B2 (en) * 2011-04-07 2014-05-20 Hewlett-Packard Development Company, L.P. Managing network traffic
TW201328270A (zh) * 2011-12-22 2013-07-01 East Moon Creation Technology Corp 多伺服器系統負荷平衡機制
JP2013206295A (ja) * 2012-03-29 2013-10-07 Nec Corp サーバ管理システム、ブレードサーバシステム、サーバ管理方法及びサーバ管理プログラム
KR101402590B1 (ko) 2012-10-26 2014-06-03 주식회사 아이디스 영상 감시 장치 접속 관리 시스템의 부하 분산 장치 및 방법
US9170976B2 (en) 2013-01-03 2015-10-27 International Business Machines Corporation Network efficiency and power savings
TWI557574B (zh) * 2015-08-06 2016-11-11 Chunghwa Telecom Co Ltd Heterogeneous Terminal Data Storage and Application Layer Dynamic Traffic Assignment System
US11636059B2 (en) 2020-03-31 2023-04-25 Samsung Electronics Co., Ltd. Scaling performance in a storage server with storage devices

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779039B1 (en) * 2000-03-31 2004-08-17 Avaya Technology Corp. System and method for routing message traffic using a cluster of routers sharing a single logical IP address distinct from unique IP addresses of the routers

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0660569A1 (en) * 1993-12-22 1995-06-28 International Business Machines Corporation Method and system for improving the processing time of the path selection in a high speed packet switching network
JPH0816422A (ja) * 1994-07-04 1996-01-19 Fujitsu Ltd バス通信方法及びバス通信システム
US5724510A (en) * 1996-09-06 1998-03-03 Fluke Corporation Method of configuring a valid IP address and detecting duplicate IP addresses in a local area network
US5864535A (en) * 1996-09-18 1999-01-26 International Business Machines Corporation Network server having dynamic load balancing of messages in both inbound and outbound directions
US5914938A (en) * 1996-11-19 1999-06-22 Bay Networks, Inc. MAC address table search unit
US6052733A (en) 1997-05-13 2000-04-18 3Com Corporation Method of detecting errors in a network
US6208616B1 (en) * 1997-05-13 2001-03-27 3Com Corporation System for detecting errors in a network
JP3372455B2 (ja) 1997-07-03 2003-02-04 富士通株式会社 パケット中継制御方法,パケット中継装置およびプログラム記憶媒体
US6151297A (en) * 1997-07-08 2000-11-21 Hewlett-Packard Company Method and system for link level server/switch trunking
US6687758B2 (en) * 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
JP2000029806A (ja) 1998-07-09 2000-01-28 Hitachi Ltd 計算機システムのlanアダプタ負荷分散方式
US6570875B1 (en) * 1998-10-13 2003-05-27 Intel Corporation Automatic filtering and creation of virtual LANs among a plurality of switch ports
JP4015770B2 (ja) 1998-12-22 2007-11-28 株式会社東芝 クラスタシステム、サーバ計算機及び負荷分散方法
US6560630B1 (en) 1999-03-18 2003-05-06 3Com Corporation Receive load balancing and fail over with multiple network interface cards
US6512774B1 (en) * 1999-03-18 2003-01-28 3Com Corporation Fail over with multiple network interface cards
US6567377B1 (en) * 1999-03-18 2003-05-20 3Com Corporation High performance load balancing of outbound internet protocol traffic over multiple network interface cards
US6590861B1 (en) 1999-03-18 2003-07-08 3Com Corporation Combining virtual local area networks and load balancing with fault tolerance in a high performance protocol
US7299294B1 (en) * 1999-11-10 2007-11-20 Emc Corporation Distributed traffic controller for network data
US6683882B1 (en) 1999-11-09 2004-01-27 3Com Corporation Method and system for directing transmission of IPX control packets to influence reception of IPX data packets
WO2001082098A1 (en) * 2000-04-27 2001-11-01 Fortress Technologies, Inc. Network interface device having primary and backup interfaces for automatic dial backup upon loss of a primary connection and method of using same
US7116664B2 (en) * 2002-05-13 2006-10-03 International Business Machines Corporation Lookups by collisionless direct tables and CAMs
US7415028B1 (en) * 2003-02-11 2008-08-19 Network Equipment Technologies, Inc. Method and system for optimizing routing table changes due to ARP cache invalidation in routers with split plane architecture
US7159034B1 (en) * 2003-03-03 2007-01-02 Novell, Inc. System broadcasting ARP request from a server using a different IP address to balance incoming traffic load from clients via different network interface cards
US7324512B2 (en) 2003-06-12 2008-01-29 International Business Machines Corporation MAC layer bridging of network frames between isolated and external networks
US7934020B1 (en) * 2003-09-19 2011-04-26 Vmware, Inc. Managing network data transfers in a virtual computer system
US20080022148A1 (en) * 2003-12-11 2008-01-24 Amir Barnea Method and an Apparatus for Controlling Executables Running on Blade Servers
KR20050107534A (ko) * 2004-05-07 2005-11-11 삼성전자주식회사 광대역 무선 접속 시스템에서 인증 방법 및 장치
US7877519B2 (en) * 2004-10-18 2011-01-25 Intel Corporation Selecting one of a plurality of adapters to use to transmit a packet
US7505401B2 (en) * 2005-01-31 2009-03-17 International Business Machines Corporation Method, apparatus and program storage device for providing mutual failover and load-balancing between interfaces in a network
JP2006253900A (ja) * 2005-03-09 2006-09-21 Hitachi Ltd Ipアドレス引き継ぎ方法、ipアドレスアドレス引き継ぎプログラム、サーバおよびネットワークシステム
KR100706757B1 (ko) * 2005-04-04 2007-04-13 이임영 분산 네트워크 환경에서 2mac 인증 패킷을 이용한공격자 추적 방법
US7876689B2 (en) * 2005-06-29 2011-01-25 Hewlett-Packard Development Company, L.P. Method and apparatus for load balancing network interface adapters based on network information
US20070201490A1 (en) * 2005-07-13 2007-08-30 Mahamuni Atul B System and method for implementing ethernet MAC address translation
US7872965B2 (en) * 2005-08-01 2011-01-18 Hewlett-Packard Development Company, L.P. Network resource teaming providing resource redundancy and transmit/receive load-balancing through a plurality of redundant port trunks
KR101014977B1 (ko) * 2005-10-07 2011-02-16 엘지에릭슨 주식회사 링크통합 기능에서 로드밸런싱 방법
US7619993B2 (en) * 2005-11-01 2009-11-17 International Business Machines Corporation Efficient probabilistic duplicate packet detector in computer networks
US7710862B2 (en) * 2006-08-30 2010-05-04 Hewlett-Packard Development Company, L.P. Method and system of assigning media access control (MAC) addresses across teamed communication ports
US7995465B2 (en) 2007-05-18 2011-08-09 Nvidia Corporation Intelligent load balancing and failover of network traffic

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779039B1 (en) * 2000-03-31 2004-08-17 Avaya Technology Corp. System and method for routing message traffic using a cluster of routers sharing a single logical IP address distinct from unique IP addresses of the routers

Also Published As

Publication number Publication date
JP4840943B2 (ja) 2011-12-21
KR100978681B1 (ko) 2010-08-30
TW200913566A (en) 2009-03-16
US7792018B2 (en) 2010-09-07
US20080285441A1 (en) 2008-11-20
CN101350818A (zh) 2009-01-21
TWI479841B (zh) 2015-04-01
KR20080101816A (ko) 2008-11-21
JP2008295041A (ja) 2008-12-04

Similar Documents

Publication Publication Date Title
CN101350817B (zh) 网络业务的智能负载平衡和故障转移的方法和装置
CN101350818B (zh) 网络业务的智能负载平衡和故障转移
CN101394400B (zh) 用于建立避免地址解析协议高速缓冲存储器破坏的网络连接的方法
CN101383732B (zh) 负载平衡联网环境中的智能故障恢复
CN101321085B (zh) 负载平衡的联网环境下的智能故障转移
US6377992B1 (en) Method and system for integration of several physical media for data communications between two computing systems in a manner transparent to layer #3 and above of the ISO OSI model
JP5792894B2 (ja) ポート拡張トポロジ情報の取得用方法、システム及び制御ブリッジ並びにアップリンクポートの処理方法及びシステム
US9621419B2 (en) Determining when to switch to a standby intelligent adjunct network device
US20040165525A1 (en) System and method for network redundancy
US8867375B2 (en) Failback to a primary communications adapter
WO1998018247A9 (en) Method and system for integration of several physical media for data communications
CN101360005A (zh) 负载平衡的联网环境下的智能故障转移
US7539760B1 (en) System and method for facilitating failover of stateful connections
US20090106401A1 (en) System and method for Intra Network Internet Protocol (IP) address modification by dual controller
US5303238A (en) Network communications intermediate interface
US8027338B2 (en) Discontinuing the implementation of an aggregation protocol
JP2002215476A (ja) ネットワークに接続されたホストコンピュータの死活監視方法、死活監視システム、及びプログラム
CN101170544A (zh) 一种高可用群集系统采用单一实ip地址的通讯方法
CN114615187B (zh) 一种逻辑接口数据通信方法及装置
CN112988187B (zh) 一种设备升级方法及装置
US6907046B1 (en) Communication system and device that provides service independent communication bridging
CN116301630A (zh) 一种存储设备的多用户访问方法及相关装置
JPH10247933A (ja) スイッチングハブ
JP2002261817A (ja) 帯域制御中継システム

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

Termination date: 20160519

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