CN1739098A - 智能网络适配器的状态恢复及故障修复 - Google Patents

智能网络适配器的状态恢复及故障修复 Download PDF

Info

Publication number
CN1739098A
CN1739098A CN03825898.6A CN03825898A CN1739098A CN 1739098 A CN1739098 A CN 1739098A CN 03825898 A CN03825898 A CN 03825898A CN 1739098 A CN1739098 A CN 1739098A
Authority
CN
China
Prior art keywords
network
mentioned
main frame
offload engines
adapter
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.)
Granted
Application number
CN03825898.6A
Other languages
English (en)
Other versions
CN100399282C (zh
Inventor
道格拉斯·弗雷穆斯
罗纳德·姆拉兹
埃里奇·纳哈姆
普拉善特·普拉德翰
萨姆比特·撒胡
约翰·特拉斯
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1739098A publication Critical patent/CN1739098A/zh
Application granted granted Critical
Publication of CN100399282C publication Critical patent/CN100399282C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/74Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission for increasing reliability, e.g. using redundant or spare channels or apparatus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1809Selective-repeat protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1874Buffer management
    • 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/12Protocol engines
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

本发明提供了一种用于有效地恢复状态并执行网络卸载引擎(904)的故障修复的方法、计算机程序产品和数据处理系统。本发明在协议的硬状态和软状态之间进行区分。硬状态是这样的状态信息,即当其丢失时,会导致不正确的协议行为。软状态是这样的状态信息,即可能丢失,或变得不一致,而不丢失正确性。本发明通过通常能够恢复(1002)协议的硬状态,来确保正确性。本发明的优选实施例通过暂时阻挡(908)网络包的接收,执行网络卸载引擎(904)的恢复,从主机信息恢复(1002)硬状态,使用替代的网络卸载引擎(906)继续网络操作,并从随后的网络活动中恢复(1008)软状态。

Description

智能网络适配器的状态恢复及故障修复
相关申请的交叉引用
本申请涉及2002年9月5日提交的标题为“REMOTE DIRECTMEMORY ACCESS ENABLED NETWORK INTERFACECONTROLLER SWITCHOVER AND SWITCHBACK SUPPORT(远程直接存储器访问使能的网络接口控制器转接和切回支持”、共同转让的共同未决第10/235,691号美国专利申请,在此引入该申请作为参考。
技术领域
本发明一般涉及智能网络适配器。具体地,本发明涉及网络卸载引擎的状态恢复及故障修复。
背景技术
在互联网协议(IP)网络中,软件提供了消息传递机制,其可用于与输入/输出设备、通用计算机(主机)和专用计算机通信。IP网络一般使用所谓的“协议栈”来使用一系列协议对数据进行封装和传送。遵循开放系统互连(OSI)体系结构模型的典型协议栈包括链路层协议、网络层协议、传输协议、上层协议和应用编程接口。目前的IP网络上使用的主要标准传输协议是传输控制协议(TCP)和用户数据报协议(UDP)。TCP提供了可靠的服务,而UDP提供了不可靠的服务。将来,流控制传输协议(SCTP)也将用于提供可靠的服务。在各种设备或计算机上执行的处理通过诸如套接字、iSCSI及直接访问文件系统(DAFS)的上层协议访问IP网络。
遗憾的是,TCP/IP软件消耗了相当数量的处理器和存储器资源。这一问题已详尽地包括在文献(参见J.Kay、J.Pasquale的“Profilingand reducing processing overheads in TCP/IP”IEEE/ACMTransactions on Networking,第4卷,No.6,第817-828页,1996年12月;以及D.D.Clark、V.Jacobson、J.Romkey、H.Salwen,“An analysisof TCP processing overhead”,IEEE通信杂志,27卷,第6期,1989年6月,第23-29页)。由于以下几个原因,未来的网络栈将继续消耗过量的资源,这些原因包括:应用对网络的增加的使用;网络安全协议的使用;以及基础结构带宽正以高于微处理器和存储带宽的速度增加。为了解决这一问题,产业上将网络栈处理卸载给专用网络卸载引擎。
目前,主CPU中的软件一般执行大部分传输(例如TCP)和网络层(如IP)处理。目前,网络接口卡(NIC)通常执行链路层(例如以太网)处理及可能适度数量的传输或网络层卸载(例如校验和卸载)。目前,主机软件在主机本地存储器中维护与TCP/IP连接相关联的所有状态信息。在主机本地存储器中维护所有状态信息允许主机软件支持主NIC和备用NIC之间的转接和切回。也就是说,如果主NIC故障,主机软件将所有的连接转移到备用NIC,并继续通信处理。
网络卸载引擎提供向其他通用计算机及I/O设备进行通信的较高性能接口。网络卸载引擎将传输(例如TCP)和网络(例如IP)层卸载到该网络卸载引擎中。通过将这些层迁移到该网络卸载引擎中,主机软件不再能够使用目前的机制支持转接和切回。标题为“REMOTEDIRECT MEMORY ACCESS ENABLED NETWORK INTERFACECONTROLLER SWITCHOVER AND SWITCHBACK SUPPORT(远程直接存储器访问使能的网络接口控制器转接和切回支持)”、共同转让和共同未决的第10/235,691号美国专利申请提供了用于支持网络卸载引擎(具体地,RNIC、RDMA(Remote Direct Memory Access,远程直接存储器访问)网络接口卡)上的转接和切回的机制,其中该申请在此被引入作为参考。该方案依赖于活动和备用网络卸载引擎之间的状态信息的同步。然而,这种同步可能会变成在较高速度处的性能瓶颈,因为为了确保正确性,一些协议事件必须一发生就被点检查(也即,被在活动和备用网络卸载引擎之间一致化或同步化)。另外,美国专利申请第10/235,691号中描述的该机制特定于支持RDMA的网络接口。因此,需要一种一般应用的故障修复机制,其使得与将主机和适配器进行同步有关的性能降级最小化。
发明内容
本发明提供了一种用于有效地恢复状态并执行网络卸载引擎的故障修复的方法、计算机程序产品和数据处理系统。本发明在协议的硬状态和软状态之间进行区分。硬状态是这样的状态信息,即当其丢失时,会导致不正确的协议行为。软状态是这样的状态信息,即可能丢失,或变得不一致,而不丢失正确性。本发明通过通常能够恢复协议的硬状态,来确保正确性。
本发明的一个优选实施例通过遵循关于主机和适配器之间的正常通信过程的两个不变量(即通常保持真的条件),维护诸如TCP的可靠连接协议硬状态能被恢复。这些不变量的网络效果是允许以较少频率的点检查或主机与适配器之间的同步,恢复硬状态,因为硬状态能够从主机正常维护的信息得以恢复。
本发明的优选实施例通过暂时阻挡网络包的接收,执行网络卸载引擎的故障修复,从主机信息恢复硬状态,使用替代的网络卸载引擎继续网络操作,并从随后的网络活动中恢复软状态。
附图说明
在所附权利要求中列出了相信是本发明的特征的新颖特征。但是,参照下面结合附图对可选实施例的详细描述,将最好地理解本发明本身及其优选的使用模式、其进一步的目的和优点,其中:
图1是本发明可实现于其中的网络化数据处理系统的图示;
图2是图1的网络化数据处理系统中的服务器系统的方框图;
图3是图1的网络化数据处理系统中的客户端系统的方框图;
图4是TCP包的图示;
图5是提供本发明优选实施例的整体概观的图示;
图6A是示出TCP传输的传统方案的图示;
图6B是示出根据本发明优选实施例的TCP传输的图示;
图7A是示出TCP接收的传统方案的图示;
图7B是示出根据本发明优选实施例的TCP接收的图示;
图8是TCP状态图;
图9A-9D是示出根据本发明优选实施例执行的故障修复过程的一系列图示;以及
图10是根据本发明优选实施例的执行网络卸载引擎的故障修复过程的流程图表示。
具体实施方式
现在参照附图,图1示出了本发明可实现于其中的数据处理系统的网络的图示表示。网络数据处理系统100是本发明可实现于其中的计算机网络。网络数据处理系统100包括网络102,该网络是用于提供网络数据处理系统100内连接在一起的各种设备和计算机之间的通信链路的媒介。网络102可包括诸如有线、无线通信链路或光缆的连接。
在所示出的例子中,服务器104与存储单元106一起连接到网络102。另外,客户端108、110和112连接到网络102。这些客户端108、110和112可以是例如个人计算机或网络计算机。在所示出的例子中,服务器104向客户端108-112提供诸如引导文件、操作系统图象及应用的数据。客户端108、110和112是服务器104的客户端。网络数据处理系统100可包括附加的服务器、客户端和其他未示出的设备。在所示出的例子中,网络数据处理系统100是具有网络102的互联网,其表示使用传输控制协议/互联网协议(TCP/IP)组协议彼此进行通信的网络和网关的广泛集合。互联网的核心是主节点或主计算机之间的高速数据通信线路的主干,其中的主节点或主计算机包括路由数据和消息的数以千计的商业、政府、教育和其他的计算机系统。当然,网络数据处理系统100也可实现为诸如企业内联网、局域网(LAN)或广域网(WAN)的多种不同类型的网络。图1旨在作为示例,并不是作为对本发明的体系结构限制。
参照图2,其中根据本发明优选实施例示出了可实现为诸如图1中的服务器104的服务器的数据处理系统的方框图。数据处理系统200可以是包括连接到系统总线206的多个处理器202和204的对称多处理器(SMP)系统。可选地,也可使用单个处理器系统。同样连接到系统总线206的有存储器控制器/高速缓存208,其提供对局部存储器209的接口。I/O总线桥210连接到系统总线206并提供到I/O总线212的接口。存储器控制器/高速缓存208和I/O总线桥210可如图所示的那样集成。
连接到I/O总线212的外围部件互连(PCI)总线桥214提供对PCI局部总线216的接口。多个调制解调器可连接到PCI局部总线216。典型的PCI总线实现将支持4个PCI扩展槽或插入连接器。图1中到客户端108-112的通信链路可通过调制解调器218和网络适配器220来提供,调制解调器218和网络适配器220通过插入板连接到PCI局部总线216。在本发明的优选实施例中,网络适配器220是诸如RNIC(远程直接存储器访问网络接口卡)的网络卸载引擎。
附加的PCI总线桥222和224为附加的PCI局部总线226和228提供接口,从这里可支持附加的调制解调器或网络适配器。以这种方式,数据处理系统200允许连接到多个网络计算机。存储器映像的图形适配器230和硬盘232也可如图所示的那样直接或间接地连接到I/O总线212。
本领域技术人员将理解,图2中示出的硬件可变换。例如,也可使用诸如光盘驱动器等的其他外围设备附加于或替代所示出的硬件。所示出的例子并不意味着是对于本发明的体系结构限制。
图2中示出的数据处理系统可以是例如IBM eSever pSeries系统,它是纽约Armonk的国际商业机器公司的产品,其运行先进的交互执行程序(AIX)操作系统或LINUX操作系统。
现在参照图3,其示出了本发明可实现于其中的数据处理系统的方框图。数据处理系统300是客户端计算机的一个例子。数据处理系统300使用外围部件互接(PCI)局部总线体系结构。尽管所示出的例子使用了PCI总线,但也可使用诸如加速图形端口(AGP)和工业标准体系结构(ISA)的其他总线体系结构。处理器302和主存储器304通过PCI桥308连接到PCI局部总线306。PCI桥308也可包括集成的存储器控制器和处理器302的缓冲存储器。到PCI局部总线306的附加连接可通过直接部件互连或通过插入板来实现。在所示出的例子中,局域网(LAN)适配器310、SCSI主机总线适配器312和扩展总线接口314通过直接部件连接连接到PCI局部总线306。在本发明的优选实施例中,LAN适配器310是诸如RNIC(远程直接存储器访问网络接口卡)的网络卸载引擎。相反,音频适配器316、图像适配器318和音频/视频适配器319通过插入到扩展槽的插入板连接到PCI局部总线306。扩展总线接口314为键盘和鼠标适配器320、调制解调器322及附加存储器324提供连接。小型计算机系统接口(SCSI)主机总线适配器312为硬盘驱动器326、磁带驱动器328和CD-ROM驱动器330提供连接。典型的PCI局部总线实现将支持3或4个PCI扩展槽或插入连接器。
操作系统运行在处理器302上,并用于协调及提供对于图3的数据处理系统300内的各部件的控制。该操作系统可以是诸如可从微软公司获得的Windows XP的可购买到的操作系统。诸如Java的面向对象的程序设计系统可与操作系统协力运行,并提供数据处理系统300上执行的Java程序或应用对操作系统的调用。“Java”是SunMicrosystem公司的商标。用于操作系统、面向对象的操作系统和应用或程序的指令位于诸如硬盘驱动器326的存储设备上,并可加载到主存储器304中,由处理器302来执行。
本领域的普通技术人员将理解,图3中的硬件可根据实现变换。也可使用诸如快闪只读存储器(ROM)、等效非易失性存储器或光盘驱动器等的其他内部硬件或外围设备附加于或替换图3中示出的硬件。此外,本发明的过程可应用于多处理器数据处理系统。
作为另一示例,数据处理系统300可以是配置为在不依赖某种类型的网络通信接口情况下可引导的独立系统。作为进一步的示例,数据处理系统300可以是个人数字助理(PDA)设备,其配置有ROM和/或快闪ROM,以提供用于存储操作系统文件和/或用户生成的数据的非易失性存储器。
图3中示出的例子及上述的示例并不意味着体系结构限制。例如,数据处理系统300除了采用PDA的形式之外,也可以是笔记本计算机或手持计算机。数据处理系统300也可是信息亭或Web设备。
本发明提供一种用于有效恢复状态和执行网络卸载引擎的故障修复的方法、计算机程序产品和数据处理系统。这里所述的优选实施例将本发明的教导应用到在互联网上广泛使用的通用传输控制协议(TCP),其是一种可靠的传输层连接协议。TCP使用顺序编号的包来模拟连续数据流。图4是示出TCP包400的格式的图示。图4摘自于W.Richard Stevens,TCP/IP Illustrated,Vol.1,Addison-Wesley,1994,第225页,图17.2。TCP包400包括32位的序号402,32位确认号404和多种标志406。TCP连接中的每个包以32位序号402顺序编号。因为各包可能在传输中混淆丢失或接收次序颠倒,序号402允许接收计算机以正确顺序重组正确数据。当接收计算机正确接收到一个包时,接收计算机发送回一个包,其具有包含所接收的包的序号的确认号404和标志406中被设置为表示确认的“ACK”标志。这称作“发送ACK”。如果发送计算机未接收到“ACK”(例如因为包丢失或混淆),则发送计算机将重发送该包,直到它接收到ACK。如果各包的接收次序颠倒(例如具有序号5的包在具有序号4的包之前接收到),则接收计算机仅等待,直到可在使得接收到的数据对于应用可用之前能够对连续序列的包进行组装。
因此,应当清楚,TCP和其他类似可靠的连接协议是状态知晓的。也就是说,TCP依赖于状态信息的保持,诸如所接收的上一个序号或所发送的上一个序号。一般地,如果状态信息丢失,则TCP不再工作。因此,如果提供诸如TCP的状态知晓协议的网络卸载引擎/适配器在网络连接中间故障,如果包含在适配器中的状态信息完全丢失,那么连接永久丢失。
状态信息可通过“点检查”的方式保留。包含在适配器中的状态信息可周期性地中继到适配器的主计算机。但是,在高速操作中,这种中继过程可能导致性能瓶颈,因为一些协议事件需要立即进行点检查,以保持正确性(即,为了在故障情况中正确恢复状态信息)。
本发明针对于减小这种执行瓶颈。本发明在三个重要方面解决这一问题。第一,本发明区分“硬”和“软”状态信息(q.v.),认识到为了故障修复,仅需要维护“硬”状态信息。第二,本发明提供一种从主机可观察的数据传输操作周围的环境中导出硬状态信息的方法。第三,因为本发明允许任意发生点检查,所以本发明允许设计者通过改变点检查发生的频率来调整适配器/主机设计,以满足所需的性能需求。
但是,在深入研究优选实施例的详细操作之前,考虑本发明优选实施例的硬件/软件内容是有帮助的。图5是提供本发明优选实施例的整体概观的图示。主机500与TCP/IP卸载引擎(智能网络适配器)501相关联。卸载引擎501主要通过直接存储器访问(DMA)507与主机500进行通信,以允许卸载引擎501向/从主机存储器发送和接收数据,而在主机500处消耗最小的处理器时间。
主机控制软件502提供从应用到卸载引擎501的接口。主机控制软件502还能够在卸载引擎501故障时启动故障修复操作。对于主机所涉及的每一个TCP/IP连接,在主机500中都保存每连接信息504。每连接信息504包括关于该连接的状态信息506,其可包括关于TCP顺序和确认号、连接参数等的信息。在优选实施例中,每连接信息504还包括在卸载引擎501故障时,给定连接是否将被给予故障修复支持的表示505。这允许当和如果发生到另一个卸载引擎的故障修复时,对哪些连接将被保留作出选择。在其中公知的“套接字”应用编程接口用于网络输入/输出(例如在基于Unix的操作系统中执行的过程)的优选实施例中,表示505可通过使用套接字选项来设置。在套接字接口的典型实现中,定义了“setsockopt”功能,以允许将与给定连接关联的套接字选项设置为特定值。每连接信息504还被包括在缓冲区508中。
在主机500和卸载引擎501之间通过DMA507传输数据。为了从主机500通过网络连接传输数据,主机500分配缓冲区,并将要传输的数据复制到所分配的缓冲区中。然后,卸载引擎501将所分配的缓冲区的内容复制到卸载引擎501自身的每连接信息509中的卸载引擎501自身的一个缓冲区510中。当在卸载引擎501处接收到网络数据时,该数据被放置到一个卸载引擎501的缓冲区510中,并通过DMA507复制到缓冲区508的一个中。因此,缓冲区508和510可同时包括发送和接收缓冲区。
如上所述,卸载引擎510具有自己的每连接信息509,其包括缓冲区510和TCP状态信息512。卸载引擎控制软件514指示通过DMA507向/从主机500的数据的传输和通过TCP/IP协议516在网络518上的数据传输。
此时,应该指出,一般地,除非具体指出,否则术语“卸载引擎”、“适配器”、和“卡”在这里互换使用。该一般规则的一个重要例外是在备用网络适配器的情况下。尽管本发明的优选实施例使用网络卸载引擎作为备用适配器,但是,本领域的普通技术人员将会认识到,传统的“哑”网络适配器可以替代网络卸载引擎,同时允许主机执行任何协议处理(例如,TCP/IP处理)。
现在,考虑在TCP的情境下提供网络卸载引擎/适配器的故障修复的问题。为了解决这一问题,对在TCP栈的情境下“硬状态”和“软状态”的组成进行区别。这里,将硬状态定义为在不失掉正确性的情况下不会丢失的状态,而软状态是对于维护正确性的非必要的状态信息,因为丢失它仅转变为性能障碍。硬状态通常包括对于可靠的数据传输所需的各项,诸如序号和数据缓冲区,以及对于连接管理所需的那些项,诸如IP地址和协商的选项。另一方面,软状态通常是在连接的生命周期中获知的信息,诸如往返转播时间、拥塞窗等。这意味着,在一个适配器故障时,只要没有硬状态丢失,就可能从该故障中恢复。性能可能会受影响,因为软状态需要重新生成,但将对正确性进行维护。
发送和接收缓冲区都是硬状态。由于一旦向另一端确认了接收缓冲区,该另一端便不被期望对副本进行维护,从而不能重新发送它,所以接收缓冲区是硬状态。由于一旦应用将数据传递给可靠协议,主机便不被期望对副本进行维护,该应用期望在透明的情况下发生所有重新传输,因此,发送缓冲区是硬状态。因此,为了故障修复,这种缓冲区必须保持在主机存储器中。(应该指出,将这些缓冲区保持在另一个适配器的存储器,而不是主机存储器,也是可能的。)
某些硬状态值,诸如远程主机的网络地址或协商的选项,理所当然由主机存储,因此这些值的恢复是必须的。
序号或ACK号是TCP栈中的硬状态,但不需要被恢复。在这种情况下的四种主要状态是“上一次发送的序号”、“上一次接收的序号”、“上一次发送的ACK号”和“上一次接收的ACK号”。每次这些号码被更新时,在主机和适配器之间保持这些号码同步可能会是高昂的代价,并可能抵消卸载的性能增益。但是,下面证明因循守旧的同步是不必要的。在设计背后的两个基本思想如下:
1.由于数据缓冲区保留在主机存储器中,所以可以作为从卡到主机的数据传输的侧面影响对“所接收的序号”进行更新。
2.对于其他变量,不需要严格的同步,只要遵循下面两个不变条件即可:
2A:在发送侧,主机直到适配器返回来自远程终端对于发送缓冲区的ACK时,才释放该发送缓冲区。
2B:在接收侧,适配器直到数据通过DMA成功传输到主机存储器中时,才生成对于所接收的数据的ACK。成功的DMA意味着数据已被传输到主机,且适当的通知已写入描述符表中。
条件2A确保在适配器故障时,主机通常将使得还未看到对于其的ACK的那些缓冲区重新发送。条件2B确保在接口卡故障时,在无需向主机传输某些接收到的数据的情况下,远程终端通常将能够重新发送此数据,因为直到主机见到该数据时才向远程终端“ACK(确认)”。
如果遵循条件2A和2B,适配器可以某一选择的间隔“懒惰地”使其余变量与主机进行同步。这允许适配器将几次更新分组为一次更新,并避免频繁同步的性能开销。适配器以怎样的频率向主机返回新的ACK现在仅是一个性能问题,而不是正确性的问题。应该指出,在选择同步周期时存在性能-空间的折衷:间隔越长,在接口卡与主机之间越少出现I/O传输,但是主机必须坚持更长时间的缓存。另一方面,间隔越短,意味着主机可尽可能快地释放缓冲区,但是将引起更多的I/O开销。由于性能原因,第一种情况显然是更优选的,因此,希望主机具有足够的存储器,以允许接口卡“懒惰”报告确认。
图6A-6B和7A-7B将本领域中公知的关于已建立的连接的常规TCP操作与条件2A和2B对于已建立的TCP连接的应用进行对照,其中,这种条件的应用可在根据本发明优选实施例的实践中实现。已建立的TCP连接处于“ESTABLISHED”状态(见图8中的提供的TCP状态图中的ESTABLISHED状态800)。图6A是示出对于TCP传输的传统方案的图示。适配器601(网络卸载引擎)将要从主机600上的缓冲区602发送的数据复制到适配器601自身的缓冲区604中。此时,主机600将释放602,因为它不再需要。适配器601处理(TCP处理616)目前处于缓冲区604中的数据,以将其布置于TCP包形式中,以供传输608。传输608重复到适配器601接收到对应于发送数据的ACK。
图6B是示出根据本发明优选实施例的TCP传输的图示。适配器611将数据从主机610上的缓冲区612复制到适配器611的缓冲区614中,但缓冲区612不被释放。执行TCP处理616,且数据通过网络进行传输(传输618)。当接收到ACK(ACK接收620)时,在适配器611中生成ACK通知消息622。在随后的某一时间,适配器611将ACK通知622传输给主机610,作为响应,主机610处理(ACK通知处理624)ACK通知622,并释放缓冲区612。在本发明的优选实施例中,可将ACK通知暂时存储在适配器611中,然后以批处理方式进行处理,以获得更高的效率。
图7A是示出对于TCP接收的传统方案的图示。适配器700从网络接收TCP数据包(数据接收702)。对该包进行处理(TCP包处理704),以获得存储在该包中的数据,该数据被复制到适配器700上的缓冲区706中。TCP包处理704还导致对应于该包的ACK的生成。该ACK包被传送回给原始接收包的发送方(ACK传送708)。随后,将缓冲区706复制到(例如,通过DMA)主机712上的缓冲区710,并释放缓冲区706。缓冲区从适配器700到主机712的这一复制可以批处理来发生。
图7B是示出根据本发明优选实施例的TCP接收的图示。适配器720从网络接收TCP数据包(数据接收722)。对该包进行处理(TCP包处理724),以获得存储在该包中的数据,该数据被复制到适配器720上的缓冲区726中,但不生成ACK。随后,将缓冲区726复制(例如,通过DMA)到主机730上的缓冲区728中,并适当缓冲区726。再者,从适配器720到主机730的这一缓冲区复制可以批处理来发生。一旦数据从缓冲区726传输到了缓冲区728,便生成对应的ACK,并传送到该包的原始发送方(ACK传送732)。
为了证明这一设计允许在已建立的连接期间适配器发生故障时,重构TCP栈的硬状态,现在检查每一个可能不同步的顺序相关的状态变量,并展现如何根据本发明的优选实施例正确地恢复TCP连接的状态。
1.“上一次接收的ACK”(ack_received):假设作为主机和适配器之间的上一次同步的结果,主机的ack_received的值是10。此后,适配器从远程主机接收多个的ACK,其ack_received的值现在是15(应该指出,适配器上的ack_received通常将等于或大于主机上的值)。假设适配器现在故障。主机不知道有多少适配器已经看见过的其他ACK。但是依据条件2A,主机还未释放缓冲区11到15。这意味着主机通常可重新发送这些缓冲区,以重构正确的ack_received。如果远程终端实际上已经看见了直到15的数据,则它将ACK直到15,且主机将其ack_received的值升到15。例如,如果远程终端仅看见了直到14的数据,则它将ACK直到14,本地主机将ack_received的值设置为14,并继续从15开始传送。
2.“上一次发送的SEQ”(seq_sent):假设执行了上一次同步,主机具有seq_sent值10。从此时开始,适配器执行多次传输,且其seq_sent值升到15(应该再次指出,适配器上的seq_sent通常将等于或大于主机上的相应值)。假设适配器现在故障。此外,主机不知道已发送出了多少已缓存的数据。但是,它通常是恰好使seq_sent开始于ack_received和主机的seq_sent的旧值中的较大值。因此,设置seq_sent=MAX(ack_received,seq_sent),并继续操作。应该重要指出的是,依据条件2A,主机直到接收到对于一个缓冲区的ACK时才释放该缓冲区,因此,主机通常使数据存储在开始于ack_received的缓冲区中。然而,这可能导致重复数据到远程主机的不必要的传输,这确实破坏正确性。
3.“上一次接收的SEQ”(seq_received):依据条件1,知道seq_received通常在适配器与主机之间是同步的,因为每次主机接收到缓冲区时,它都本地更新其seq_received变量。
4.“上一次发送的ACK”(ack_sent):依据条件2B,适配器可能在将该缓冲区复制到主机之前不生成ACK。当接收到数据时,其被传输给主机,因此该主机将更新其ack_sent。在传输该数据之后,适配器可能发送一个ACK,更新其ack_sent(应该指出,适配器可能由于延迟的ACK定时器而延迟发送ACK)。因此,ack_sent通常在适配器与主机之间是同步的。
现在,讨论如何在ESTABLISHED之外的状态下正确处理适配器的故障。图8中提供了示出ESTABLISHED状态800和其他TCP状态的完全TCP状态图。图8摘自于W.Richard Stevens的TCP/IPIllustrated,Vol.1,Addison-Wesley,1994,p.241,图18.12。TCP状态的名称是在RFC(Request for Comments,请求注解)793中,其中描述了TCP协议。当TCP连接处于非ESTABLISHED状态时,它处于一个连接的生命周期的四个阶段中的某一个。这些阶段是:主动开启、被动开启、主动关闭和被动关闭。下面展现所有这些阶段的正确性。
但是,此时,关于图8中的图示的某些附加说明是适宜的。标号“SYN”、“FIN”和“ACK”重复地出现在该图中。这些称作TCP包头内的标志(图4中的标志406)。“SYN”和“FIN”象“ACK”一样都是其中的“SYN”或“FIN”标志已分别被设置的。在该图中还有诸如“SYN,ACK”的符号,其中两个标志名称并列在一起(这有时还以具有连字符的形式“SYN-ACK”来提供)。这表示其中SYN和ACK标志均被设置的包。基于条件2A和2B的原因,考虑具有SYN标志设置或FIN标志设置的包作为数据包。这确保了正确性。
现在,在下面的讨论中遍历图8的状态图。具有卸载引擎/适配器的主机称作“卸载主机”,而远程终端称作“远程主机”。为了概念上的清楚,应该指出,因为主机和适配器均保持状态信息的跟踪,所以主机具有其认为该连接所处于的状态,且适配器也具有其认为该连接所处于的状态。本发明的目的在于,即使主机和适配器未完全同步,也确保主机处于这样一种状态,从该状态进行恢复是可能的。
还应该指出,一般地,在每一次转换,接收进入的包,作为响应,发送传出的包,并改变连接的状态。因此,在下面的讨论中,为了讨论主机和适配器的包的接收、包的发送、以及从一个状态到另一个状态的转换,单个转换可能指多次。
1.被动开启:这是主机侦听来自远程主机的连接请求的情况。经应用程序的请求,卸载主机从CLOSED(主动)状态802转换到LISTEN状态804(转换803)。当远程主机请求一个连接时,卸载主机接收一个SYN。由于SYN被认为是数据,所以依据条件2B,卸载适配器直到主机已得到了SYN时,才能发送SYN-ACK(转换806)。这意味着主机在适配器转换之前从LISTEN状态804转换到SYN_RCVD状态808。当握手的最后ACK到达时,由于适配器可能正批处理ACK通知,所以该最后ACK不被立即给予主机。这在适配器而不是主机上,将连接的状态改为ESTABLISHED(转换810)。但是,注意,依据条件2A,主机将不会“释放”其SYN的副本以重新传输SYN-ACK(转换806),直到主机看到了对SYN的ACK(转换810)。因此,如果适配器此时故障,则当主机恢复时,它将重新发送SYN-ACK(转换806),并获得重新发送回的ACK,将状态转移到ESTABLISHED状态800(转换810)。最后,当主机接收到连接到达的通知时,主机将明了该连接的状态是ESTABLISHED800(转换810)。
2.主动开启:这是其中卸载主机正与一个远程主机(例如,服务器)启动一个连接的情况。在此情况下,主机向适配器提交连接请求,而适配器又传送一个SYN,将主机和适配器转换到SYN_SENT状态814(转换812)。当从远程主机接收到SYN-ACK时,适配器直到该主机已被通知了该SYN-ACK时,才返回ACK并改变到ESTABLISHED状态800(转换816)。这是根据条件2B得出的,因为SYN-ACK中的SYN是数据。这意味着主机被赋予了SYN-ACK之后,适配器将状态改变到ESTABLISHED状态800(转换816),并因此主机也改变到ESTABLISHED状态800(转换816)。如果在将SYN-ACK传递给主机之前(即,在转换816之前),适配器故障,则主机状态处于SYN-SENT状态814,依据条件2B,这意味着SYN-ACK还未向远程终端确认。最终,远程终端将重新传送该SYN-ACK。
3.被动关闭:这是远程终端启动连接的终止的情况。在此情况下,适配器接收FIN(转换818)。由于FIM被认为是数据,依据条件2B,所以适配器直到主机被通知时才能发送ACK(转换818)。在将FIN给予主机之后,主机和适配器均将它们的连接状态改变为CLOSE_WAIT状态820(转换818)。如果在主机被通知该FIN、该FIN还未被确认之前,适配器故障,则远程终端将重新传送它。应用将最终调用对于主机可见的close()(转换822),且主机将状态改变为LAST_ACK状态824。此后,主机或者最终接收远程终端的ACK(转换826),或者如果适配器故障则超时。
4.主动关闭:这是卸载主机启动连接的终止的情况。在此情况下,运行在卸载主机上的应用调用对于该主机可见的close(),因此该主机将其状态的副本改变到FIM_WAIT_1状态832(转换830)。从FIN_WAIT_1状态832,主机可根据从远程终端接收到的消息,转换到三个状态中的一个。逐一情况来检查每一个状态:
a)FIN_WAIT_1到CLOSING:这发生于所发送的FIN被确认前,从远程主机接收到FIN时(转换834)。由于FIN被认为是数据,所以依据条件2B,适配器直到主机被给予了该FIN时才能发送ACK。因此,接口卡仅在主机被给予了FIN之后,才将状态改变为CLOSING状态836,这意味着主机也将状态改变为CLOSING状态836。如果接口卡在将远程FIN传递给主机之前故障,则对于远程FIN还未发送ACK,因此,远程终端必须重新发送它。
b)IN_WAIT_1到TIME_WAIT:这发生于接收到FIN_ACK时(转换842)。由于FIN被认为是数据,依据条件2B,适配器直到已将该FIN_ACK给予主机时才能确认。因此,适配器仅在将FIN_ACK给予主机之后才将状态改变为TIME_WAIT状态840,而主机也将状态改变为TIME_WAIT状态840。如果适配器在通知之前故障,则对于该FIN_ACK还未生成ACK,因此,远程终端将必须重新发送该FIN_ACK。
c)FIN_WAIT到FIN_WAIT_2:这发生于适配器接收到对于已发送的FIN的ACK(转换844)。由于接口卡可能正批处理通知,所以适配器可能不立即将该ACK通知给主机。因此,接口卡上的状态可能是FIN_WAIT_2状态846,而主机仍然具有FIN_WAIT_1832。如果在主机见到该ACK之前接口卡故障,依据条件2A,主机直到已见到了对应于其的ACK时才“释放”该FIN。在此情况下,当主机恢复时,它将重新发送该FIN,并获得对于它的ACK,并将状态改变为FIN_WAIT_2状态846。
在主机上延续这三个状态中的每一个:
a)CLOSING到TIME_WAIT:在CLOSING状态836中,当适配器见到ACK时,其将状态改变为TIME_WAIT状态840(转换838)。由于接口卡可能正批处理通知,所以主机可能未立即见到该ACK。但是,依据条件2A,直到主机见到该ACK,它才“释放”其FIN,因此,该FIN将被重新发送。如果适配器故障,当主机恢复时,主机将最终获得ACK,并改变到TIME_WAIT(转换838)。
b)FIN_WAIT_2到TIEM_WAIT:在FIN_WAIT_2状态846,当适配器接收到FIN时,它直到将该FIN传递给主机时才能确认并改变到TIME_WAIT状态840(转换848)。这是由于条件2B,因为FIN被认为是数据。这意味着或者主机将在接口卡转换之前接收通知,并将状态转换到TIME_WAIT状态840,或者如果适配器在该通知之前故障,则远程终端将必须重新传送该FIN,因为它未被确认。
c)TIME_WAIT到CLOSED:在TIME_WAIT状态840,主机在其释放该连接状态之前,仅等待最大片断的生命周期(MSL),RFC793将该生命周期指定为两秒钟时间间隔。
这表明对于ESTABLISHED之外的TCP状态的正确性
因此,通过遵循条件2A和2B,主机能够恢复硬状态,并因而执行故障适配器的故障修复。图9A-9D是示出根据本发明优选实施例执行的故障修复过程的一系列图示。首先,为了使故障修复发生,必须检测到适配器故障。参照图9A中的阶段1(“检测接口卡故障”),对多个连接(由每连接状态信息块902表示)进行维护的主机900使用适配器904。主机900首先检测到适配器904已发生故障。这可以本领域公知的多种方式来实现。一种可使用的具体方法是用于主机900和适配器904相互发送周期“心跳”消息的方法。如果主机900等待从适配器904到达心跳消息的时间到期,则主机900可安全假定适配器904已发生故障,且备用适配器906应该替换故障的适配器904。
现在参照图9B中的阶段2(“阻挡阶段”),为了开始故障修复/恢复过程,主机900使用备用适配器906,但阻挡所有来自网络的包(阻挡操作908)。主机900标记由故障适配器904处理的每一个连接的状态(每连接信息902),以指示这些连接处于“RECOVERING”状态。
现在参照图9C的阶段3(“状态重构阶段”),主机900现在解锁来自网络的各包,并开始恢复连接的过程。在此阶段,将到达任一处于RECOVERING状态中的连接的包丢弃。根据正常的TCP处理,对所有其他连接进行处理。下面的操作序列描述每连接恢复过程:
1.为每一个连接创建TCP协议控制块(保存TCP连接状态信息的数据结构)(例如,协议控制块913),并从每连接信息块912中的一个组成主机900已知的硬状态连接参数(IP地址、初始序号和协商选项)。
2.将协议控制块913中的拥塞窗口和往返时间估算参数(即,软状态值)设为在TCP连接开始时使用的默认值。
3.将协议控制块913中所接收的序号设为初始值加上直到主机900见到的上一次接收的数据包的字节数。
4.将协议控制块913中所接收的确认号设为由故障适配器904所报告的上一次接收的确认号。如果在适配器故障之前未接收到这样的更新,则将其设置为连接建立时的初始值。
5.将协议控制块913中的发送序号设置为接收的确认号。
6.将协议控制块913中的发送序号设置为接收的序号。
7.将适配器906处连接的所发送和接收的缓冲区设置为由主机900为该连接维护的缓冲区。
8.连接的状态从RECOVERING改变到仅在适配器904故障前已知的状态。主机解锁来到该连接的各包,并开始执行对于该连接的TCP处理911。
一旦连接被恢复,便可在备用适配器906处继续对于此连接的正常操作,如图9D中阶段4(“继续正常操作”)所示。可选地,主机900可接管TCP/IP处理,而不是使用智能备用适配器(网络卸载引擎)。
图10是根据本发明优选实施例的执行网络卸载引擎的故障修复的过程的流程图表示。首先,主机检测适配器故障(块1000)。然后,主机重新创建硬状态信息已不存储于主机中的信息(块1002)。将该硬状态信息传播到备用网络卸载引擎(或如果使用“哑”备用适配器,则保留在主机中)(块1004)。使用该备用适配器继续网络操作(块1006)。最后,一旦网络操作继续,可通过实际观察网络连接来获得任何软状态信息(块1008)。
应该重要指出的是,尽管已在完整功能的数据处理系统的情境下对本发明进行了描述,但本领域的普通技术人员应该理解,本发明的处理能够以指令的计算机可读介质或其他功能描述材料的形式,或以各种其他形式来分布,本发明可同样应用,不管实际用于实现该分布的信号承载介质的特定类型。计算可读介质的例子包括可记录类型介质,诸如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM,和传输类型介质,诸如使用例如射频和光波传输的传输形式的数字模拟通信链路、有线或无线通信链路。计算机可读介质可采取编码格式的形式,其中的编码在特定数据处理系统中为实际使用而被解码。功能描述材料是将功能给予机器的信息。功能描述材料包括但不限于计算机程序、指令、规则、事实、计算功能的定义、对象、以及数据结构。
为了说明和描述的目的,已呈现了本发明的描述,但并不是要穷举或将本发明限制在所公开的形式。许多修改和变换对于本领域的普通技术人员都是显而易见的。例如,不使用主机来维护重新创建状态所需的信息,而是使用在网络卸载引擎外部的另一个位置,诸如另一个适配器。各实施例的选择和描述是为了最佳地解释本发明的原理、实际应用,以及为了使本领域的普通技术人员之外的其他人理解本发明,以便实现具有适于所预期的特定使用的各种修改的各种实施例。

