CN101027644A - 透明的tcp连接故障切换 - Google Patents

透明的tcp连接故障切换 Download PDF

Info

Publication number
CN101027644A
CN101027644A CNA2004800163681A CN200480016368A CN101027644A CN 101027644 A CN101027644 A CN 101027644A CN A2004800163681 A CNA2004800163681 A CN A2004800163681A CN 200480016368 A CN200480016368 A CN 200480016368A CN 101027644 A CN101027644 A CN 101027644A
Authority
CN
China
Prior art keywords
server
tcp
computer
backup
layer
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.)
Pending
Application number
CNA2004800163681A
Other languages
English (en)
Inventor
鲁珀特·科克
桑贾伊·霍蒂卡
彼得·M·梅利亚-史密斯
路易斯·M·莫泽
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.)
Eternal Systems Inc
Original Assignee
Eternal Systems Inc
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 Eternal Systems Inc filed Critical Eternal Systems Inc
Publication of CN101027644A publication Critical patent/CN101027644A/zh
Pending legal-status Critical Current

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
    • H04L67/1034Reaction to server failures by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Landscapes

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

Abstract

透明的连接故障切换的方法,当其他计算机(即主服务器)之一出现故障时,使远程计算机(即客户)用网络连接与网络中至少两个或更多其他计算机(即备份服务器)之一通信。使用本发明的机制,当主服务器出现故障时,客户无需建立到备份服务器的新连接。故障切换优选地在服务器的TCP/IP堆栈的TCP层和IP层之间的桥层中执行。无需修改网络的基础结构、客户的TCP/IP堆栈、客户应用或服务器应用。该方法支持服务器应用的激活或半激活复制,并且在故障切换期间无需应用的回卷。该发明还提供引入新的备份服务器的机制。

Description