Claims (46)

1.一种用于与网络通信并与主机相关联的网络卸载引擎的故障修复的基于计算机的方法,该方法包括:
根据存储于网络卸载引擎外部的位置的信息,重构该网络卸载引擎的状态信息;
根据该状态信息以备用网络适配器继续网络操作。
2.权利要求1的方法,进一步包括:
指定至少一个上述网络卸载引擎中的选择出的网络连接,作为故障修复支持;
其中,上述状态信息特定于该至少一个选择出的网络连接,且网络操作仅对于该至少一个选择出的网络连接继续。
3.权利要求2的方法,其中通过设置与上述至少一个选择出的网络连接相关联的套接字选项,将该至少一个选择出的网络连接指定为具有故障修复支持。
4.权利要求1的方法,其中上述网络卸载引擎之外的位置是主机。
5.权利要求1的方法,其中上述网络卸载引擎之外的位置是备用网络适配器和另一个网络适配器中的一个。
6.权利要求1的方法,其中存储于主机中的信息足以为上述网络卸载引擎重构硬状态信息。
7.权利要求6的方法,进一步包括:
在以上述备用网络适配器继续网络操作期间获取软状态信息。
8.权利要求6的方法,其中上述硬状态信息包括上一次接收的序号、上一次发送的序号、上一次接收的确认号、上一次发送的确认号中的至少一个。
9.权利要求6的方法,其中上述网络卸载引擎在可操作时,仅在接收数据被呈递给主机之后,发送对于接收数据的确认。
10.权利要求6的方法,其中在上述网络卸载引擎可操作时,仅在该网络卸载引擎接收到对于与发送缓冲区相关联的发送数据的确认之后,释放主机中的发送缓冲区。
11.权利要求6的方法,其中上述网络卸载引擎在可操作时,仅在所接收到的数据被呈递给主机之后,发送对于所接收到的数据的确认;以及
其中在上述网络卸载引擎可操作时,仅在该网络卸载引擎接收到对于与发送缓冲区相关联的发送数据的确认之后,释放主机中的发送缓冲区。
12.权利要求1的方法,进一步包括:
根据预定义的周期,在上述网络卸载引擎可操作时,通过将与该网络卸载引擎相关联的状态信息的至少一个子集复制到主机中的存储器,对与该网络卸载引擎相关联的状态信息的至少一个子集进行点检查。
13.权利要求1的方法,进一步包括:
检测上述网络卸载引擎的故障;
响应检测到该网络卸载引擎的故障,识别与该网络卸载引擎相关联的连接;
指定上述连接作为恢复连接;
为每一个恢复连接恢复状态信息;以及
在每一个恢复连接的状态信息被恢复时,在备用网络适配器上继续每一个恢复连接的网络操作。
14.权利要求1的方法,其中上述备用网络适配器是备用网络卸载引擎。
15.权利要求1的方法,其中上述备用网络适配器要求主机执行协议处理。
16.一种用于与网络通信并与主机相关联的网络卸载引擎的故障修复的计算机可读介质中计算机程序产品,该计算机程序产品包括功能描述材料,当其被计算机执行时,使得该计算机执行以下动作:
根据存储于网络卸载引擎外部的位置的信息,重构该网络卸载引擎的状态信息;
根据该状态信息以备用网络适配器继续网络操作。
17.权利要求16的计算机程序产品,包括其他的功能描述材料,当其被计算机执行时,使得该计算机执行以下其他动作:
指定至少一个上述网络卸载引擎中的选择出的网络连接,作为具有故障修复支持;
其中,上述状态信息特定于该至少一个选择出的网络连接,且网络操作仅对于该至少一个选择出的网络连接继续。
18.权利要求17的计算机程序产品,其中通过设置与上述至少一个选择出的网络连接相关联的套接字选项,将该至少一个选择出的网络连接指定为具有故障修复支持。
19.权利要求16的计算机程序产品,其中上述网络卸载引擎之外的位置是主机。
20.权利要求16的计算机程序产品,其中上述网络卸载引擎之外的位置是备用网络适配器和另一个网络适配器中的一个。
21.权利要求16的计算机程序产品,其中存储于主机中的信息足以为上述网络卸载引擎重构硬状态信息。
22.权利要求21的计算机程序产品,包括其他的功能描述材料,当其被计算机执行,使得该计算机执行以下其他动作:
在以上述备用网络适配器继续网络操作期间获取软状态信息。
23.权利要求21的计算机程序产品,其中上述硬状态信息包括上一次接收的序号、上一次发送的序号、上一次接收的确认号、上一次发送的确认号中的至少一个。
24.权利要求21的计算机程序产品,其中上述网络卸载引擎在可操作时,仅在接收数据被呈递给主机之后,发送对于接收数据的确认。
25.权利要求21的计算机程序产品,其中在上述网络卸载引擎可操作时,仅在该网络卸载引擎接收到对于与发送缓冲区相关联的发送数据的确认之后,释放主机中的发送缓冲区。
26.权利要求21的计算机程序产品,其中上述网络卸载引擎在可操作时,仅在所接收到的数据被呈递给主机之后,发送对于所接收到的数据的确认;以及
其中在上述网络卸载引擎可操作时,仅在该网络卸载引擎接收到对于与发送缓冲区相关联的发送数据的确认之后,释放主机中的发送缓冲区。
27.权利要求1的计算机程序产品,包括其他的功能描述材料,当其被计算机执行时,使得该计算机执行以下其他动作:
根据预定义的周期,在上述网络卸载引擎可操作时,通过将与该网络卸载引擎相关联的状态信息的至少一个子集复制到主机中的存储器,对与该网络卸载引擎相关联的状态信息的至少一个子集进行点检查。
28.权利要求16的计算机程序产品,包括其他的功能描述材料,当其被计算机执行时,使得该计算机执行以下其他动作:
检测上述网络卸载引擎的故障;
响应检测到该网络卸载引擎的故障,识别与该网络卸载引擎相关联的连接;
指定上述连接作为恢复连接;
为每一个恢复连接恢复状态信息;以及
在每一个恢复连接的状态信息被恢复时,在备用网络适配器上继续每一个恢复连接的网络操作。
29.权利要求16的计算机程序产品,其中上述备用网络适配器是备用网络卸载引擎。
30.权利要求16的计算机程序产品,其中上述备用网络适配器要求主机执行协议处理。
31.一种用于与网络通信并与主机相关联的网络卸载引擎的故障修复的数据处理系统,该系统包括:
用于根据存储于网络卸载引擎外部的位置的信息,重构网络卸载引擎的状态信息的装置;
用于根据该状态信息以备用网络适配器继续网络操作的装置。
32.权利要求31的数据处理系统,进一步包括:
用于指定至少一个上述网络卸载引擎中的选择出的网络连接,作为故障修复支持的装置;
其中,上述状态信息特定于该至少一个选择出的网络连接,且网络操作仅对于该至少一个选择出的网络连接继续。
33.权利要求32的数据处理系统,其中通过设置与上述至少一个选择出的网络连接相关联的套接字选项,将该至少一个选择出的网络连接指定为具有故障修复支持。
34.权利要求31的数据处理系统,其中上述网络卸载引擎之外的位置是主机。
35.权利要求31的数据处理系统,其中上述网络卸载引擎之外的位置是备用网络适配器和另一个网络适配器中的一个。
36.权利要求31的数据处理系统,其中存储于主机中的信息足以为上述网络卸载引擎重构硬状态信息。
37.权利要求36的数据处理系统,进一步包括:
用于在以上述备用网络适配器继续网络操作期间获取软状态信息的装置。
38.权利要求36的数据处理系统,其中上述硬状态信息包括上一次接收的序号、上一次发送的序号、上一次接收的确认号、上一次发送的确认号中的至少一个。
39.权利要求36的数据处理系统,其中上述网络卸载引擎在可操作时,仅在接收数据被呈递给主机之后,发送对于接收到的数据的确认。
40.权利要求36的数据处理系统,其中在上述网络卸载引擎可操作时,仅在该网络卸载引擎接收到对于与发送缓冲区相关联的发送数据的确认之后,释放主机中的发送缓冲区。
41.权利要求36的数据处理系统,其中上述网络卸载引擎在可操作时,仅在所接收到的数据被呈递给主机之后,发送对于所接收到的数据的确认;以及
其中在上述网络卸载引擎可操作时,仅在该网络卸载引擎接收到对于与发送缓冲区相关联的发送数据的确认之后,释放主机中的发送缓冲区。
42.权利要求31的数据处理系统,进一步包括:
用于根据预定义的周期,在上述网络卸载引擎可操作时,通过将与该网络卸载引擎相关联的状态信息的至少一个子集复制到主机中的存储器,对与该网络卸载引擎相关联的状态信息的至少一个子集进行点检查的装置。
43.权利要求31的数据处理系统,进一步包括:
用于检测上述网络卸载引擎的故障的装置;
用于响应检测到该网络卸载引擎的故障,识别与该网络卸载引擎相关联的连接的装置;
指定上述连接作为恢复连接;
为每一个恢复连接恢复状态信息;以及
在每一个恢复连接的状态信息被恢复时,在备用网络适配器上继续每一个恢复连接的网络操作。
44.权利要求31的数据处理系统,其中上述备用网络适配器是备用网络卸载引擎。
45.权利要求31的数据处理系统,其中上述备用网络适配器要求主机执行协议处理。
46.一种数据处理系统,包括:
主机;
与网络通信并与该数据处理系统所包括的主机相关联的网络卸载引擎;
与上述网络通信并与上述主机相关联的备用网络适配器;以及
与上述主机相关联的主机控制程序,其中该主机执行该主机控制程序来执行以下动作:
根据存储于上述主机中的信息,重构该网络卸载引擎的状态信息;
根据该状态信息以上述备用网络适配器继续网络操作。
CNB038258986A 2003-04-02 2003-07-21 智能网络适配器的状态恢复及故障修复 Expired - Lifetime CN100399282C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/406,095 US7114096B2 (en) 2003-04-02 2003-04-02 State recovery and failover of intelligent network adapters
US10/406,095 2003-04-02