透明的TCP连接故障切换
相关申请的交叉引用
不适用
关于联邦资助的研究或开发的声明
本发明在Grant No.70NANBOH3015下由政府支持而进行,由美国商务部和国家标准与技术协会奖励。政府对此发明有必然的权利。
光盘上提交的引入作为参考的材料
不适用
关于受版权保护的材料的通知
此专利文档中的部分材料受到在美国和其他国家的版权法之下的版权保护。版权权利所有者不反对任何人对专利文档或专利说明的副本复制,它在美国专利和商标局的文件或记录中公开出现,但仍保留所有版权权利。该版权所有者并不因此放弃对于使此专利文档保密的任何权利,包括不依照37C.F.R.§1.14限制其权利。
背景技术
1. 发明领域
本发明总的来说涉及当计算机出现故障时在网络之上所述计算机之间的通信,并且更具体而言,涉及面向连接的通信协议的执行。
2. 相关技术介绍
计算机使用由通信例程执行的通信协议来交换其之间的信息。一重要类别的通信协议是运行在底层网络通信协议之上的一类面向连接的通信协议。现在在该类中使用最广泛的通信协议包括运行于Internet协议(IP)之上的传输控制协议(TCP)。
面向连接的通信协议需要一个计算机(即客户)发起到另一计算机(即服务器)的连接。一旦连接建立,客户和服务器可交换数据。连接保持建立直到客户和服务器端点两者终止连接,或一个端点出现故障。
为实现服务器的容错性,服务器被复制为一个主服务器复本及一个或多个备份服务器复本,所以即使服务器出现故障,客户也继续接受服务。如果主服务器出现故障,备份服务器接管出现故障的主服务器的角色,并且客户建立到备份服务器的新连接。涉及备份服务器接管出现故障的主服务器角色的操作被称为故障切换操作。有几种方法允许客户用相同的服务器地址来连接到备份服务器,并且因此屏蔽了客户正在与不同的服务器通信的事实。屏蔽故障切换操作而不需客户建立到备份服务器的新连接,且不需客户计算机软件或硬件的任何修改,是本发明的主题并被称作透明的连接故障切换。
已经提出各种系统,即使在服务器出现故障时也允许客户与服务器保持已建立的连接。但其通常需要修改网络基础结构、客户应用或客户计算机的协议栈,机构,所以客户计算机的软件或硬件不能轻易修改。
美国专利公开No.20010056492描述了客户-服务器TCP/IP通信在备份计算机被拦截并记入日志的系统。当服务器出现故障时,重启服务器应用,并重新进行所有TCP/IP堆栈活动。备份计算机进行IP接管,其中在连接的剩余寿命其接管服务器计算机的角色。无需修改客户的TCP/IP协议栈,需要的是客户应用或服务器应用。为了正确操作,在客户与服务器间的连接建立之前,备份计算机必须是可运行的。虽然故障切换的发生对客户透明,但故障切换时间是显著的,因为连接的整个历史必须重放。
TCP接合(TCP splicing)(O.Spatscheck,J.S.Hasen,J.H.Hartman及L.L.Peterson,Optimizing TCP forwarder performance,IEEE/ACMTransactions on Networking,vol.8,no.2,April 2000,pp.146-157)是用来改进应用级网关性能和可量测性的技术。客户建立到调度器(dispatcher)应用的TCP连接。调度器选择适当的服务器来处理客户连接,并且然后修改调度器计算机的TCP/IP堆栈,以把连接的所有TCP包直接前转到所选服务器。直到连接终止,不需进一步涉及该调度器。TCP接合需要所有业务(traffic)流经调度器。
TCP转移(TCP handoff)(M.Aron,D.Sanders,P.Druschel及W.Zwaenepoel,Scalable Content-aware request distribution in cluster-basednetwork servers,Proceedings of the USENIX 2000 Annual TechnicalConference,San Diego,CA,June 2000,pp.323-336)通过让客户直接连接到服务器之一而去除调度器。如果初始服务器决定另一服务器更适合处理该连接,它把TCP连接状态传递到供替换的服务器。TCP换手转移需要将包路由到适当服务器的特殊的前端层-4交换机。
TCP迁移(TCP migration)(A.C.Snoeren,D.G.Anderson and H.Balakrishnan,Fine-grained failover using connection migration,Proceedingsof the USENIX conference on Internet Techniques and Systems,San Francisco,CA,March 2001,pp.221-232)是对客户应用透明但需要修改客户和服务器TCP/IP堆栈两者的技术。不需修改网络基础结构(如Internet路由器、底层协议)。客户或任一服务器可发起连接的迁移。在任一时间点,只有一个服务器连接到客户。组播或前转客户消息是不可能的。
其他研究者(F.Sultan,K.Srinivasan,D.Iyer and L.Iftode,MigatoryTCP:Connection Migration for service continuity in the Internet,Proceedingsof the IEEE International Conference on Distributing Computing System.Vienna,Austria,July 2002,pp.469-470)提出了需要客户和服务器TCP/IP堆栈两者合作的TCP连接迁移方案。客户发起迁移。在迁移过程期间,两个服务器都必须可运行,这使得此方法适于负载平衡但对容错性无用。
Hydranet系统(G.Shenoy,S.K.Satapati and R.Bettati,HydraNet-FT:Network support for dependable services,Proceedings of the IEEEInternational Conference on Distributed Computing System.Taipei,Taiwan,April 2000,pp.699-706)用一组服务器复本代替单个服务器。它不需对客户TCP/IP堆栈做任何修改。替代地,将客户发送到某IP地址和端口号的所有IP包组播到服务器复本组。为使此方案工作,所有业务必须经过特殊的重定向器,所述重定向器位于Internet路由器上。为保持服务器复本之间的一致性,该系统采用原子组播协议(atomic multicast protocol)。前转服务并不限于TCP,而可适用于任何基于IP的传输协议。
SwiFT系统(H.Y.Huang and C.Kitala,Software implemented faulttolerance,Proceedings of the IEEE fault tolerant Computing Symposium,Toulouse,France,June 1993,pp.2-10)为用户应用提供容错性。SwiFT由用于错误检测和恢复、检查点、事件记入日志和重放、通信错误恢复和IP包重路由的模块组成。后者通过为服务器计算机集群提供单个IP图像(IPimage)来实现。通过媒体接入控制(MAC)地址来完成集群内寻址。所有来自客户的业务被发送到调度器,所述调度器把包前转到服务器计算机之一。如果服务器出现故障,客户必须运行SwiFT客户软件以重建TCP连接。
IP包的重路由(A.Bhide,E.N.Elnozahy及S.P.Morgan,A highlyavailable network file server,Proceedings of the 1991 USENIX WinterConference,Dallas,TX,January 1991,pp.199-205)在将IP包从主服务器重路由到备份服务器的方案中提出。如果主服务器出现故障,备份服务器把其IP地址改为主服务器的地址。之后备份服务器发送无偿的地址解析协议(ARP)请求宣布现在可在主服务器的地址找到它。从此之后,所有寻址到主服务器的IP包被发送到备份服务器。
Web服务复制(N.Aghdale及Y.Tamir,Client transparent fault-tolerantWeb service,Proceedings of the IEEE International Conference onPerformance,Computing and Communication,Phoenix,AZ,April 2001,pp.209-216)用于当主服务器出现故障时允许客户继续透明地使用TCP连接的系统中。此方法不要求改变硬件或软件基础结构,但是在每一服务器使用两个代理,其在用户空间中实现以避免改变服务器计算机的操作系统。服务器应用被动地被复制,并且备份代理将客户请求和服务器应答记入日志。其办法的缺点是用户空间中实现所需的上下文切换和协议栈遍历导致性能降低。
因此,需要一种方法,其保持客户与复制的服务器之间的网络连接,当服务器之一出现故障时无需客户建立新连接,并且无需对应用代码、通信例程或客户的其它硬件或软件基础结构的任何修改,使得连接故障切换对客户是透明的。本发明满足这些及其他需求,并克服了以前所开发的用于提供网络连接故障切换的方法的缺陷。
发明内容
为实现透明的连接故障切换,本发明需要属于同一子网的两个联网的计算机(即服务器)。一台服务器作为主服务器,而另一台作为备份服务器。在连接到至少一台其他的计算机(即客户)的连接建立之后,或在建立过程中,或在终止过程中,两服务器中任意一台都可能出现故障。只要服务器的至少一个保持可运行,服务器的故障对客户保持透明,并且特别地,客户无需建立到备份服务器的新连接。在此所述的客户和服务器角色以示范性方式提供,并且应该理解客户和服务器的角色可颠倒或根据相对于具体应用和/或建立在网络之上的连接而临时假定为在任一方向,而不背离在此的教导。
本发明通过利用连接端点迁移的形式来实现透明的连接故障切换。本发明在面向连接的通信协议层和底层网络通信协议层之间插入桥子层。例如,面向连接的通信协议层是传输控制(TCP)层,而底层网络通信协议层是Internet协议(IP)层。尽管在运行于IP之上的TCP环境中描述了本发明,但应该理解本发明的原理也适用于其他协议。
优选地在服务器的TCP/IP堆栈的TCP层和IP层之间的桥子层中实现用于保持连接的例程。本发明不需要对网络基础结构、服务器应用、客户应用或客户的TCP/IP堆栈的任何修改。
在标准的TCP/IP协议栈中,TCP层位于IP层之上。TCP接收来自用户应用的消息并将所述消息分为TCP段。TCP段被传递到IP层,它们在那里被打包成IP数据报。位于客户计算机和服务器计算机之间的路由器工作在IP层,并且因此不了解TCP。在TCP连接建立时,服务器侦听输入的连接请求,而客户连接到服务器。
在本发明中,使用激活或半激活复制,在两个计算机上复制服务器应用进程。利用激活或半激活复制,服务器应用在主和备份服务器计算机二者上运行。两服务器进程接受连接、处理请求并产生应答。服务器进程必须展示相同的确定性行为,这意味着它们在所有连接上产生相同的应答。如果主服务器进程产生应答,备份服务器进程必须产生相同的应答。因为两服务器经历相同的状态转换,并且因为桥使主和备份服务器的TCP层状态同步,应用状态和通信基础结构状态传递不需要支持透明的连接故障切换。但是,建立新的备份服务器复本,或将出现故障和修复的服务器复本返回给系统,不仅需要将应用状态,而且需要将通信基础结构状态转移到新的备份服务器复本。
为了以对客户透明的方式将TCP连接端点从主服务器切换到备份服务器,客户发送到主服务器的IP数据报必须被重定向到备份服务器,并且必须遵守TCP协议。为此指出以下几点:
(a)备份服务器必须具有所有由客户发送的、主服务器已确认的TCP段的拷贝。主服务器必须在接收到来自备份服务器的对该段的确认后才能确认客户的TCP段。
(b)备份服务器必须具有由主服务器发送、客户尚未确认的所有TCP段的拷贝。如果客户确认服务器的TCP段,主服务器和每个备份服务器必须接收确认,并从其缓冲器中去除该TCP段。
(c)备份服务器必须使其TCP序列号与主服务器使用的TCP序列号同步。当故障切换发生时,不能违反序列号次序。如果客户检测到违反了序列号次序,客户将断开连接并重新发起连接。
(d)备份服务器必须遵守最大段尺寸(MSS)和最大窗尺寸,这是当连接建立时在主服务器和客户之间协商的。
本发明在主服务器已出现故障时使TCP连接仍可继续利用,并且不需改变客户应用、客户TCP/IP堆栈或客户的其他软件或硬件。本发明运行在服务器的TCP/IP堆栈级,并且对于请求/应答或消息/确认,优选地需要k+1个消息且最多2k个消息,其中k是服务器复本的数量。
本发明为面向连接的通信协议提供透明的连接故障切换,其中客户连接到网络之上的被复制的服务器。在一个实施例中,透明的连接故障切换通过在通信代码中执行的程序代码来实现以便:(a)将客户请求传送到至少一个备份服务器;并且(b)在主服务器出现故障时,将连接端点从主服务器迁移到备份服务器,响应于此,备份服务器接收并响应客户请求而客户仍寻址主服务器并且未意识到服务器出现故障或连接切换。
在另一实施例中,用于透明连接故障切换的设备包括(a)至少两个服务器计算机,其执行用于与网络之上的客户计算机通信的例程;以及(b)装置,用于在备份服务器计算机的通信例程中修改备份服务器计算机地址,以响应于主服务器计算机的故障,以使备份服务器计算机可作为连接的端点及新的主服务器。修改备份服务器地址的装置优选地在面向连接的通信协议层与底层网络通信协议层之间的桥子层内进行。
在一进一步的实施例中,用于透明连接故障切换的设备包括(a)服务器计算机,配置用于与网络之上的客户计算机一起执行通信协议;及(b)服务器计算机内的程序代码,用于执行通信协议以便:(i)将客户请求传送到主服务器;(ii)将客户请求传送到至少一个备份服务器;(iii)将来自主服务器的响应传送到客户,及(iv)当主服务器出现故障时,将连接端点从主服务器迁移到备份服务器;(v)其中备份服务器接收并响应客户请求,而客户仍然寻址主服务器。
本发明的另一实施例是为与网络之上的远程计算机通信的两个或多个计算机提供透明连接故障切换的方法,包括(a)响应于来自使用Internet协议(IP)之上的传输控制协议(TCP)的远程计算机的通信而在两个或多个计算机上执行相同计算,及(b)在一个计算机出现故障时,迁移连接端点,而其它计算机继续与远程计算机通信。
在另一实施例中,描述了一种确保透明连接故障切换的方法,包括(a)在连接于网络内的计算机上执行通信例程,使得计算可在第一计算机上执行以响应与远程计算机的通信;(b)在通信例程内,使至少第二计算机与第一计算机保持同步,其中第二计算机上的服务器应用执行与第一计算机上的服务器应用相同的计算;及(c)在通信例程内,如果第一计算机出现故障,把连接端点从第一计算机迁移到第二计算机,提供透明连接故障切换以使远程计算机仍然寻址第一计算机但是与第二计算机通信。
应该理解以上的实施例是示范性而不是限制性的,并且可用若干可替换的实施例来描述创新性的示教和本发明的相关方面。
本发明的一方面是用于通过使用连接端点迁移来提供透明连接故障切换的方法。
本发明的另一方面是从主服务器到备份服务器的透明连接故障切换机制,其中当主服务器出现故障时,客户无须与备份服务器建立新连接。
本发明的另一方面是支持服务器应用的激活或半激活复制的透明连接故障切换机制。
本发明的另一方面是在故障切换期间不需要应用回j卷(rollback)的透明连接故障切换机制。
本发明的另一方面是其中备份服务器与主服务器同步的透明连接故障切换机制。
本发明的另一方面是由面向连接的通信协议层与网络通信协议层之间的桥子层中的例程所执行的透明连接故障切换机制。
本发明的另一方面是其中桥例程用另一(备份)服务器的输入的段的目的地址来替换原始(主)服务器的透明连接故障切换机制。
本发明的另一方面是其中客户察觉不到的故障切换的透明的连接故障切换机制,所述故障切换如需要它与具有不同于主服务器的目的地址的备份服务器建立新的连接。
本发明的另一方面是故障切换机制,其利用传输控制协议(TCP)作为面向连接的通信协议以及Internet协议(IP)作为网络协议。
本发明的另一方面是在服务器的TCP/IP堆栈的TCP层和IP层之间实现的桥子层。
本发明的另一方面是透明连接故障切换机制,其中需要介于k+1和2k之间的消息用于请求/应答或消息/确认,其中k代表服务器复本的数目。
本发明的另一方面是透明连接故障切换机制,其在每个服务器不需要代理,并且不在用户空间中实现。
本发明的另一方面是透明连接故障切换机制,其在进行到另一服务器的故障切换之前不需要重放连接的连接历史。
本发明的另一方面是透明连接故障切换机制,其不需要业务通过调度器而被路由。
本发明的一进一步的方面是透明连接故障切换机制,其不需要修改运行在远程或客户计算机上的软件,或者远程或客户计算机上的TCP/IP协议栈。
本发明进一步的方面将在本说明书以下的部分中提出,其中详细描述是为了充分公开本发明的优选实施例,不是在其上设置限制。
附图说明
参考以下仅用于说明目的的附图,本发明将得到全面理解,其中:
图1为根据本发明的一个方面在TCP层和IP层之间的主服务器桥子层的框图,并且以其核心而示出。
图2为根据本发明的一个方面在TCP层和IP层之间的备份服务器桥子层的框图。
图3为根据本发明的一个方面主服务器桥的核心的框图。
图4A和图4B为根据本发明的一个方面描述主服务器桥的核心如何修改净荷字节的序列号的实例的框图。
图5为根据本发明的一个方面实现TCP连接故障切换的TCP/IP协议栈的IP层流程图。
图6为根据本发明的一个方面主服务器桥接收来自备份服务器的TCP段的流程图。
图7为根据本发明的一个方面主服务器桥接收来自主服务器TCP层的TCP段的流程图。
图8为根据本发明的一个方面主服务器桥发送TCP段到客户的流程图。
图9为根据本发明的一个方面备份服务器接收来自IP层的输入的TCP段的流程图。
图10为根据本发明的一个方面备份服务器接收来自TCP层的输出的TCP段的流程图。
图11为根据本发明的一个方面主服务器桥处理其从主服务器的TCP层所接收的TCP SYN段标志的流程图。
图12为根据本发明的一个方面主服务器桥处理其从备份服务器所接收的TCP SYN段标志的流程图。
图13为根据本发明的一个方面主服务器桥处理其从主服务器的TCP层所接收的TCP FIN段标志的流程图。
图14为根据本发明的一个方面主服务器桥处理其从备份服务器所接收的TCP FIN段标志的流程图。
图15为根据本发明的一个方面当主服务器检测到备份服务器故障时,主服务器桥所采取的步骤的流程图。
图16为根据本发明的一个方面当备份服务器检测到主服务器故障时,备份服务器桥所采取的步骤的流程图。
图17为根据本发明的一个方面,为引入新的备份服务器,主服务器所采取的步骤的流程图。
图18为根据本发明的一个方面,为引入新的备份服务器,该新的备份服务器所采取的步骤的流程图。
具体实施方式
更具体地参考附图,为说明的目的,本发明具体化于图1到图18所示的设备中。可以理解,设备可关于配置且关于部件的细节而改变,并且方法可关于特定步骤和序列而改变,而不背离在此所公开的基本概念。
1、引言
应注意本发明总体上按照单个客户和两个服务器复本,即一主服务器和一备份服务器来描述。但是,本发明易于推广到多客户和k个服务器复本,其中有一个主服务器复本以及k-1个备份服务器复本,其中k≥2。
借助于本发明所建立的客户与服务器之间的连接被称作容错性连接或FT连接。四-元组(客户IP地址、客户TCP端口号、主服务器IP地址、主服务器TCP端口号)唯一标识客户与服务器之间的FT连接。
本发明的TCP连接故障切换机制优选地位于主和备份服务器的TCP/IP协议栈的TCP层和IP层之间。如本发明所述,子层被称作桥,包括桥例程。虽然每个服务器必须能作为主服务器或备份服务器运行,但桥的功能在两种情况下是不同的,如下所述。
主服务器桥包括核心,其包括两个队列:主服务器输出队列和备份服务器输出队列。主服务器输出队列包括主服务器TCP层产生的净荷字节。备份服务器输出队列包括备份服务器TCP层产生的净荷字节。主服务器桥为客户和服务器之间的每一FT连接保持主服务器输出序列和备份服务器输出序列。主服务器桥调整所有从TCP层接收的输出TCP段的序列号,以及从IP层接收的输入TCP段的所有确认序列号。
备份服务器桥不包括核心。但是它用主服务器地址替代输出TCP段中原始目的(客户)地址,并把客户地址放在TCP地址放在TCP选项字段中。对应地,备份服务器桥用备份服务器的地址替代输入TCP段中原始(主服务器)目的地址。在下面的本发明的创造性实施例中,备份服务器桥不调整输出TCP段的序列号或者输入TCP段的确认序列号。但是,可以理解本发明可实现为要求备份服务器桥进行这种调整。
2、 优选实施例
本发明所述的连接故障切换机制用于单个客户与复制的服务器之间的单个TCP连接,其中有两个服务器复本,当然该机制易于扩展到多客户和多于两个的服务器复本。考虑无故障情况下系统的行为,且研究当主服务器或备份服务器出现故障时其的行为,之后介绍连接建立和断开的过程。还介绍了启动新的备份复本的进程。
2.1 在无故障情况下保持TCP连接状态
考虑运行客户应用的客户计算机C,以及每个运行相同的服务器应用的主服务器P和备份服务器B。
在标准的TCP/IP协议栈中,当客户应用向服务器应用发出请求时,它把请求消息传递到客户计算机的TCP层。TCP层把请求消息的数据打包在TCP段中,并把TCP段传送到IP层。每个TCP段具有唯一的序列号。IP层把TCP段打包为IP数据报。IP数据报头包括发送方(源)计算机的IP地址和接收方(目的地)计算机的IP地址。
在本发明中,源地址是客户计算机C的IP地址,这里是用Ac表示,目的地址是主服务器计算机P的IP地址,这里用Ap表示。当主服务器计算机P接收来自客户计算机C的数据报,主服务器计算机P的IP层将数据报的净荷递送到TCP层,之后TCP层提取客户请求并将其传递到服务器应用。
备份服务器B的IP层,其网络接口运行在混杂模式,也接收来自客户计算机C的所有数据报。备份服务器桥抛弃不包括TCP段或不是寻址到主服务器P的任何数据报的净荷,对任何其他数据报的净荷,用TCP段头中备份服务器B的地址AB替代原始目的地字段并把该TCP段传递给备份服务器B的TCP层。当它处理TCP段时,TCP层假定客户C把该段直接发送到备份服务器B。
服务器应用处理完客户请求之后,产生应答。假定服务器应用确定性的工作,两个应答是同样的。主服务器和备份服务器的TCP层将应答打包为TCP段。注意,虽然应用的应答是同样的,但TCP层可能不产生同样地TCP段集合。例如,由于流控制,一个服务器的TCP层可能把应答拆分成多个TCP段,而另一服务器的TCP层可能把整个应答打包为一个单个段。
当主服务器桥从TCP层获得TCP段时,它把净荷数据放到主服务器输出队列中并等待直到它接受到来自备份服务器B的对应数据。主服务器桥只有接受到来自备份服务器B和其自己的TCP层的数据之后才能向客户发送数据。
备份服务器B的TCP层把TCP段传递到备份服务器桥。如果备份服务器桥接收到寻址客户C的段,它用主服务器P的地址替代段中的目的地址字段。于是,要到客户的所有TCP段被转向到主服务器P。备份服务器桥把段中原始目的地址包括到段中作为TCP头选项。
当主服务器桥接收到备份服务器B发送的TCP段,它把段的净荷数据与主服务器输出队列中的数据匹配。主服务器桥构建包括匹配净荷字节的新段。原始段中其余字节在备份服务器输出队列中排队。新段在源字段中携带主服务器P的地址而在目的地字段携带客户C的地址。
确认字段包括主服务器桥从主服务器P和备份服务器B接收到的最后段的两个确认序列号中较小的一个。选择两个序列号中较小的一个保证两个服务器都接收到直到该序列号的所有客户数据。
类似地,窗尺寸字段包括主服务器桥从主服务器P和备份服务器B接收到的两个窗尺寸中较小的一个。选择两个窗尺寸中较小的一个使客户的发送速率适应两服务器中较慢的一个,这样,减少了段丢失的风险。
主服务器桥保持变量Δseq,它是主服务器P和备份服务器B的TCP层分配给它们发送到客户C的段的序列号偏移。当它们建立到客户C的新连接时,主服务器P和备份服务器B选择初始序列号ΔseqP,init和ΔseqB,init
主服务器桥将序列号偏移Δseq计算为所述初始序列号之差:Δseq=ΔseqP,init-ΔseqB,init。接下来,为了比较由P和B发送的TCP段的序列号,主服务器桥从其接收自主服务器TCP层的每个段的序列号中减去Δseq。
图1至图3所示为本发明中的桥。图1代表主服务器中的桥,而图2所示为备份服务器中的桥。上述方法反映在图3中。图左侧显示主服务器桥从主服务器TCP层接收段。图4A和图4B图示主服务器桥修改净荷字节序列号的实例。
如果桥从服务器接收TCP段但因为另一服务器的队列不包括任何匹配净荷而不能组建TCP段,则它把P和S的最近确认中最小的与以前它构建的TCP段的确认相比较。如果前者大于后者,桥构造无净荷的TCP段来确认客户的段。这防止了在服务器应用不向客户发送任何数据的情况下的死锁。
在标准TCP中,段确认被叠在反方向发送的段上。如果反方向上无数据发送,TCP创建不加载用户数据的TCP段,这称为延迟确认。
在本发明的这个实施例中,如果桥接收到这样的延迟确认,则其更新段头的ACK和WinSize字段,并把新ACK值与发送到客户的最后段的ACK值相比较。如果前者大于后者,桥构造无净荷的TCP段。
2.2 消息丢失
在标准TCP中,丢掉TCP段M在预期目的地有几种影响。第一,目的地将不确认m或m的源发送的任何后面的段。当源的重传定时器期满时,源重传m。第二,目的地不接收源附在m上并确认目的地的段k的确认ackk。如果源不发送确认目的地段k的附加TCP段,目的地重传定时器期满,并且目的地重传段k。
本发明以如下方式处理可能在几个地方发生的这样的段丢失:
(a)主服务器不接收客户的段m,但备份服务器接收它。在这种情况下,主服务器P的TCP层不确认m。因此,主服务器桥不确认m。当其重传定时器期满之后,客户C重传m。段m可携带服务器发送的段k的确认ackk。由于主服务器不接收ackk,所以它重传k。通过比较段k的序列号和它发送的最后段的序列号,主服务器桥识别出段k是重传的,且它已从备份服务器接收到段k的拷贝。因此,主服务器桥不将段k排队,等待来自备份服务器的段k的拷贝,而是立刻传输段k。
(b)备份服务器不接收客户的段m,但备份服务器接收它。这种情况与(a)类似,备份服务器重传段k而主服务器桥传输段k,不等待接收来自主服务器P的TCP层的段k重传,因为它已从主服务器P的TCP层接收段k。
(c)客户传输包括确认ackk的段m,但主服务器P或备份服务器B都没有接收段m,并且因此,也不接收ackk。在这种情况下,主服务器和备份服务器二者的TCP层都重传段k。当主服务器桥接收到任一所述重传时,其立即把段k传输给客户,原因为上面(a)和(b)所述。
(d)主服务器桥接收备份服务器B发送的段k,并且因此,只有当它接收到段k后才会发送更多段给客户C。相应地,客户C将不确认段k,而两服务器将重传k。当主服务器桥在其接收到来自主服务器的TCP层的k的重传之前接收到来自备份服务器B的段k的重传时,所述桥认识到它已从主服务器的TCP层接收到k的传输,并且因此,它立刻把k传输给客户C。如果主服务器桥在接收到来自备份服务器B的k的重传之前接受到来自主服务器的TCP层的k的重传,它发现段k在主服务器队列中,并抛弃从主服务器TCP层接收到的k的第二拷贝。
(e)客户C未接收由主服务器桥传输给客户的段k。相应地,客户C将不确认段k。主服务器P和备份服务器B二者的TCP层都将重传k。所述重传处理与上述情况(c)基本等价,其中由客户传输的确认未被两服务器接收。相应地,主服务器桥将重传k两次。
2.3 主服务器出现故障
主服务器P和备份服务器B必须定期交换心跳消息(heartbeatmessage)。如果备份服务器B确定其未接收来自主服务器P的心跳,其将进行包括如下步骤的重新配置过程:
(a)禁止备份服务器B发送心跳;
(b)请求备份服务器桥停止发送寻址到客户C的TCP段到IP层;
(c)禁止备份服务器B的网络接口的混杂接收模式;
(d)禁止用于FT连接的输入TCP段的目的地字段的Ap到AB的地址翻译;
(e)禁止用于FT连接的输出TCP段的目的地字段的Ac到Ap地址翻译;
(f)将备份服务器B的IP地址改变为主服务器P的地址,并发送无偿的ARP请求包。
(g)当IP地址的改变完成时,继续由备份服务器桥发送TCP段。
重新配置备份服务器桥之后,备份服务器B直接将其TCP段发送给客户C,并且行为象任何标准TCP服务器一样。
注意,在重新配置备份服务器桥期间,序列号或ACK序列号或窗尺寸都不需要改变。
2.4 备份服务器出现故障
如果主服务器P确定其未接收来自备份服务器B的心跳,其将进行包括如下步骤的重新配置过程:
(a)从主服务器输出队列中去除所有净荷数据,把数据放入新创建的TCP段(或多个TCP段,如果需要),并发送TCP段到客户C。
(b)禁止用于输入的IP数据包的多路分解器,把所有输入TCP段直接路由到TCP层;
(c)禁止主服务器P创建的TCP段延迟。不修改这些段的确认字段或窗尺寸。但是,继续从所有寻址到客户C的输出TCP段的序列号字段中减去偏移Δseq;
备份服务器B故障恢复完成之后,所有主服务器P发送给客户C的TCP段包括主服务器P的TCP层选择的窗尺寸和确认。
在正常运行期间,主服务器桥发送给客户C的所有段加载了备份服务器B的TCP层分配的序列号。
如果备份服务器B出现故障,主服务器桥不停止减去偏移,因为客户C的TCP层与备份服务器B产生的序列号同步。
2.5 客户发起的连接建立
标准TCP连接的建立是一种三路握手。第一、客户发送TCP段到具有同步标志(SYN段)集的服务器,SYN段规定服务器端口并包括客户的初始序列号。第二,如果服务器接受连接,它回送一个SYN确认客户的SYN。服务器的段包括服务器的初始序列号和客户的SYN段的确认。第三,客户确认服务器的SYN段。然后连接建立,并且两侧都可发送TCP段。
本发明如下建立FT连接:
(a)备份服务器桥对输出SYN段的目的地址进行地址翻译。之后它减少段的最大段尺寸(MSS)字段,对于IPV4减少8字节(其中4个字节用于标记选项,4个字节用于TCP选项字段的客户地址),而对于IPV6减少20字节(其中4个字节用于标记选项,16个字节用于TCP选项字段的客户地址)。主服务器桥接收来自客户的初始SYN段并将该SYN段传递给TCP层;
(b)当主服务器的TCP层接受连接请求时,它把SYN段发送给主服务器桥;
(c)接收到来自TCP层的该段后,主服务器桥创建主和备份服务器输出队列,之后把段排队。主服务器桥存储该段的序列号seqP,init以便能进行序列号偏移计算;
(d)备份服务器桥接收来自客户C的初始SYN段,对该段的目的地址进行地址翻译,并把该SYN段传递给TCP层;
(e)当备份服务器B的TCP层接受连接请求时,它把SYN段传递给备份服务器桥;
(f)备份服务器桥把该段传递到IP层;
(g)当主服务器桥接收备份服务器S的TCP层发送的SYN段时,它通过从seqP,init中减去SYN段的序列号seqB,init计算序列号偏移Δseq;
(h)主服务器桥现在构建要发送给客户的SYN段。它把该段的MSS字段设成由主服务器P和备份服务器B的TCP层创建的SYN段中包括的MSS字段的最小;
(i)主服务器桥把该段传递给IP层;
(j)客户C的TCP层接收来自主服务器P的SYN段,并通过发送确认来响应;
(k)主服务器桥和备份服务器桥以相同方式将确认段作为将来的输入段来处理。
2.6. 服务器发起的连接建立
主服务器P和备份服务器B通过发送SYN段发起与第三层后端(third-tier back-end)服务器的TCP连接的建立。主服务器和备份服务器的TCP层都产生SYN段。当接收到第一SYN段时,主服务器桥创建主和备份服务器输出队列并把TCP段排队。当服务器桥接收到另一服务器的SYN段时,它计算序列号偏移、创建SYN段并将其发送给该第三层后端服务器。
当第三层后端服务器的TCP层接受连接请求,它回过来发送SYN段。主服务器桥和备份服务器桥二者以相同方式将确认段作为将来的输入段来处理。服务器通过发送对客户SYN段的确认完成三路握手。
2.7 连接终止
标准TCP连接的终止是四路握手。每一侧都可发起连接终止过程。每个连接的方向可独立于另一个而关闭。为终止一个方向的TCP连接,发送端点发送具有FIN标志集的TCP段。另一端点确认该FIN段。连接现处于半关断状态,其中未发送FIN的端点仍可发送数据。另一端点必须确认所有输入段,但是不能发送数据。半关断状态持续到保持激活的一侧发送FIN为止。另一侧一旦确认该FIN,连接就关断。
在本发明中,如果客户C发起连接终止,FT连接如下终止:
(a)主服务器桥接收到来自客户C的FIN段。它将TCP客户到服务器方向的连接标记为关断,之后把FIN段传递给TCP层;
(b)当主服务器桥接收到来自主服务器P和备份服务器B的TCP层的FIN段时,它将连接标记为关断,之后向客户C发送FIN段;
(c)当主服务器桥接收到客户对服务器FIN段的确认时,它删除所有为该连接分配的内部数据结构,并把该确认传递到TCP层;
(d)如果在超时之内备份服务器B没有接收到客户对FIN段的确认,则B重传FIN段。当主服务器桥在删除所有与该连接有关的内部数据结构之后接收到B发送的FIN时,它代表客户创建确认并把该确认发送给B;
在本发明中,如果服务器发起连接终止,FT连接如下终止:
(a)主服务器桥接收来自主服务器P和备份服务器B的TCP层的FIN段。桥将该连接的服务器到客户方向标记为关断,之后把该FIN段发送给客户;
(b)当主服务器桥接收到客户C发送的FIN段时,它将连接标记为关断并把FIN段传递给TCP层;
(c)当主服务器桥接收到来自主服务器和备份服务器的TCP层的客户FIN确认时,主服务器桥删除所有为该连接分配的内部数据结构,并向客户发送确认。
(d)如果客户C没接收到服务器的确认,它重传FIN段。在主服务器桥已去掉所有与连接有关的内部数据结构之后,当主服务器桥接收到客户C发送的FIN段时,它创建确认并将其回送给客户C。
2.8 启动新的备份服务器
启动新的备份服务器的进程涉及以下步骤。主服务器通过执行以下操作来检查其状态:
(a)捕获服务器应用的状态;
(b)捕获服务器应用当前使用的TCP连接的状态,包括套接字缓冲区(socket buffer)状态;
(c)保存所有TCP故障切换连接的序列号偏移。
(d)通过创建备份服务器输出队列及初始化数据结构和变量,为主服务器桥与备份服务器协作做准备;
(e)把主服务器桥模式从BACKUP_SERVER_DOWN变为BACKUP_SERVER_UP;
(f)把状态传送到备份服务器;
操作(a)到(e)必须原子地执行。执行完它们之后,只有当接收到来自主服务器TCP层和备份服务器的对应段之后,桥才向用户发送TCP段。
为了启动新的备份服务器,在新的备份服务器执行以下操作:
(g)从主服务器接收状态;
(h)启动服务器应用并上传应用状态;
(i)通过上传针对这些连接的TCP层状态,创建进行中的TCP连接;
(j)修改TCP层的序列号计数器(减去seqOffset),使所有备份服务器传输的输出TCP段具有客户期望的序列号,并因此无需修改主服务器桥。必须修改段的序列号、未决的传输或确认。
(k)修改服务器应用保持的所有建立的连接的最大消息尺寸(MSS)。这保证该段提供足够的空间以把原始客户地址附在TCP头上。
(l)使能地址翻译;
(m)将备份服务器置于混杂接收模式;
操作(h)到(m)必须原子地执行。由于序列号偏移异常,没必要传递余下的桥状态。操作(c)到(j)是必要的,因为主服务器的TCP层与客户使用不同的序列号。在前面所述实施例中,备份服务器不修改序列号。因此,TCP层状态得以修改,这样所有输出段的序列号与客户的序列号一致,并且对于输入段的确认序列号也是类似的。
3. 可替换的实施例
上述方法可用若干方式修改,下面举例说明几种:
3.1 修改1:备份服务器的无IP故障切换
如前所述,当主服务器出现故障时备份服务器接管主服务器的IP地址。修改1不需要备份服务器接管主服务器的IP地址。如果主服务器出现故障,备份服务器保持混杂模式,而备份服务器桥继续修改输入TCP段的目的地址以及输出TCP段的源地址。
3.2 修改2:无混杂接收模式
如前所述,备份服务器通过将其网络接口置于混杂模式来获取客户的段。修改2不需要使用混杂接收模式。主服务器桥拷贝其从客户接收的TCP段并将其发送到备份服务器。客户的IP地址存储在该段的TCP选项字段中。
修改1和修改2不兼容。如果备份服务器不通过运行于混杂模式的接口来接收客户段,则其必须在主服务器出现故障时接管主服务器的IP地址。
3.3 修改3:序列号调整和序列号确认
在上述方法中,只有主服务器桥调整序列号和确认序列号。可替换地,主服务器桥和备份服务器桥都可执行序列号调整和序列号确认。
如果备份服务器调整序列号并且然后确认序列号,那么当引出新的备份服务器时,就不需要修改用于确认序列号和序列号的TCP层状态。
3.4 修改4:发送和比较净荷字节
在上述方法中,备份服务器桥将包括从其TCP层接收的净荷的TCP段发送到主服务器。主服务器桥把从来自备份服务器桥的TCP段接收的净荷数据字节与从其自身TCP层接收的TCP段的对应的净荷数据字节相比较。
可替换地,备份服务器不将其从其TCP层接收的TCP段的净荷数据字节发送到主服务器桥。而是,备份服务器桥发送TCP段,所述TCP段包括以下来自TCP头的字段:客户地址、TCP序列号、净荷数据长度、确认序列号、最大段尺寸和窗尺寸。
当主服务器桥从备份服务器接收到无净荷数据字节的TCP段时,主服务器桥把包括在该段中的序列号和数据长度与主服务器输出队列中的数据的序列号相匹配。主服务器桥构建新的段,包括来自主服务器输出队列的数据字节,其序列号与从备份服务器接收的序列号相匹配。其从备份服务器接收的任何不匹配的序列号存储在备份服务器输出队列中。新的TCP段在源字段中携带主服务器地址,并在目的地字段中携带客户地址。
3.5 修改5:在捕获状态调整序列号
上述2.8部分描述了如何检查TCP连接状态以启动新的备份服务器。可通过修改2.8部分操作(b)中捕获的状态来修改序列号。对应于序列号的捕获的状态部分得以修改。该修改消除了执行2.8操作(k)的需要。可在主服务器或备份服务器中执行对捕获状态的修改。如果在主服务器中执行捕获状态修改,在上面2.8部分操作(c)中确定的序列号偏移不需传送给备份服务器。
4. 附图的详细描述
图1所示为主服务器计算机2中的功能块的一个实例。主服务器计算机掌管一个或多个应用4,其与计算机6的TCP层通信。主服务器桥8位于TCP层和IP层之间。
输出TCP段被传递到多路分解器10。不属于FT连接的TCP段被直接传递12给IP层26。属于FT连接的TCP段被传递给主服务器桥的核心16。
由主服务器计算机的IP层26递送的输入TCP段被传递30给主服务器桥。多路分解器24通过其源地址把输入段分开。来自计算机而不是来自备份服务器的段被直接传递20到TCP层。来自备份服务器的段被传递22到主服务器桥的核心。
如果核心接收到来自主服务器TCP层6的具有相同序列号的字节14及来自备份服务器的字节22,其产生包括这些字节的TCP段,将所述段寻址到客户,并将这些字节传递18到IP层26。IP层26将TCP段打包到IP数据报中并将其传递到网络驱动器28,该网络驱动器将数据报发送给客户。
图2所示为被备份服务器50中的功能块的一个实例,备份服务器50掌管一个和多个应用52。这些应用与运行在主服务器4上的相同。所述应用与TCP层54通信。备份服务器桥56位于TCP层54和IP层64之间。
输出TCP段被传递到多路分解器58。不属于FT连接的TCP段被直接传递60给IP层64。备份服务器桥用主服务器的替代62属于FT连接的每个TCP段的原始目的(客户)地址,并把客户地址放在TCP选项字段中,然后把TCP段传递给IP层64。IP层64把TCP段打包到IP数据报中并把它传递给网络驱动器66,网络驱动器66把数据报发送给主服务器。
输入TCP段仅当其寻址到主服务器或备份服务器时才被传递给备份服务器桥。备份服务器桥中的多路分解器通过其目的地址把输入段分开68,寻址备份服务器的段直接传递70到TCP层。寻址主服务器的段传递给第二多路分解器72。如果段不属于FT连接,备份服务器丢掉TCP段74。如果段属于FT连接,备份服务器桥用备份服务器B的地址替代原始(主服务器)目的地址76,之后把该段传递给TCP层54。
图3所示为主服务器桥的核心。核心接收主服务器的TCP层产生的TCP段80。核心调整TCP段的序列号82。核心把TCP段的ACK字段中的值保存在变量Ap中84,并把TCP段的窗尺寸字段中的值保存在变量Wp中86。
如果TCP段中的净荷与备份服务器输出队列106中任何净荷匹配,核心创建一个或多个TCP段94。它从备份服务器输出队列90中取出匹配的净荷字节,并在主服务器输出队列88中将不包括在备份服务器输出队列中的所有净荷字节排队。
核心将变量Ap和As的最小值写入新TCP段的确认字段108。核心把变量Wp和WB的最小值写入新TCP段的窗尺寸字段92。一旦TCP段完成,核心把该段传递96到主服务器的IP层。
如果核心接收到备份服务器产生的TCP段100,核心把TCP段的ACK字段值保存在变量AB中102,并且把TCP段的窗尺寸字段值保存在变量WB中104。
如果TCP段中的净荷与主服务器输出队列88中任何净荷匹配,核心创建一个或多个TCP段94。它从主服务器输出队列90中取出匹配的净荷字节,并在备份服务器输出队列106中把不包括在主服务器输出队列中的所有净荷字节排队。
核心把变量Ap和As的最小值写入新TCP段的确认字段108。核心把变量Wp和WB的最小值写入新TCP段的窗尺寸字段92。一旦TCP段完成,核心把该段传递96到主服务器的IP层。
图4A和图4B所示为主服务器桥修改净荷字节的序列号的一个实例。主服务器桥刚接收到的段包括序列号从51到54的净荷字节,如图4A中块110所示。如块112所示Δseq等于30,并且主服务器桥之前已接收到包括来自备份服务器的、序列号21和22的净荷字节的段,如图4B的块124所示。主服务器桥在从其刚从主服务器TCP层收到的字节的序列号减去Δseq以后,其将这些现在具有序列号21到24的字节在主服务器输出队列中排队,如图4A的块114所示。参考图4B,主服务器桥然后接收由备份服务器发送的段,其加载了如块120所示序列号为23到26的净荷字节。主服务器桥发现并去掉主服务器输出队列中如块124所示序列号为23和24的匹配字节,从队列中取出如块126所示的匹配净荷,并利用其净荷字节130中的这些字节来创建如块128所示的新TCP段,之后传递给IP层。它将如块122所示的序列号为25和26的剩余字节在备份服务器输出队列中的排队。
图5如果不考虑块162,而从块152到块150用直接箭头连接,图示了标准TCP/IP协议栈的IP层操作。在发送TCP段时,TCP把块140的段与段的源地址和目的地址一起传递给IP层。IP层把该段封装进IP数据报,如块142所示,然后把数据报传递给网络接口驱动器,如块144所示。
从网络接收消息时,在块146,网络接口驱动器把每个IP数据报传递给IP层。在块148,IP层检查bit错误看数据报是否正确。如果数据报受损,在块158抛弃该数据报,终止于块160。之后在块152,IP层把数据报的目的地址与分配给计算机的IP地址相比较。如果目的地址与任何IP地址都不匹配,IP层检查其是否具有路由以及能否前转该数据报,如块150所示。如果IP层具有该地址的路由,IP层把该数据报传回网络接口驱动器;否则,在块158它抛弃该数据报,并终止于块160。如果目的地址与一个IP地址匹配,在块154,IP层从数据报中提取TCP段并在块156把它传递给TCP层。
图5用块162和存在的箭头表示实现TCP连接故障切换的TCP/IP协议栈的IP层。块162中的检查保证了备份服务器不前转或抛弃寻址到主服务器的IP数据报。替代地,备份服务器处理这些数据报就像数据报是寻址到备份服务器的一样。否则,步骤与上面图5所示和标准TCP/IP协议栈一样。
图6所示为在块170主服务器桥接收来自主服务器IP层的TCP段的图。桥在块172检查备份服务器是否发送该段。如果备份服务器发送该段,在块174桥处理SYN标志并在图12中继续处理。如果备份服务器没有发送该段,在块176桥检查是否设置了TCP头中的ACK标志。如果TCP头中的ACK标志未设置,在块178它把ACK设置为ACK与Δseq之和。在两种情况下,随后在块180其把该段递送给TCP层。
图7所示为在块190主服务器桥接收来自主服务器TCP层的TCP段的图。桥在块192处理SYN标志和FIN标志,处理细节分别在图11和图13的流程图中描述,并在块194检查该段是否属于FT连接。如果该段不属于FT连接,桥在块196把该段传递给IP层,IP层将其发送给客户。如果该段属于FT连接,桥在块198把该段传递给主服务器桥的核心,在图10中继续描述。
图8所示为在接收TCP段时主服务器桥的核心的图。在块200,如果核心接收到来自主服务器TCP层的TCP段,它在块202把该段的净荷与备份服务器输出队列的数据相匹配。在块204桥使用图11块304中调整过的序列号来创建包括匹配的净荷字节的新TCP段。桥把主服务器输出队列中的原始段的剩余字节排队,如块206所示,在块208删除原始段。
新段在源字段中携带主服务器地址并在目的地字段携带客户地址。在块210把确认字段设为桥从主服务器或备份服务器TCP层接收的最后的段的确认序列号中较小的那个。在块212使用相同过程填充新段的窗尺寸字段。之后在块214该段被传递给IP层,IP层把它们发送给客户。
如块220所示,如果核心接收到来自备份服务器的TCP段,它在块222把该段的净荷数据与主服务器输出队列的数据相匹配。在块224桥创建包括匹配的净荷字节的新TCP段。在块226,桥把备份服务器输出队列中的原始段的剩余字节排队并在块228删除原始段。剩余过程包括块210、212和214所示步骤,如上所述。
图9所示为在块240备份服务器桥从IP层接收输入IP段的图。首先,在块242它检查主服务器是否可运行。如果主服务器不可运行,在块250桥把输入段递送给IP层。如果主服务器可运行,在块244桥检查输入TCP段是否寻址到备份服务器。如果TCP段寻址到备份服务器,在块250桥把段传递给TCP层。如果TCP段不寻址到备份服务器,在块246桥检查该段是否属于FT连接。如果该段属于FT连接,在块248桥用备份服务器的地址重写该段的目的地址,之后在块250把该段传递给TCP层。如果该段不属于FT连接,桥在块252丢掉该段。
图10所示为在块260备份服务器桥接收来自TCP层的输出TCP段的图。首先,在块262桥检查该段是否属于FT连接。如果该段不属于FT连接,在块270桥把该段传递给IP层。如果该段属于FT连接,桥在块264检查主服务器是否可运行。如果主服务器不可运行,在块270桥把输入段传递给IP层。如果主服务器可运行,在块266桥把客户地址写入该段的TCP选项字段,并在块268用主服务器地址重写该段的目的地字段中客户地址。在块270桥把段传递给IP层,IP层把段发送给主服务器。
图11所示为主服务器桥处理桥从TCP层接收的段的SYN标志的图,如块300所示。在块302桥检查是否设置了SYN标志。如果没设置SYN标志,在块304桥从段的序列号中减去变量seqOffset的值,并在块306继续处理TCP段。如果设置了SYN标志,在块308桥把变量primarySynSeq的值设为等于TCP段的序列号。
在块310如果变量BackupSynSeq不包括有效序列号,在块312桥丢掉段,并终止于块322。否则,在块314桥计算变量seqOffset的值。之后在块316它创建不带任何净荷、序列号等于原始SYN段的序列号减seqOffset的新SYN段,并在块316把新的SYN段传递给IP层,IP层把新的SYN段发送给客户。
之后在块318桥检查原始SYN段是否包括任何净荷。如果原始SYN段包括净荷,则在块320桥清除段的SYN标志。在两种情况下,在块304桥从segment.seq减去seqOffset,并在块306继续处理,如同该段是由主服务器的TCP层发送的规则段一样。
图12所示为主桥处理桥从备份服务器接收的TCP段的SYN标志的图,如块350所示。在块352桥检查是否设置了SYN标志。如果未设置SYN标志,在块356桥继续处理该段,如果设置了SYN标志,在块358桥把变量backupSynSeq的值设为该段所携带的序列号。
如果变量primarySynSeq不包括有效序列号360,在块368桥随后检查原始SYN段是否包括任何净荷。如果该段包括净荷,在块370桥清除原始段的SYN标志,并在块356继续处理该段。否则桥计算变量seqOffset的值364。之后它创建没有任何净荷、序列号等于原始SYN段序列号减seqOffset的SYN段,并在块366把它传递给IP层。IP层把SYN段发送给客户。
桥随后在块368检查原始SYN段是否包括任何净荷。如果原始SYN段包括净荷,在块370桥清除段的SYN标志。在两种情况下,桥处理该段,如同该段是由主服务器的TCP层发送的规则段一样,如块356所示。
图13所示为在块400主服务器处理其从主服务器TCP层接收的段的TCP FIN标志的图。在块402桥检查是否设置了FIN标志。如果未设置FIN标志,桥继续如图8所示处理该段,如同处理主服务器的TCP层发送的规则段一样,如块404所示。如果设置了FIN标志,在块406,桥把变量primaryFinSeq的值设为该TCP段最后的字节的序列号。
在块408,主服务器桥随后检查变量backupFinSeq的值是否等于变量primaryFinSeq的值。如果backupFinSeq的值不等于primaryFinSeq的值,在块412桥检查原始FIN段是否包括净荷。如果原始FIN段包括净荷,则在块414桥清除该段的FIN标志。在两种情况下,在块404所示,桥继续处理该段。
如果backupFinSeq的值等于变量primaryFinSeq的值,桥创建无任何净荷、序列号等于primaryFinSeq的FIN段,并在块410把新FIN段传递给IP层,IP层把FIN段发送给客户。之后在块412主服务器桥检查原始FIN段是否包括任何净荷。如果原始FIN段包括净荷,在块414桥清除该段的FIN标志。在两种情况下,如块404所示,桥继续处理该段,如同主服务器的TCP层发送的规则段一样。
图14所示为主服务器处理其从备份服务器TCP层接收的段的TCPFIN标志的图,如块420所示。在块422桥检查是否设置了FIN标志。如果未设置FIN标志,桥继续处理该段。如块424所示。如果设置了FIN标志,在块426,桥把变量backupFinSeq的值设置为该TCP段最后的字节的序列号。
之后在块428备份服务器桥随后检查变量backupFinSeq的值是否等于变量primaryFinSeq的值。如果backupFinSeq的值不等于primaryFinSeq的值,在块432桥检查原始FIN段是否包括净荷。如果原始FIN段包括净荷,则在块434桥清除该段的FIN标志。在两种情况下,如块424所示,桥继续处理该段。
如果backupFinSeq的值等于变量primaryFinSeq的值,桥创建无任何净荷、序列号等于primaryFinSeq的FIN段,并在块430把新FIN段传递给IP层,IP层把该FIN段发送给客户。之后在块432主服务器桥检查原始FIN段是否包括任何净荷。如果原始FIN段包括净荷,在块434桥清除该段的FIN标志。在两种情况下,桥继续处理该段,如同主服务器的TCP层发送的规则段一样,如块424所示。
图15所示为当主服务器在块500检测到备份服务器出现故障时主服务器桥采取的步骤。在块502主服务器桥发送主服务器输出队列中的所有净荷数据。然后在块504删除主服务器输出队列和备份服务器输出队列并在块506,把主服务器桥模式从BACKUP_SERVER_UP改为BACKUP_SERVER_DOWN,之后进程终止于块508。
图16所示为如块520所示当备份服务器检测到主服务器出现故障时备份服务器采取的步骤。在块522备份服务器接管主服务器的IP地址,在块524禁止混杂接收模式,并且然后在块526把备份服务器桥模式从BACKUP_SERVER改为PRIMARY_SERVER,并且进程终止于块528。
图17示出主服务器为了引入新的备份服务器所采取的步骤。主服务器通过执行以下操作在块550检查其状态。在块552主服务器捕获服务器应用的状态和服务器应用当前使用的容错性连接的状态,包括在块554套接字缓冲区状态。在块556,它保存所有容错性连接的序列号偏移。主服务器通过在块558创建备份服务器输出队列及初始化数据结构和变量为主服务器桥与备份服务器协作做准备。以上操作必须原子地执行。在块560,主服务器把主服务器桥模式从BACKUP_SERVER_DOWN变为BACKUP_SERVER_UP。在块562,把状态传送到备份服务器,并且进程终止于块564。随后,只有当接收到来自主服务器TCP层和备份服务器的对应段之后,主服务器桥才向客户发送TCP段。
图18所示为如块580所示为了启动新的备份服务器在新备份服务器所采取的步骤。在块582,备份服务器从主服务器接收状态。在块584,备份服务器启动服务器应用并上传服务器应用状态。通过在块586上传这些连接的TCP层状态来创建进行中的容错性连接,包括套接字缓冲区。在块588,其修改所有输出TCP段的序列号(减seqOffset)。在块590,其修改服务器应用保持的所有建立的连接的最大消息尺寸(MSS),这保证该段提供足够的空间以将原始客户地址附到TCP头。在块592,其使能地址翻译并在块594使能混杂接收模式,并且进程终止于块596。以上在备份服务器的所有操作必须原子地执行。
相应地,可以看出,可采用对于该领域技术人员显然的各种变型来实现本发明的用于保持连接及提供透明的连接故障切换的方法和系统。应理解,在不背离本发明原则的情况下,所述桥例程及其他例程和元素可利用对结构、次序、序列和可选方面的变更来实现。还应理解本发明所述方面不需要在遵循本示教的每个应用中实现,只要不背离所述示教,可根据本示教来实现在此之前未描述的选项。
虽然以上描述包括很多细节,但不应理解为对本发明的限制,而应视为仅用来描述本发明的一些优选实施例。因此,应该理解本发明的范围还完全覆盖对本领域技术人员显然的其他实施例,并且相应地本发明的范围只受所附权利要求所限制,其中除非明确声明,单数的元素并不意味者“一个且仅一个”,而是指“一个或多个”。该领域技术人员所公知的上述优选实施例的元素的所有结构上和功能上的等效通过引用合并于此并意欲被本权利要求所涵盖。而且,一种设备或方法处理要由本发明解决的每个和所有问题是不必要的,因为它由本权利要求所覆盖。此外,本公开中没有元素、组件、或方法步骤欲献给公众,不管所述元素、组件、或方法步骤是否在权利要求中明确地被引用。在此没有权利要求元素被解释为在35U.S.C.112第6段的条款下,除非该元素用短语“装置+功能”表达。

Claims (96)

1.一种提供透明的连接故障切换的设备,包括:
第一服务器计算机和一个或多个第二服务器计算机,执行相同的服务器应用,并被配置用于执行通信例程以便通过网络通信;及
装置,用于当应答来自客户的请求的所述第一服务器计算机出现故障时,在所述计算机服务器上的所述通信例程内迁移服务器的连接端点,使得所述一个或多个第二服务器计算机开始应答来自所述客户的请求,无需所述客户把服务器连接端点地址从所述第一服务器计算机改为所述一个或多个第二服务器计算机。
2.如权利要求1中所述设备,其中迁移连接端点的所述装置在所述一个或多个第二服务器计算机和所述第一服务器计算机之间保持同步。
3.如权利要求2中所述设备,其中在所述第一服务器计算机出现故障之前,通过在所述一个或多个第二服务器计算机上执行与所述第一服务器计算机上正在执行的相同的请求,在所述一个或多个第二服务器计算机和所述第一服务器计算机之间保持所述同步。
4.如权利要求1中所述设备,其中所述通信例程执行在所述网络之上承载数据的底层网络通信协议之上的面向连接的通信协议。
5.如权利要求4中所述设备,其中在通信例程中迁移连接端点的所述装置包括所述第一服务器计算机和所述一个或多个第二服务器计算机中的桥层,位于所述面向连接的通信协议和所述底层网络通信协议之间。
6.如权利要求5中所述设备,其中所述第一服务器计算机和所述一个或多个第二服务器计算机包括被所述客户寻址的主服务器和一个或多个备份服务器,当所述主服务器可运行时所述一个或多个备份服务器与所述主服务器保持同步。
7.如权利要求6中所述设备,其中所述主服务器中的所述桥层包括在所述桥层中由桥例程保持的备份服务器输出队列和主服务器输出队列。
8.如权利要求7中所述设备,其中所述面向连接的通信协议包括传输控制协议(TCP)而所述网络通信协议包括Internet协议(IP)。
9.如权利要求8中所述设备,其中所述桥层修改TCP段中的传输控制协议(TCP)序列号,以便在所述第一服务器计算机和所述一个或多个第二服务器计算机之间保持同步。
10.一种提供容错性和透明的连接故障切换的设备,包括:
计算机服务器,配置成通过网络与客户计算机执行通信协议;及
在所述计算机服务器内的程序,用于执行所述通信协议,用于
通过所述网络把来自客户的请求传送到主服务器,
通过所述网络把来自客户的请求传送到至少一个备份服务器,这里所述备份服务器与所述主服务器运行相同的应用程序并在应用程序中执行相同操作,
把来自所述主服务器的响应传送到所述客户,并响应于所述主服务器的故障把连接端点从所述主服务器迁移到所述备份服务器;
其中所述备份服务器接收并处理所述客户请求,无需所述客户把服务器端点地址从所述主服务器改为所述备份服务器,以使连接端点迁移对所述客户透明。
11.如权利要求10中所述设备,进一步包括程序,配置成把客户请求传送到所述备份服务器,以保持所述备份服务器与所述主服务器的同步。
12.如权利要求11中所述设备,其中所述主服务器与所述备份服务器在应用中经历相同的状态转换,无需转移应用状态来实现透明连接故障切换。
13.如权利要求10中所述设备,进一步包括程序,配置成当引入新备份服务器复本时转变应用状态和通信协议状态,或使出现故障并修复的服务器复本返回服务。
14.如权利要求10中所述设备,其中所述通信协议包括执行于网络通信协议之上的面向连接的通信协议。
15.如权利要求14中所述设备,其中所述面向连接的通信协议包括传输控制协议(TCP)而所述网络通信协议包括Internet协议(IP)。
16.如权利要求14中所述设备,其中所述程序在桥子层中作为桥例程执行,位于所述面向连接的通信协议层和所述网络通信协议层之间,所述桥例程配置成把连接端点从所述主服务器迁移到所述备份服务器。
17.如权利要求16中所述设备,进一步包括针对保持在所述客户和所述服务器之间的每个容错性连接的、在所述桥层中保持的主服务器输出队列和备份服务器输出队列。
18.如权利要求16中所述设备,进一步包括所述桥层内的程序,配置成调整输出段的序列号、和输入段的确认,如所述主服务器从所述面向连接的通信协议接收的。
19.如权利要求16中所述设备,进一步包括所述桥层内的程序,配置成只在接收来自所述备份服务器对段的确认之后才确认来自所述客户的该面向连接的通信协议段。
20.如权利要求16中所述设备,进一步包括所述桥层内的编程,配置成在所述备份服务器上保持与所述主服务器发送的段相同的面向连接的通信协议段的拷贝,其尚未被所述客户确认。
21.如权利要求20中所述设备,其中所述桥例程配置成响应于所述客户对给定的面向连接通信协议段的确认,从保持在所述主服务器和所述备份服务器中的缓冲区中去掉所述给定的面向连接通信协议段。
22.如权利要求16中所述设备:
其中所述备份服务器中的所述桥例程配置有程序,该程序用于
用所述主服务器地址替换输出段的原始目的地址,即客户地址,
把来自所述输出消息的所述客户地址保持在所述面向连接的通信协议的选项字段中,及
用所述备份服务器地址替换输入段的原始目的地址,即主服务器地址。
23.如权利要求22中所述设备,其中所述备份服务器配置成以混杂模式在所述网络上运行,其中其接收来自所述客户计算机的所有数据报。
24.如权利要求23中所述设备,
其中所述面向连接的通信协议包括传输控制协议(TCP)而所述网络通信协议包括Internet协议(IP);
其中所述备份服务器桥抛弃不包括传输控制协议(TCP)段或不寻址到所述主服务器的任何数据报的净荷;
其中所述备份服务器桥用传输控制协议(TCP)段头内的所述备份服务器地址替换原始目的地字段,并把所述TCP段传递到所述备份服务器的所述TCP层;并且
其中在所述备份服务器处理所述传输控制协议(TCP)段时,所述备份服务器的所述TCP层假定所述客户把所述段直接发送给所述备份服务器。
25.如权利要求24中所述设备,
其中在所述主服务器桥接收所述备份服务器发送的传输控制协议(TCP)段时,它把所述段的传输控制协议(TCP)段净荷数据与所述主服务器输出队列中的数据匹配,并构建包括匹配净荷字节的新传输控制协议(TCP)段;并且
其中所述新传输控制协议(TCP)段在源字段中携带所述主服务器地址而在目的地字段中携带所述客户地址。
26.如权利要求24中所述设备,
其中所述备份服务器发送不包括来自所述备份服务器上的应用程序的数据字节的传输控制协议(TCP)段;
其中在所述主服务器桥接收所述备份服务器发送的传输控制协议(TCP)段时,它把序列号与所述主服务器输出队列中的序列号匹配并构建包括对应于匹配的序列号的来自所述主服务器输出队列的数据字节的新传输控制协议(TCP)段;并且
其中所述新传输控制协议(TCP)段在源字段中携带所述主服务器地址而在目的地字段中携带所述客户地址。
27.在一个服务器计算机中,所述服务器计算机执行网络通信协议之上的面向连接的通信协议以便在客户计算机和主服务器计算机间传送请求与响应,改进包括:
所述服务器计算机内的通信程序,用于执行以下操作
在所述网络上把客户请求传送到至少一个备份服务器,及
当所述主服务器出现故障后把连接端点从所述主服务器迁移到所述备份服务器,响应于此,所述备份服务器接收和响应所述客户请求,而所述客户仍然在所述网络之上寻址所述主服务器且未意识到所述服务器的故障和所述连接端点迁移。
28.一种保证网络中透明的连接故障切换的方法,包括:
在连到所述网络中的计算机上执行通信例程,使得可响应于与远程计算机的通信在第一计算机上执行计算;
在所述通信例程中,至少一个第二计算机保持与所述第一计算机同步,其中所述第二计算机与所述第一计算机执行相同的所述计算;及
在所述通信例程中,响应于所述第一计算机的故障把连接端点从所述第一计算机迁移到所述第二计算机,提供透明的连接故障切换,以使所述远程计算机仍然寻址所述第一计算机但与所述第二计算机通信,并且所述远程计算机没意识到所述服务器的故障和所述连接故障切换。
29.如权利要求28中所述方法,其中所述第一计算机和所述第二计算机被配置用于执行相同的服务器应用以便执行所述计算。
30.如权利要求29中所述方法,其中使用激活或半激活复制在所述第一和所述第二计算机二者上复制所述服务器应用。
31.如权利要求30中所述方法,其中所述第一计算机和所述第二计算机包括主服务器和备份服务器。
32.如权利要求31中所述方法,其中所述远程计算机包括所述服务器的客户。
33.如权利要求32中所述方法,其中所述通信例程配置成响应于保持可运行的至少一个所述服务器来保持所述客户与一个所述服务器的通信。
34.如权利要求31中所述方法,其中配置用于所述主服务器和所述备份服务器的所述通信例程,使得所述服务器应用经历同样的状态转换,无需转移应用状态来实现透明的连接故障切换。
35.如权利要求31中所述方法:
其中配置所述通信例程以便引入新的备份服务器或通过对所述新的备份服务器执行状态转移将出现故障并修复的服务器返回系统中;及
其中在所述状态转移中转移应用状态和通信基础结构状态。
36.如权利要求28中所述方法,其中所述通信例程包括用于执行网络通信协议之上的面向连接的通信协议的例程。
37.如权利要求36中所述方法,其中所述面向连接的通信协议包括传输控制协议(TCP)而所述网络通信协议包括Internet协议(IP)。
38.如权利要求36中所述方法,其中在所述面向连接的通信协议层和所述网络通信协议层之间的桥子层中执行的所述通信例程中,在桥例程中,执行所述连接端点迁移。
39.如权利要求38中所述方法,
其中所述桥例程包括主服务器桥例程和备份服务器桥例程;
其中所述第一计算机和所述第二计算机包括主服务器和备份服务器;及
其中所述远程计算机包括所述服务器的客户。
40.如权利要求39中所述方法,进一步包括在所述主服务器桥例程中保持主服务器输出队列和备份服务器输出队列。
41.如权利要求40中所述方法,其中对于所述客户和所述服务器之间的每一容错性连接,保持所述主服务器输出队列和所述备份服务器输出队列。
42.如权利要求40中所述方法,进一步包括将由所述主服务器的面向连接的通信协议层产生的净荷字节保持在所述主服务器桥内的所述主服务器输出队列中。
43.如权利要求40中所述方法,进一步包括把净荷字节保持在所述主服务器桥内的所述备份服务器输出队列中,所述字节被所述备份服务器传送给所述主服务器。
44.如权利要求43中所述方法,其中配置所述主服务器的所述通信例程以推迟确认客户的面向连接的通信协议段直到所述主服务器收到来自所述备份服务器的对该段的确认。
45.如权利要求44中所述方法,其中配置所述备份服务器的所述通信例程以保持由所述主服务器发送给所述客户而所述客户没确认的所有面向连接的通信协议段的拷贝。
46.如权利要求40中所述方法,其中配置所述主服务器和所述备份服务器的所述通信例程,以便响应于所述客户对收到面向连接的段的确认,从所述队列中去掉所述面向连接的段。
47.如权利要求39中所述方法,其中配置所述桥例程以同步所述主服务器和所述备份服务器使用的面向连接的通信协议序列号。
48.如权利要求39中所述方法,其中配置所述通信例程,以响应于所述主服务器的故障,把连接端点地址从所述主服务器修改为所述备份服务器,这样所述客户无须建立与所述备份服务器的新连接。
49.如权利要求39中所述方法,其中配置所述备份服务器的所述通信例程以保留在以前建立连接时所述主服务器与所述客户之间协商的最大段尺寸(MSS)和最大窗尺寸中。
50.如权利要求28中所述方法,
其中配置所述通信例程以便执行网络通信协议之上的面向连接的通信协议;
其中所述面向连接的通信协议是传输控制协议(TCP);
其中所述网络通信协议是Internet协议(IP);
其中通信桥例程被插入在TCP/IP堆栈的TCP层与IP层之间;及
其中由所述通信桥例程执行所述连接端点迁移。
51.如权利要求50中所述方法,其中配置所述通信桥例程以产生k+1至2k条消息用于请求、应答或确认,其中k代表服务器复本的数量。
52.如权利要求50中所述方法,其中配置所述通信桥例程以便执行所述同步和所述连接端点迁移,无需在每个服务器处的用户空间中的通信例程或代理。
53.如权利要求50中所述方法,其中配置所述通信桥例程以便执行所述透明连接故障切换,不用修改网络基础结构、服务器应用、客户应用、或所述客户的TCP/IP堆栈的传输控制协议(TCP)层和Internet协议(IP)层。
54.如权利要求50中所述方法,其中配置所述通信桥例程用于提供所述透明的连接故障切换,无需重演所述客户和所述主服务器间连接的整个历史。
55.如权利要求50中所述方法,其中配置所述通信桥例程以执行所述透明的连接故障切换,不用修改所述服务器的传输控制协议(TCP)层和Internet协议(IP)层并且不用修改所述客户的软件或硬件。
56.如权利要求50中所述方法,其中配置所述通信桥例程用于执行所述透明的连接故障切换,不需所述备份服务器把其Internet协议(IP)地址改为主服务器的地址以及发送一个无偿的地址解析协议(ARP)请求宣布它现在可用所述主服务器的Internet协议(IP)地址找到。
57.如权利要求28中所述方法,其中配置所述通信桥例程用于执行所述透明的连接故障切换,不需要所述客户与配置成路由所有来自所述客户的业务的调度器建立网络连接。
58.如权利要求28中所述方法,其中配置所述通信桥例程用于执行所述透明的连接故障切换,不使用配置成把包路由到合适服务器的前端层-4交换机。
59.如权利要求28中所述方法,其中配置所述通信桥例程用于执行所述透明的连接故障切换,不用阻止组播或前转来自所述客户的消息。
60.如权利要求28中所述方法,其中配置所述通信桥例程用于执行所述透明的连接故障切换,不需要主和备份服务器可运行以及在所述主服务器出现故障后在所述透明的连接故障切换期间合作。
61.如权利要求28中所述方法,其中配置所述通信桥例程用于执行所述透明的连接故障切换,不用使所有业务通过网络路由器中的业务重定向器。
62.如权利要求28中所述方法,其中配置所述通信桥例程用于执行所述透明的连接故障切换,不用执行用户空间中的协议栈遍历或上下文切换。
63.一种保证网络中透明的连接故障切换的方法,包括:
在连接到所述网络中的计算机上执行通信例程,使得响应于与客户的通信,可在主服务器上的服务器应用中执行计算;
在所述通信例程中,与执行所述服务器应用的至少一个备份服务器保持同步,其中所述备份服务器与所述主服务器应用执行相同计算;及
在所述通信例程中,响应于所述主服务器的故障,把连接端点从所述主服务器迁移到所述备份服务器,以提供透明的连接故障切换,以使所述客户仍然寻址所述主服务器但实际是与所述备份服务器之一通信,并且所述客户没意识到所述故障和所述故障切换;
其中使用激活或半激活复制来复制所述服务器;
其中所述主服务器和所述备份服务器属于所述网络中的同一子网;
其中所述主服务器和所述备份服务器应用经历了同样的状态转换,无需应用状态的转移以实现透明的连接故障切换;及
其中配置所述通信例程以便在至少一个所述服务器保持可运行时保持所述客户与一个所述服务器之间的通信。
64.一种方法,为在网络连接之上与远程计算机通信的两个或多个计算机提供容错性,并提供透明的连接故障故障切换,所述方法包括:
响应于来自远程计算机的通信,在所述两个或多个计算机上执行相同服务器应用的相同计算;
在Internet协议(IP)之上使用传输控制协议(TCP);及
当一个所述计算机出现故障时,迁移所述计算机的连接端点,其中其他所述计算机继续与所述远程计算机通信。
65.如权利要求64中所述方法,其中所述方法不用修改所述远程计算机上执行的应用、或所述远程计算机的传输控制协议/Internet协议(TCP/IP)堆栈、或所述远程计算机的其它软件或硬件,以实现所述透明的连接故障切换。
66.如权利要求64中所述方法,其中所述远程计算机与所述两个或多个计算机间的通信使用传输控制协议/Internet协议(TCP/IP),不需要专用于提供所述透明的连接故障切换的通信交换机或路由器。
67.如权利要求64中所述方法,其中所述透明的连接故障切换包括检测所述两个或多个计算机中的故障,并从所述故障恢复以与所述远程计算机继续通信,不需所述远程计算机采取任何纠正错误的行动。
68.如权利要求67中所述方法,
其中使用所述透明的连接故障切换的所述故障恢复足够快;
其中当所述传输控制协议(TCP)、所述Internet协议(IP)和所述远程计算机的操作没有被所述故障毁坏时,所述足够快的恢复得以实现;并且在标准的传输控制协议/Internet协议(TCP/IP)中需要两条消息的往返请求/应答或消息/确认,需要k+1个消息到最多2k个消息,其中k是执行所述相同运算的所述两个或多个计算机的数量。
69.如权利要求64中所述方法,其中所述两个或多个计算机包括与作为服务器与所述远程计算机通信的客户。
70.如权利要求64中所述方法,其中配置所述两个或多个计算机,以便在与特定远程计算机通信时作为客户运行,并且在与其它远程计算机通信时作为服务器运行。
71.如权利要求64中所述方法,其中配置所述两个或多个计算机以在没有它们之间的客户/服务器关系的情况下,传送消息给所述远程计算机。
72.如权利要求64中所述方法,其中在插入传输控制协议/Internet协议(TCP/IP)堆栈中的桥层内执行用于保持所述连接的例程,在传输控制协议(TCP)层和Internet协议(IP)层之间,无需修改所述TCP层或所述IP层。
73.如权利要求64中所述方法,其中在所述两个或多个计算机之间,也在所述两个或多个计算机与所述远程计算机之间,保持所述传输控制协议(TCP)层和所述Internet协议(IP)层的同步,以便在所述两个或多个计算机之一发生故障时不毁坏所述TCP层和所述IP层的操作,其中所述两个或多个计算机之一中的故障需要所述两个或多个计算机中的另一个来进行TCP/IP操作。
74.如权利要求64中所述方法,其中所述两个或多个计算机接收至少一个所述远程计算机传输到所述两个或多个计算机的所有消息,或者通过使用混杂接收模式直接接收,或者通过直接收到所述消息的所述两个或多个计算机之一重传。
75.如权利要求64中所述方法,其中配置所述两个或多个计算机之一以作为主计算机运行,而配置所述两个或多个计算机中其他的计算机以作为备份计算机运行。
76.如权利要求75中所述方法,其中配置用于保持任一所述备份计算机内的连接的所述桥例程,以传输数据到所述主计算机而不是所述远程计算机。
77.如权利要求76中所述方法,其中任一所述备份计算机向所述主计算机传输所述数据以及所述备份计算机的所述传输控制协议(TCP)层设法将所述数据传给其的所述远程计算机的地址。
78.如权利要求77中所述方法:
其中当所述主计算机的所述传输控制协议(TCP)层设法向所述远程计算机传送数据时,所述主计算机的所述传输控制协议(TCP)层把序列号附着到所述数据;
其中当所述备份计算机的所述TCP层设法向所述远程计算机传送数据时所述备份计算机的所述传输控制协议(TCP)层把序列号附着到所述数据;
其中由所述主计算机的所述传输控制协议(TCP)层附着到所述数据的所述序列号可能与所述备份计算机的所述TCP层附着到对应数据的所述序列号不同。
79.如权利要求78中所述方法:
其中所述主计算机针对与每个所述远程计算机的每一容错性连接保持两个缓冲区;
其中第一缓冲区被配置用于包括所述主计算机的所述传输控制协议(TCP)层设法传输的数据字节,同时每个数据字节有一序列号;及
其中第二缓冲区被配置用于包括所述备份计算机的所述传输控制协议(TCP)层设法传输的数据字节,同时每个数据字节有一序列号。
80.如权利要求79中所述方法,其中在调整所述序列号的所述主计算机的桥层中执行用于保持所述容错性连接的所述例程,使得当所述主计算机的所述桥层把所述第一缓冲区中的数据与所述第二缓冲区中的数据相比较时,所述桥层比较具有相同的调整过的序列号的数据及预计为相同数据的数据。
81.如权利要求80中所述方法,其中所述主计算机的所述桥层被配置用于比较所述第一缓冲区中的所述数据字节的所述序列号和第二缓冲区中的所述数据字节的所述序列号,并且其中,如果所述桥层在所述缓冲区中发现具有相同序列号的不同数据,那么所述桥层向故障处理器报告错误。
82.如权利要求81中所述方法,其中响应于在所述第一缓冲区和所述第二缓冲区中发现具有相同序列号的相同数据字节,所述主计算机的所述桥层把所述数据字节传给所述远程计算机。
83.如权利要求78中所述方法:
其中所述主计算机针对与每个所述远程计算机的每个容错性连接保持两个缓冲区;
其中第一缓冲区被配置用于包括所述主计算机的所述TCP层设法传输给所述远程计算机的数据字节,同时每个数据字节有一序列号;及
其中第二缓冲区被配置用于包括所述备份计算机的所述TCP层设法传输的所述数据字节的序列号。
84.如权利要求83中所述方法,其中响应于在所述第一缓冲区和所述第二缓冲区中发现相同序列号,所述主计算机的所述桥层把与第一缓冲区中的所述序列号关联的所述数据字节传给所述远程计算机。
85.如权利要求78中所述方法:
其中配置所述主计算机的所述传输控制协议(TCP)层以传送数据或确认到所述远程计算机;
其中所述主计算机的所述传输控制协议(TCP)层确定确认序列号,使得所述主计算机接收到由所述远程计算机在序列号小于或等于所述确认序列号的所述容错性连接上所发送的所有数据字节;
其中当所述备份计算机的所述TCP层设法传送数据到所述远程计算机时,所述备份计算机的所述传输控制协议(TCP)层确定确认序列号,使得所述备份计算机已接收由所述远程计算机在序列号小于或等于所述确认序列号的所述容错性连接上所发送的所有数据字节;以及
其中所述主计算机的所述桥层把由所述主计算机的所述传输控制协议(TCP)层和所述备份计算机的所述TCP层确定的确认序列号中较小的传输给远程计算机。
86.如权利要求85中所述方法,其中当所述远程计算机传输确认序列号以使所述远程计算机收到所述主计算机在序列号小于或等于所述确认序列号的所述容错性连接上发送的所有数据字节时,在所述确认序列号被传递到所述主计算机的所述传输控制协议(TCP)层之前,由所述主计算机的所述桥层调整所述确认序列号,使得所述主计算机的所述TCP层从其缓冲区中抛弃所述远程计算机正在确认的所有数据字节。
87.如权利要求86中所述方法,其中当所述远程计算机传输确认序列号以使所述远程计算机收到所述主计算机在序列号小于或等于所述确认序列号的所述容错性连接上发送的所有数据字节时,在所述确认序列号被传递到所述备份计算机的所述传输控制协议(TCP)层之前,由所述备份计算机的所述桥层调整所述确认序列号,使得所述备份计算机的所述TCP层从其缓冲区中抛弃所述远程计算机正在确认的所有数据字节。
88.如权利要求78中所述方法,
其中当所述主计算机的所述传输控制协议(TCP)层设法向所述远程计算机传送数据或确认时,所述主计算机的所述TCP层确定窗尺寸,以使所述主计算机愿意接受具有该窗内的序列号的来自所述容错性连接上的所述远程计算机的所有TCP段;
其中当一个所述备份计算机的所述传输控制协议(TCP)层设法向所述远程计算机传送数据或确认时,所述一个所述备份计算机的所述TCP层确定窗尺寸,以使所述一个所述备份计算机愿意接受具有该窗内的序列号的来自所述容错性连接上的所述远程计算机的所有TCP段;及
其中所述主计算机的所述桥层被配置用于把由所述主计算机的所述传输控制协议(TCP)层和所述一个或多个备份计算机的所述TCP层确定的窗尺寸中较小的传输给所述远程计算机。
89.如权利要求79中所述方法,其中当所述主计算机确定所述备份计算机出现故障时,所述主计算机把所述第一缓冲区中存在的所有数据传输给所述远程计算机;并且随后把所有数据传输给所述远程计算机,所述所有数据随后由所述主计算机的所述传输控制协议(TCP)层传递给所述主计算机的所述桥层,并且寻址到在所述容错性连接上的所述远程计算机。
90.如权利要求78中所述方法,其中当所述备份计算机之一确定所述主计算机出现故障时,所述备份计算机之一把所有数据传输给所述远程计算机,所述所有数据由所述备份计算机传输到所述出现故障的主计算机的所述桥子层,并且寻址到在所述容错性连接的所述远程计算机并且未被所述远程计算机确认;并且随后把所有数据传送给所述远程计算机,所述所有数据随后由所述备份计算机的所述传输控制协议(TCP)层传递给所述备份计算机的所述桥层,并且寻址到在所述容错性连接上的所述远程计算机。
91.如权利要求90中所述方法,其中当一个新的计算机或一个出现故障并修复的计算机,作为所述备份计算机启动参与所述传输控制协议(TCP)连接时,作为单个原子行动,所述主计算机检查其应用状态,且还检查其TCP层状态,并把所述检查点传送到所述新的或所述修复的备份计算机,并且其中作为单个原子行动所述新的或所述修复的备份计算机安装所述应用状态和所述TCP层状态。
92.如权利要求91中所述方法,其中将所述检查点传送所述新的或所述修复的备份计算机的所述主计算机,不把从所述主计算机的所述传输控制协议(TCP)层接收的任何数据传输给所述远程计算机直到从所述新的或所述修复的备份计算机收到匹配数据为止。
93.如权利要求91中所述方法,其中当将所述检查点传送到所述新的或所述修复的备份计算机时,所述主计算机还传送所述主计算机中的所述桥使用的序列号偏移以调整用于从所述主计算机中的所述TCP层接收的数据字节的所述序列号。
94.如权利要求93中所述方法,其中当从所述主计算机收到所述序列号偏移时,所述备份计算机改变所述备份计算机的所述TCP层中的序列号,使得在所述数据字节的所述序列号被所述主计算机桥调整之后,由所述备份计算机的所述TCP层传递给所述桥的所述数据字节与由所述主计算机的所述TCP层传递给所述桥的所述数据字节有正好相同的序列号。
95.如权利要求93中所述方法,其中当从所述主计算机收到所述序列号偏移时,配置所述备份计算机,使所述备份计算机中的所述桥使用所述偏移来调整附在从所述备份计算机的所述TCP层收到的所述数据字节的所述序列号,以使在所述数据字节的所述序列号被所述主计算机的所述桥调整之后,所述数据字节的序列号与由所述主计算机的所述TCP层传递给所述桥的所述数据正好相同;并且还调整从所述远程计算机接收的所述确认序列号,以使所述备份计算机的所述TCP层从其缓冲区中抛弃所述远程计算机确认的所有数据。
96.如权利要求93中所述方法:
其中当所述主计算机已捕获所述传输控制协议(TCP)层的状态时,修改对应于所述序列号的所捕获的状态的部分,使得在所述数据字节的所述序列号被所述主计算机的所述桥调整之后,由所述备份计算机的所述TCP层传递给所述桥的所述数据字节与由所述主计算机的所述TCP层传递给所述桥的所述数据字节有正好相同的序列号;及
其中所述修改可在所述主计算机中执行,或可替换地,在所述备份计算机中执行。
CNA2004800163681A 2003-06-11 2004-06-08 透明的tcp连接故障切换 Pending CN101027644A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/460,761 US7251745B2 (en) 2003-06-11 2003-06-11 Transparent TCP connection failover
US10/460,761 2003-06-11