Publications (2)

Publication Number Publication Date
CN1739098A true CN1739098A (zh) 2006-02-22
CN100399282C CN100399282C (zh) 2008-07-02

Family

ID=33097247

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038258986A Expired - Lifetime CN100399282C (zh) 2003-04-02 2003-07-21 智能网络适配器的状态恢复及故障修复

Country Status (6)

Country Link
US (1) US7114096B2 (zh)
EP (1) EP1609063B1 (zh)
CN (1) CN100399282C (zh)
AT (1) ATE522865T1 (zh)
AU (1) AU2003259192A1 (zh)
WO (1) WO2004097641A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113109580A (zh) * 2020-01-09 2021-07-13 豪夫迈·罗氏有限公司 用于控制自动分析仪的技术

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850987B1 (en) * 1999-06-01 2005-02-01 Fastforward Networks, Inc. System for multipoint infrastructure transport in a computer network
WO2002084499A1 (en) 2001-04-11 2002-10-24 Chelsio Communications, Inc. Multi-purpose switching network interface controller
US8312117B1 (en) * 2001-11-15 2012-11-13 Unisys Corporation Dialog recovery in a distributed computer system
US7644436B2 (en) * 2002-01-24 2010-01-05 Arxceo Corporation Intelligent firewall
US7007103B2 (en) * 2002-04-30 2006-02-28 Microsoft Corporation Method to offload a network stack
US7275081B1 (en) 2002-06-10 2007-09-25 Juniper Networks, Inc. Managing state information in a computing environment
US20050022017A1 (en) * 2003-06-24 2005-01-27 Maufer Thomas A. Data structures and state tracking for network protocol processing
US7739403B1 (en) 2003-10-03 2010-06-15 Juniper Networks, Inc. Synchronizing state information between control units
US7668923B2 (en) * 2003-10-14 2010-02-23 International Business Machines Corporation Master-slave adapter
US7864806B2 (en) * 2004-01-06 2011-01-04 Broadcom Corp. Method and system for transmission control packet (TCP) segmentation offload
US7668165B2 (en) * 2004-03-31 2010-02-23 Intel Corporation Hardware-based multi-threading for packet processing
JP4343760B2 (ja) * 2004-04-28 2009-10-14 株式会社日立製作所 ネットワークプロトコル処理装置
US7945705B1 (en) 2004-05-25 2011-05-17 Chelsio Communications, Inc. Method for using a protocol language to avoid separate channels for control messages involving encapsulated payload data messages
US7761529B2 (en) * 2004-06-30 2010-07-20 Intel Corporation Method, system, and program for managing memory requests by devices
US20060165084A1 (en) * 2005-01-21 2006-07-27 International Business Machines Corporation RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY TARGET
US20060259570A1 (en) * 2005-05-13 2006-11-16 Microsoft Corporation Method and system for closing an RDMA connection
US7660264B1 (en) 2005-12-19 2010-02-09 Chelsio Communications, Inc. Method for traffic schedulign in intelligent network interface circuitry
US7616563B1 (en) 2005-08-31 2009-11-10 Chelsio Communications, Inc. Method to implement an L4-L7 switch using split connections and an offloading NIC
US7660306B1 (en) 2006-01-12 2010-02-09 Chelsio Communications, Inc. Virtualizing the operation of intelligent network interface circuitry
US7724658B1 (en) 2005-08-31 2010-05-25 Chelsio Communications, Inc. Protocol offload transmit traffic management
US7715436B1 (en) 2005-11-18 2010-05-11 Chelsio Communications, Inc. Method for UDP transmit protocol offload processing with traffic management
US7747999B1 (en) 2005-09-26 2010-06-29 Juniper Networks, Inc. Software installation in a multi-chassis network device
US7760733B1 (en) 2005-10-13 2010-07-20 Chelsio Communications, Inc. Filtering ingress packets in network interface circuitry
US7518986B1 (en) 2005-11-16 2009-04-14 Juniper Networks, Inc. Push-based hierarchical state propagation within a multi-chassis network device
US20070162639A1 (en) * 2005-11-30 2007-07-12 Chu Hsiao-Keng J TCP-offload-engine based zero-copy sockets
US7804769B1 (en) * 2005-12-01 2010-09-28 Juniper Networks, Inc. Non-stop forwarding in a multi-chassis router
US20070174723A1 (en) * 2006-01-18 2007-07-26 Omar Cardona Sub-second, zero-packet loss adapter failover
US20070165520A1 (en) * 2006-01-18 2007-07-19 Messing Jeffrey P Port trunking between switches
CN101022451B (zh) * 2006-02-14 2014-07-23 杭州华三通信技术有限公司 数据通信中连接状态的同步方法及其应用的通信节点
US20070233886A1 (en) * 2006-04-04 2007-10-04 Fan Kan F Method and system for a one bit TCP offload
US20070297334A1 (en) * 2006-06-21 2007-12-27 Fong Pong Method and system for network protocol offloading
US20080134300A1 (en) 2006-07-08 2008-06-05 David Izatt Method for Improving Security of Computer Networks
JP4776471B2 (ja) * 2006-08-11 2011-09-21 株式会社日立製作所 記憶システムおよび記憶システムの論理ユニット調査方法
US7571343B1 (en) * 2006-08-31 2009-08-04 Nortel Networks Limited Handling sequence numbers and/or an anti-replay window after failover between servers
US7821973B2 (en) * 2006-10-24 2010-10-26 Hewlett-Packard Development Company, L.P. Sharing of host bus adapter context
US7715321B2 (en) * 2007-01-30 2010-05-11 International Business Machines Corporation Network interface card transmission control protocol acceleration offload failure detection and recovery mechanism
US7929418B2 (en) * 2007-03-23 2011-04-19 Hewlett-Packard Development Company, L.P. Data packet communication protocol offload method and system
US7743160B2 (en) * 2007-03-29 2010-06-22 Blue Coat Systems, Inc. System and method of delaying connection acceptance to support connection request processing at layer-7
US8935406B1 (en) 2007-04-16 2015-01-13 Chelsio Communications, Inc. Network adaptor configured for connection establishment offload
US8589587B1 (en) * 2007-05-11 2013-11-19 Chelsio Communications, Inc. Protocol offload in intelligent network adaptor, including application level signalling
US8060644B1 (en) 2007-05-11 2011-11-15 Chelsio Communications, Inc. Intelligent network adaptor with end-to-end flow control
US7826350B1 (en) 2007-05-11 2010-11-02 Chelsio Communications, Inc. Intelligent network adaptor with adaptive direct data placement scheme
US7831720B1 (en) 2007-05-17 2010-11-09 Chelsio Communications, Inc. Full offload of stateful connections, with partial connection offload
US8161167B2 (en) 2007-08-28 2012-04-17 Cisco Technology, Inc. Highly scalable application layer service appliances
US7818606B1 (en) * 2007-09-28 2010-10-19 Emc Corporation Methods and apparatus for switch-initiated trespass decision making
US7962587B2 (en) * 2007-12-10 2011-06-14 Oracle America, Inc. Method and system for enforcing resource constraints for virtual machines across migration
US8086739B2 (en) * 2007-12-10 2011-12-27 Oracle America, Inc. Method and system for monitoring virtual wires
US8095661B2 (en) * 2007-12-10 2012-01-10 Oracle America, Inc. Method and system for scaling applications on a blade chassis
US8370530B2 (en) * 2007-12-10 2013-02-05 Oracle America, Inc. Method and system for controlling network traffic in a blade chassis
US7945647B2 (en) * 2007-12-10 2011-05-17 Oracle America, Inc. Method and system for creating a virtual network path
US7984123B2 (en) * 2007-12-10 2011-07-19 Oracle America, Inc. Method and system for reconfiguring a virtual network path
US7965714B2 (en) * 2008-02-29 2011-06-21 Oracle America, Inc. Method and system for offloading network processing
US7970951B2 (en) * 2008-02-29 2011-06-28 Oracle America, Inc. Method and system for media-based data transfer
US7944923B2 (en) * 2008-03-24 2011-05-17 Oracle America, Inc. Method and system for classifying network traffic
US20090288104A1 (en) * 2008-05-19 2009-11-19 Rohati Systems, Inc. Extensibility framework of a network element
US8094560B2 (en) * 2008-05-19 2012-01-10 Cisco Technology, Inc. Multi-stage multi-core processing of network packets
US8667556B2 (en) * 2008-05-19 2014-03-04 Cisco Technology, Inc. Method and apparatus for building and managing policies
US8677453B2 (en) * 2008-05-19 2014-03-18 Cisco Technology, Inc. Highly parallel evaluation of XACML policies
US7917614B2 (en) * 2008-06-10 2011-03-29 International Business Machines Corporation Fault tolerance in a client side pre-boot execution
US8739179B2 (en) * 2008-06-30 2014-05-27 Oracle America Inc. Method and system for low-overhead data transfer
US7941539B2 (en) * 2008-06-30 2011-05-10 Oracle America, Inc. Method and system for creating a virtual router in a blade chassis to maintain connectivity
US20100070471A1 (en) * 2008-09-17 2010-03-18 Rohati Systems, Inc. Transactional application events
JP5516569B2 (ja) * 2009-02-20 2014-06-11 富士通株式会社 情報処理装置及び制御方法
US8363549B1 (en) 2009-09-02 2013-01-29 Juniper Networks, Inc. Adaptively maintaining sequence numbers on high availability peers
US20110134930A1 (en) * 2009-12-09 2011-06-09 Mclaren Moray Packet-based networking system
US8713362B2 (en) 2010-12-01 2014-04-29 International Business Machines Corporation Obviation of recovery of data store consistency for application I/O errors
US8694821B2 (en) 2010-12-03 2014-04-08 International Business Machines Corporation Generation of standby images of applications
US8634415B2 (en) 2011-02-16 2014-01-21 Oracle International Corporation Method and system for routing network traffic for a blade server
US9858241B2 (en) 2013-11-05 2018-01-02 Oracle International Corporation System and method for supporting optimized buffer utilization for packet processing in a networking device
US8990560B2 (en) * 2011-06-17 2015-03-24 The Boeing Company Multiple independent levels of security (MILS) host to multilevel secure (MLS) offload communications unit
US9473596B2 (en) 2011-09-27 2016-10-18 International Business Machines Corporation Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections
US8995261B2 (en) * 2011-10-17 2015-03-31 Lg Electronics Inc. Method and apparatus of network traffic offloading
US8880935B2 (en) 2012-06-12 2014-11-04 International Business Machines Corporation Redundancy and load balancing in remote direct memory access communications
US8930507B2 (en) 2012-06-12 2015-01-06 International Business Machines Corporation Physical memory shared among logical partitions in a VLAN
US9396101B2 (en) 2012-06-12 2016-07-19 International Business Machines Corporation Shared physical memory protocol
CN103944691B (zh) * 2013-01-17 2019-01-15 中兴通讯股份有限公司 一种协同业务传输中的数据重传方法及接入网网关
US9712541B1 (en) * 2013-08-19 2017-07-18 The Boeing Company Host-to-host communication in a multilevel secure network
US8984173B1 (en) 2013-09-26 2015-03-17 International Business Machines Corporation Fast path userspace RDMA resource error detection
US9489327B2 (en) 2013-11-05 2016-11-08 Oracle International Corporation System and method for supporting an efficient packet processing model in a network environment
WO2016019172A1 (en) * 2014-07-30 2016-02-04 Forward Networks, Inc. Systems and methods for network management
US10419170B2 (en) * 2015-02-26 2019-09-17 Qualcomm Incorporated RRC aware TCP retransmissions
US20160323792A1 (en) * 2015-04-29 2016-11-03 Aruba Networks, Inc. Wireless client session continuity across controller failover and load-balancing
US10649950B2 (en) * 2016-08-29 2020-05-12 Excelero Storage Ltd. Disk access operation recovery techniques
US11494125B2 (en) * 2020-12-17 2022-11-08 Western Digital Technologies, Inc. Storage system and method for dual fast release and slow release responses
US20220206908A1 (en) * 2020-12-30 2022-06-30 Oracle International Corporation Techniques for replicating state information for high availability

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295258A (en) 1989-12-22 1994-03-15 Tandem Computers Incorporated Fault-tolerant computer system with online recovery and reintegration of redundant components
US5774640A (en) 1991-10-21 1998-06-30 Tandem Computers Incorporated Method and apparatus for providing a fault tolerant network interface controller
US5473599A (en) * 1994-04-22 1995-12-05 Cisco Systems, Incorporated Standby router protocol
KR100195065B1 (ko) * 1996-06-20 1999-06-15 유기범 데이타 통신망 정합장치
CA2216980C (en) * 1996-10-04 2001-09-25 Hitachi, Ltd. Communication method
US6049825A (en) * 1997-03-19 2000-04-11 Fujitsu Limited Method and system for switching between duplicated network interface adapters for host computer communications
US6105151A (en) 1997-05-13 2000-08-15 3Com Corporation System for detecting network errors
US6253334B1 (en) 1997-05-13 2001-06-26 Micron Electronics, Inc. Three bus server architecture with a legacy PCI bus and mirrored I/O PCI buses
US6052733A (en) 1997-05-13 2000-04-18 3Com Corporation Method of detecting errors in a network
US6314525B1 (en) 1997-05-13 2001-11-06 3Com Corporation Means for allowing two or more network interface controller cards to appear as one card to an operating system
US6134678A (en) 1997-05-13 2000-10-17 3Com Corporation Method of detecting network errors
US6393483B1 (en) * 1997-06-30 2002-05-21 Adaptec, Inc. Method and apparatus for network interface card load balancing and port aggregation
US5937169A (en) * 1997-10-29 1999-08-10 3Com Corporation Offload of TCP segmentation to a smart adapter
US6157965A (en) * 1998-02-27 2000-12-05 Intel Corporation System and method for binding a virtual device driver to a network driver interface
US6311288B1 (en) 1998-03-13 2001-10-30 Paradyne Corporation System and method for virtual circuit backup in a communication network
US6247141B1 (en) * 1998-09-24 2001-06-12 Telefonaktiebolaget Lm Ericsson (Publ) Protocol for providing replicated servers in a client-server system
US6618819B1 (en) * 1999-12-23 2003-09-09 Nortel Networks Limited Sparing system and method to accommodate equipment failures in critical systems
US6763479B1 (en) * 2000-06-02 2004-07-13 Sun Microsystems, Inc. High availability networking with alternate pathing failover
US6615221B2 (en) * 2001-03-09 2003-09-02 Hewlett-Packard Development Company, Lp. Scalable transport layer protocol for multiprocessor interconnection networks that tolerates interconnection component failure
US6853617B2 (en) * 2001-05-09 2005-02-08 Chiaro Networks, Ltd. System and method for TCP connection protection switching
US20030046330A1 (en) * 2001-09-04 2003-03-06 Hayes John W. Selective offloading of protocol processing
US6910150B2 (en) * 2001-10-15 2005-06-21 Dell Products L.P. System and method for state preservation in a stretch cluster
FR2831743B1 (fr) * 2001-10-25 2004-01-30 Cit Alcatel Systeme de routage is-is tolerant aux fautes et procede correspondant
US7535913B2 (en) * 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
US7292535B2 (en) * 2002-05-23 2007-11-06 Chiaro Networks Ltd Highly-available OSPF routing protocol
US7155632B2 (en) * 2002-06-27 2006-12-26 Nokia, Inc. Method and system for implementing IS-IS protocol redundancy
US7269133B2 (en) * 2002-09-03 2007-09-11 Jeremy Benjamin IS-IS high availability design
US6721806B2 (en) 2002-09-05 2004-04-13 International Business Machines Corporation Remote direct memory access enabled network interface controller switchover and switchback support
US7599285B2 (en) * 2003-11-03 2009-10-06 Cisco Technology, Inc. Combined electro-mechanical and solid state switching fabric

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113109580A (zh) * 2020-01-09 2021-07-13 豪夫迈·罗氏有限公司 用于控制自动分析仪的技术

Also Published As

Publication number Publication date
ATE522865T1 (de) 2011-09-15
AU2003259192A1 (en) 2004-11-23
WO2004097641A1 (en) 2004-11-11
CN100399282C (zh) 2008-07-02
EP1609063A4 (en) 2009-03-11
EP1609063B1 (en) 2011-08-31
US7114096B2 (en) 2006-09-26
US20040199808A1 (en) 2004-10-07
EP1609063A1 (en) 2005-12-28

Similar Documents

Publication Publication Date Title
CN1739098A (zh) 智能网络适配器的状态恢复及故障修复
US7929422B2 (en) Method of moving a transport connection among network hosts
TWI397284B (zh) 網路介面卡傳輸控制協定加速卸載失敗偵測及回復機制
JP3932994B2 (ja) サーバ引継システムおよびその方法
US7512072B2 (en) TCP/IP method FPR determining the expected size of conjestion windows
US7693070B2 (en) Congestion reducing reliable transport packet retry engine
US7185114B1 (en) Virtual memory systems and methods
CN1671094A (zh) 对假超时的响应
CN1710880A (zh) 探索路径最大传输单元的方法和设备
US20100262859A1 (en) System and method for fault tolerant tcp offload
CN1458590A (zh) 用网络栈同步和上载已卸载网络栈连接的方法
JPH11143845A (ja) ネットワークノード間のメッセージ送信用システム及び方法
CN114268991A (zh) 数据传输方法、装置、电子设备、存储介质
US20080267176A1 (en) Selective preservation of network state during a checkpoint
US7535916B2 (en) Method for sharing a transport connection across a multi-processor platform with limited inter-processor communications
CN1285035C (zh) 数据存储
US7420991B2 (en) TCP time stamp processing in hardware based TCP offload
US8527650B2 (en) Creating a checkpoint for modules on a communications stream
US7672239B1 (en) System and method for conducting fast offloading of a connection onto a network interface card
CN1305268C (zh) 符合ipmi规范的sol的实现方法
CN1961559A (zh) 校验数据完整性
JP2004007354A (ja) 計算機間データ転送方法及びデータ同報配信方法
US8634419B2 (en) Reliable and fast method and system to broadcast data
WO2001067272A1 (en) Virtual memory systems and methods

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
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20080702