Publications (1)

Publication Number Publication Date
CN101027644A true CN101027644A (zh) 2007-08-29

Family

ID=33538970

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2004800163681A Pending CN101027644A (zh) 2003-06-11 2004-06-08 透明的tcp连接故障切换

Country Status (4)

Country Link
US (1) US7251745B2 (zh)
EP (2) EP1665051B1 (zh)
CN (1) CN101027644A (zh)
WO (1) WO2005025289A2 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105791251A (zh) * 2014-12-26 2016-07-20 中国移动通信集团公司 一种网络业务迁移方法、装置和路由器
CN105900408A (zh) * 2014-01-17 2016-08-24 高通股份有限公司 用于从wan设备向lan客户端传播sip/p-cscf地址变化的技术
CN106953736A (zh) * 2016-01-07 2017-07-14 阿里巴巴集团控股有限公司 故障切换方法和装置
CN109412940A (zh) * 2018-10-23 2019-03-01 迈普通信技术股份有限公司 路由器管理方法及路由器管理系统
CN109617761A (zh) * 2018-12-10 2019-04-12 北京明朝万达科技股份有限公司 一种主备服务器切换方法及装置

Families Citing this family (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9603582D0 (en) 1996-02-20 1996-04-17 Hewlett Packard Co Method of accessing service resource items that are for use in a telecommunications system
US7213063B2 (en) * 2000-01-18 2007-05-01 Lucent Technologies Inc. Method, apparatus and system for maintaining connections between computers using connection-oriented protocols
US7565566B2 (en) * 2003-04-23 2009-07-21 Dot Hill Systems Corporation Network storage appliance with an integrated switch
US7627780B2 (en) 2003-04-23 2009-12-01 Dot Hill Systems Corporation Apparatus and method for deterministically performing active-active failover of redundant servers in a network storage appliance
US7401254B2 (en) * 2003-04-23 2008-07-15 Dot Hill Systems Corporation Apparatus and method for a server deterministically killing a redundant server integrated within the same network storage appliance chassis
US7661014B2 (en) * 2003-04-23 2010-02-09 Dot Hill Systems Corporation Network storage appliance with integrated server and redundant storage controllers
US20050086342A1 (en) * 2003-09-19 2005-04-21 Andrew Burt Techniques for client-transparent TCP migration
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US7359339B2 (en) * 2003-12-23 2008-04-15 Lenovo Singapore Pte Ltd Smart access point
US20050283529A1 (en) * 2004-06-22 2005-12-22 Wan-Yen Hsu Method and apparatus for providing redundant connection services
US7813263B2 (en) * 2004-06-30 2010-10-12 Conexant Systems, Inc. Method and apparatus providing rapid end-to-end failover in a packet switched communications network
US8739274B2 (en) 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
ATE535078T1 (de) 2004-07-23 2011-12-15 Citrix Systems Inc Verfahren und system zur sicherung von zugriff aus der ferne auf private netze
AU2005266943C1 (en) 2004-07-23 2011-01-06 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
US7376134B2 (en) * 2004-08-02 2008-05-20 Novell, Inc. Privileged network routing
US8122280B2 (en) * 2004-08-26 2012-02-21 Open Invention Network, Llc Method and system for providing high availability to computer applications
TW200609721A (en) * 2004-09-03 2006-03-16 Inventec Corp Redundancy control system and method thereof
US8761202B2 (en) * 2004-09-27 2014-06-24 Raghupathy Sivakumar Architecture for dynamically adaptive transport protocols
US7583670B2 (en) * 2004-10-14 2009-09-01 Cisco Technology, Inc. Method and system for managing network traffic based on matching criteria
US7808889B1 (en) * 2004-11-24 2010-10-05 Juniper Networks, Inc. Silent failover from a primary control unit to a backup control unit of a network device
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8706877B2 (en) * 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
US8700695B2 (en) 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
US7668962B2 (en) * 2005-02-07 2010-02-23 Symantec Operating Corporation System and method for connection failover using redirection
US8543542B2 (en) * 2005-02-07 2013-09-24 Mimosa Systems, Inc. Synthetic full copies of data and dynamic bulk-to-brick transformation
US7870416B2 (en) * 2005-02-07 2011-01-11 Mimosa Systems, Inc. Enterprise service availability through identity preservation
US8271436B2 (en) 2005-02-07 2012-09-18 Mimosa Systems, Inc. Retro-fitting synthetic full copies of data
US7657780B2 (en) * 2005-02-07 2010-02-02 Mimosa Systems, Inc. Enterprise service availability through identity preservation
US8161318B2 (en) * 2005-02-07 2012-04-17 Mimosa Systems, Inc. Enterprise service availability through identity preservation
US8918366B2 (en) * 2005-02-07 2014-12-23 Mimosa Systems, Inc. Synthetic full copies of data and dynamic bulk-to-brick transformation
US8275749B2 (en) * 2005-02-07 2012-09-25 Mimosa Systems, Inc. Enterprise server version migration through identity preservation
US8799206B2 (en) * 2005-02-07 2014-08-05 Mimosa Systems, Inc. Dynamic bulk-to-brick transformation of data
US7778976B2 (en) * 2005-02-07 2010-08-17 Mimosa, Inc. Multi-dimensional surrogates for data management
US7917475B2 (en) * 2005-02-07 2011-03-29 Mimosa Systems, Inc. Enterprise server version migration through identity preservation
US8812433B2 (en) * 2005-02-07 2014-08-19 Mimosa Systems, Inc. Dynamic bulk-to-brick transformation of data
US8572605B1 (en) * 2005-04-28 2013-10-29 Azul Systems, Inc. Source switching of virtual machines
US7801135B2 (en) * 2005-05-19 2010-09-21 Cisco Technology, Inc. Transport protocol connection synchronization
US7751311B2 (en) * 2005-05-19 2010-07-06 Cisco Technology, Inc. High availability transport protocol method and apparatus
US20060271811A1 (en) * 2005-05-26 2006-11-30 David Horton Systems and methods for a fault tolerant voice-over-internet protocol (voip) architecture
WO2007069095A2 (en) * 2005-07-18 2007-06-21 Broadcom Israel R & D Method and system for transparent tcp offload
CA2514039A1 (en) * 2005-07-28 2007-01-28 Third Brigade Inc. Tcp normalization engine
US8082468B1 (en) * 2008-12-15 2011-12-20 Open Invention Networks, Llc Method and system for providing coordinated checkpointing to a group of independent computer applications
US8078910B1 (en) 2008-12-15 2011-12-13 Open Invention Network, Llc Method and system for providing coordinated checkpointing to a group of independent computer applications
US8752049B1 (en) 2008-12-15 2014-06-10 Open Invention Network, Llc Method and computer readable medium for providing checkpointing to windows application groups
US8195722B1 (en) 2008-12-15 2012-06-05 Open Invention Network, Llc Method and system for providing storage checkpointing to a group of independent computer applications
US7823153B1 (en) 2005-09-30 2010-10-26 Symantec Corporation System and method for detecting and logging in-line synchronization primitives in application program code
US7930684B2 (en) * 2005-10-12 2011-04-19 Symantec Operating Corporation System and method for logging and replaying asynchronous events
US8117600B1 (en) 2005-12-29 2012-02-14 Symantec Operating Corporation System and method for detecting in-line synchronization primitives in binary applications
US7627728B1 (en) 2005-12-29 2009-12-01 Symantec Operating Corporation System and method for efficient generation of application snapshots
US7921184B2 (en) 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
US8837275B2 (en) * 2006-02-09 2014-09-16 International Business Machines Corporation System, method and program for re-routing internet packets
US8447802B2 (en) * 2006-03-08 2013-05-21 Riverbed Technology, Inc. Address manipulation to provide for the use of network tools even when transaction acceleration is in use over a network
US7831686B1 (en) * 2006-03-31 2010-11-09 Symantec Operating Corporation System and method for rapidly ending communication protocol connections in response to node failure
US7797565B1 (en) 2006-04-04 2010-09-14 Symantec Operating Corporation System and method for maintaining communication protocol connections during failover
JP4939102B2 (ja) * 2006-04-21 2012-05-23 株式会社日立製作所 ネットワークブート計算機システムの高信頼化方法
US7487383B2 (en) * 2006-06-29 2009-02-03 Dssdr, Llc Data transfer and recovery process
CN101114892A (zh) * 2006-07-28 2008-01-30 华为技术有限公司 一种报文备份方法
US7725764B2 (en) * 2006-08-04 2010-05-25 Tsx Inc. Failover system and method
CN101132347A (zh) * 2006-08-24 2008-02-27 华为技术有限公司 一种实现tcp连接备份的系统及方法
US9137287B2 (en) * 2006-08-28 2015-09-15 Avaya Inc. High availability for voice enabled applications
US8881011B2 (en) * 2006-12-05 2014-11-04 Crackle, Inc. Tool for creating content for video sharing platform
JP5034495B2 (ja) * 2006-12-27 2012-09-26 日本電気株式会社 ストレージシステムとプログラム並びに方法
US20080235382A1 (en) * 2007-01-22 2008-09-25 The Regents Of The University Of Colorado Fault tolerant tcp splice systems and methods
US7836360B2 (en) * 2007-04-09 2010-11-16 International Business Machines Corporation System and method for intrusion prevention high availability fail over
US7716523B2 (en) * 2007-05-03 2010-05-11 Symantec Corporation End-to-end transactional protection for requests in a web application
US7634684B2 (en) * 2007-05-29 2009-12-15 International Business Machines Corporation Intelligent configuration for restarting failed application server instances
GB2450748B (en) * 2007-07-06 2010-12-29 Displaylink Connection between a client device and multiple host devices
US9112901B2 (en) * 2007-11-20 2015-08-18 Radware, Ltd. Method and system for providing connection resiliency
CN101459926B (zh) * 2007-12-14 2011-02-16 华为技术有限公司 保证业务数据传输的方法、网元设备及网络系统
JP5012485B2 (ja) * 2007-12-19 2012-08-29 富士通株式会社 冗長方法及びスイッチ装置
US7971099B2 (en) * 2008-04-02 2011-06-28 International Business Machines Corporation Method for enabling faster recovery of client applications in the event of server failure
JP5187249B2 (ja) * 2008-07-17 2013-04-24 富士通株式会社 冗長化システム用コネクションリカバリ装置,方法および処理プログラム
US8341631B2 (en) 2009-04-10 2012-12-25 Open Invention Network Llc System and method for application isolation
US9354977B1 (en) * 2008-12-15 2016-05-31 Open Invention Network Llc System and method for hybrid kernel- and user-space incremental and full checkpointing
US10019327B1 (en) 2008-12-15 2018-07-10 Open Invention Network Llc System and method for hybrid kernel- and user-space incremental and full checkpointing
US8281317B1 (en) 2008-12-15 2012-10-02 Open Invention Network Llc Method and computer readable medium for providing checkpointing to windows application groups
US8880473B1 (en) 2008-12-15 2014-11-04 Open Invention Network, Llc Method and system for providing storage checkpointing to a group of independent computer applications
US8745442B1 (en) 2011-04-28 2014-06-03 Open Invention Network, Llc System and method for hybrid kernel- and user-space checkpointing
US9256496B1 (en) * 2008-12-15 2016-02-09 Open Invention Network, Llc System and method for hybrid kernel—and user-space incremental and full checkpointing
US8752048B1 (en) 2008-12-15 2014-06-10 Open Invention Network, Llc Method and system for providing checkpointing to windows application groups
US8826070B1 (en) 2008-12-15 2014-09-02 Open Invention Network, Llc Method and system for providing storage checkpointing to a group of independent computer applications
US11538078B1 (en) 2009-04-10 2022-12-27 International Business Machines Corporation System and method for usage billing of hosted applications
US9058599B1 (en) 2009-04-10 2015-06-16 Open Invention Network, Llc System and method for usage billing of hosted applications
US8238538B2 (en) 2009-05-28 2012-08-07 Comcast Cable Communications, Llc Stateful home phone service
US8578138B2 (en) 2009-08-31 2013-11-05 Intel Corporation Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode
US8887144B1 (en) 2009-09-04 2014-11-11 Amazon Technologies, Inc. Firmware updates during limited time period
US9565207B1 (en) 2009-09-04 2017-02-07 Amazon Technologies, Inc. Firmware updates from an external channel
US10177934B1 (en) 2009-09-04 2019-01-08 Amazon Technologies, Inc. Firmware updates inaccessible to guests
US8214653B1 (en) 2009-09-04 2012-07-03 Amazon Technologies, Inc. Secured firmware updates
US8601170B1 (en) 2009-09-08 2013-12-03 Amazon Technologies, Inc. Managing firmware update attempts
US8971538B1 (en) 2009-09-08 2015-03-03 Amazon Technologies, Inc. Firmware validation from an external channel
US8959611B1 (en) 2009-09-09 2015-02-17 Amazon Technologies, Inc. Secure packet management for bare metal access
US8300641B1 (en) * 2009-09-09 2012-10-30 Amazon Technologies, Inc. Leveraging physical network interface functionality for packet processing
US8381264B1 (en) 2009-09-10 2013-02-19 Amazon Technologies, Inc. Managing hardware reboot and reset in shared environments
US8335853B2 (en) * 2009-12-17 2012-12-18 Sonus Networks, Inc. Transparent recovery of transport connections using packet translation techniques
CN102215271A (zh) * 2010-04-07 2011-10-12 上海交通大学医学院附属瑞金医院 一种基于ftp的容灾服务器寻址处理方法及装置
US8504526B2 (en) 2010-06-04 2013-08-06 Commvault Systems, Inc. Failover systems and methods for performing backup operations
US11449394B2 (en) 2010-06-04 2022-09-20 Commvault Systems, Inc. Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources
US8612639B1 (en) * 2010-11-04 2013-12-17 The Boeing Company Methods and systems for emulating failed aircraft units across multiple communications bus sources
CN102035687B (zh) 2011-01-06 2012-10-17 华为技术有限公司 Tcp连接的备份方法及其设备
US8499190B2 (en) * 2011-03-09 2013-07-30 I/O Interconnect Inc. Portable device and backup method thereof
US8521860B2 (en) 2011-03-29 2013-08-27 Microsoft Corporation Providing a witness service
US11625307B1 (en) 2011-04-28 2023-04-11 International Business Machines Corporation System and method for hybrid kernel- and user-space incremental and full checkpointing
US11307941B1 (en) 2011-04-28 2022-04-19 Open Invention Network Llc System and method for hybrid kernel- and user-space incremental and full checkpointing
US20120324056A1 (en) * 2011-06-20 2012-12-20 David Miles Method and apparatus for hitless redundancy in data streaming
CN102752209B (zh) * 2012-07-09 2015-09-02 杭州华三通信技术有限公司 实现备份服务的地址快速切换方法及路由转发设备
CN103631532B (zh) 2012-08-29 2016-06-15 国际商业机器公司 用于在数据存储系统中访问数据的方法和设备
CN103838635B (zh) * 2012-11-23 2016-09-28 中国银联股份有限公司 主机健康度检测方法
US9037898B2 (en) 2012-12-18 2015-05-19 International Business Machines Corporation Communication channel failover in a high performance computing (HPC) network
CN104782081B (zh) 2013-01-27 2019-12-03 慧与发展有限责任合伙企业 用于转移套接字状态的系统以及用于迁移tcp连接的方法
US9483361B2 (en) 2013-05-08 2016-11-01 Commvault Systems, Inc. Information management cell with failover management capability
US9319476B2 (en) * 2013-05-28 2016-04-19 Verizon Patent And Licensing Inc. Resilient TCP splicing for proxy services
US9110864B2 (en) * 2013-06-25 2015-08-18 International Business Machines Corporation Fault tolerance solution for stateful applications
US9882980B2 (en) 2013-10-22 2018-01-30 International Business Machines Corporation Managing continuous priority workload availability and general workload availability between sites at unlimited distances for products and services
US9465855B2 (en) 2013-10-22 2016-10-11 International Business Machines Corporation Maintaining two-site configuration for workload availability between sites at unlimited distances for products and services
US20150201026A1 (en) * 2014-01-10 2015-07-16 Data Accelerator Ltd. Connection virtualization
US9483369B2 (en) * 2014-01-24 2016-11-01 Verizon Patent And Licensing Inc. Method and apparatus for failover detection and recovery using gratuitous address resolution messages
CN103942127B (zh) * 2014-02-21 2016-08-24 上海华力微电子有限公司 一种wat测试的备份结构及备份方法
US9563518B2 (en) * 2014-04-02 2017-02-07 Commvault Systems, Inc. Information management by a media agent in the absence of communications with a storage manager
US9912632B2 (en) * 2014-10-24 2018-03-06 Sap Se High availability internet protocol address solution for disaster recovery
US9722949B2 (en) 2015-02-27 2017-08-01 Google Inc. Reducing power utilization by transferring communication sessions from a main processor
US10747630B2 (en) 2016-09-30 2020-08-18 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including operations by a master monitor node
CN113055373A (zh) * 2017-03-30 2021-06-29 华为技术有限公司 数据传输方法和通信设备
US10873498B2 (en) * 2017-10-23 2020-12-22 Hewlett Packard Enterprise Development Lp Server network interface level failover
US10585761B2 (en) * 2018-02-01 2020-03-10 EMC IP Holding Company LLC Methods and systems for energy efficient data backup
RU2696330C1 (ru) * 2018-07-31 2019-08-01 Федеральное государственное казенное военное образовательное учреждение высшего образования "Краснодарское высшее военное училище имени генерала армии С.М. Штеменко" Министерство обороны Российской Федерации Способ защиты вычислительных сетей
CN109347933B (zh) * 2018-09-29 2021-07-20 卓米私人有限公司 一种建立连接的方法和装置
CN109495570B (zh) * 2018-11-20 2022-04-26 锐捷网络股份有限公司 采样报文的转发方法、装置及数据中心
US11200124B2 (en) 2018-12-06 2021-12-14 Commvault Systems, Inc. Assigning backup resources based on failover of partnered data storage servers in a data storage management system
US11057478B2 (en) * 2019-05-23 2021-07-06 Fortinet, Inc. Hybrid cluster architecture for reverse proxies
CN111464514A (zh) * 2020-03-19 2020-07-28 烽火通信科技股份有限公司 一种tcp热备份方法及系统
US11099956B1 (en) 2020-03-26 2021-08-24 Commvault Systems, Inc. Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations
US11645175B2 (en) 2021-02-12 2023-05-09 Commvault Systems, Inc. Automatic failover of a storage manager
US12009975B2 (en) 2022-07-22 2024-06-11 Dell Products L.P. Method and system for generating an upgrade recommendation for a communication network
US12032473B2 (en) * 2022-11-28 2024-07-09 Dell Products Moving an application context to the cloud during maintenance
US12093744B2 (en) 2023-01-25 2024-09-17 Dell Products L.P. System and method for instantiating twin applications

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513314A (en) * 1995-01-27 1996-04-30 Auspex Systems, Inc. Fault tolerant NFS server system and mirroring protocol
JP3224745B2 (ja) * 1996-07-09 2001-11-05 株式会社日立製作所 高信頼化ネットワークシステム及びサーバ切り替え方法
US6061807A (en) * 1997-06-27 2000-05-09 International Business Machines Corporation Methods systems and computer products for error recovery of endpoint nodes
DE19835216B4 (de) * 1998-08-05 2005-10-27 Systemonic Ag Prozessor und Verfahren zur parallelen Datenverarbeitung
US6247141B1 (en) * 1998-09-24 2001-06-12 Telefonaktiebolaget Lm Ericsson (Publ) Protocol for providing replicated servers in a client-server system
US20010052084A1 (en) * 1998-11-10 2001-12-13 Jiandoug Huang Apparatus and methods for providing fault tolerance of networks and network interface cards
US7213063B2 (en) 2000-01-18 2007-05-01 Lucent Technologies Inc. Method, apparatus and system for maintaining connections between computers using connection-oriented protocols
US6718383B1 (en) * 2000-06-02 2004-04-06 Sun Microsystems, Inc. High availability networking with virtual IP address failover
US6661799B1 (en) * 2000-09-13 2003-12-09 Alcatel Usa Sourcing, L.P. Method and apparatus for facilitating peer-to-peer application communication
US6760861B2 (en) * 2000-09-29 2004-07-06 Zeronines Technology, Inc. System, method and apparatus for data processing and storage to provide continuous operations independent of device failure or disaster
US6871296B2 (en) * 2000-12-29 2005-03-22 International Business Machines Corporation Highly available TCP systems with fail over connections
TWI220821B (en) 2001-04-26 2004-09-01 Accton Technology Corp Zero-loss web service system and method
US7111035B2 (en) * 2001-12-26 2006-09-19 Hewlett-Packard Development Company, L.P. Fault tolerance associations for IP transport protocols
US7076555B1 (en) * 2002-01-23 2006-07-11 Novell, Inc. System and method for transparent takeover of TCP connections between servers

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105900408A (zh) * 2014-01-17 2016-08-24 高通股份有限公司 用于从wan设备向lan客户端传播sip/p-cscf地址变化的技术
CN105791251A (zh) * 2014-12-26 2016-07-20 中国移动通信集团公司 一种网络业务迁移方法、装置和路由器
CN105791251B (zh) * 2014-12-26 2019-02-05 中国移动通信集团公司 一种网络业务迁移方法、装置和路由器
CN106953736A (zh) * 2016-01-07 2017-07-14 阿里巴巴集团控股有限公司 故障切换方法和装置
CN106953736B (zh) * 2016-01-07 2020-02-18 阿里巴巴集团控股有限公司 故障切换方法和装置
CN109412940A (zh) * 2018-10-23 2019-03-01 迈普通信技术股份有限公司 路由器管理方法及路由器管理系统
CN109412940B (zh) * 2018-10-23 2022-02-01 迈普通信技术股份有限公司 路由器管理方法及路由器管理系统
CN109617761A (zh) * 2018-12-10 2019-04-12 北京明朝万达科技股份有限公司 一种主备服务器切换方法及装置

Also Published As

Publication number Publication date
WO2005025289A2 (en) 2005-03-24
US20040268175A1 (en) 2004-12-30
EP1665051A4 (en) 2011-01-05
EP2752767B1 (en) 2016-05-25
EP1665051B1 (en) 2015-10-14
EP1665051A2 (en) 2006-06-07
EP2752767A1 (en) 2014-07-09
US7251745B2 (en) 2007-07-31
WO2005025289A3 (en) 2007-02-22

Similar Documents

Publication Publication Date Title
CN101027644A (zh) 透明的tcp连接故障切换
US9648147B2 (en) System and method for TCP high availability
US7672223B2 (en) Method and apparatus for replicating a transport layer protocol stream
US6853617B2 (en) System and method for TCP connection protection switching
CN101022451B (zh) 数据通信中连接状态的同步方法及其应用的通信节点
US7673038B2 (en) Method, apparatus and system for maintaining connections between computers using connection-oriented protocols
US7929422B2 (en) Method of moving a transport connection among network hosts
US7751311B2 (en) High availability transport protocol method and apparatus
US7111035B2 (en) Fault tolerance associations for IP transport protocols
US7801135B2 (en) Transport protocol connection synchronization
Sultan et al. Migratory TCP: Connection migration for service continuity in the Internet
CN100399282C (zh) 智能网络适配器的状态恢复及故障修复
CN100369026C (zh) 用于客户-服务器通信系统的事务加速器
CN101536417B (zh) 消除冗余连接的方法
Watson Timer-based mechanisms in reliable transport protocol connection management
EP1829267B1 (en) Redundant l2tp end points
CN103975563B (zh) 用于单个设备的无损连接故障切换
CN103975318B (zh) 用于镜像设备的无损连接故障切换
US7289433B1 (en) Method and system for providing robust connections in networking applications
Koch et al. Transparent TCP Connection Failover.
CN102006301B (zh) 一种多终端之间流控传输协议偶联的移动控制方法
Paris et al. A high performance erlang TCP/IP stack
Ayuso et al. FT-FW: efficient connection failover in cluster-based stateful firewalls
Vanit-Anunchai Towards formal modelling and analysis of SCTP connection management
Paris et al. Developing a functional TCP/IP stack oriented towards TCP connection replication

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication