数据通信中连接状态的同步方法及其应用的通信节点的制作方法

文档序号:7952672阅读:247来源:国知局
专利名称:数据通信中连接状态的同步方法及其应用的通信节点的制作方法
技术领域
本发明涉及网络及通信领域面向连接的数据传输技术,尤其涉及一种数据通信中连接状态的同步方法及应用该方法的通信节点。
背景技术
TCP(Transmission Control Protocol,传输控制协议)是当今网络世界使用最为普遍的传输层协议,在Internet(互联网)上的两点间提供可靠的数据传输。现在最流行的协议如Telnet(远程登录)、FTP(File Transfer Protocol,文件传输协议)、HTTP(Hyper Text Transfer Protocol,超文本传输协议)等都基于TCP技术之上。TCP是面向连接的协议,两个网络节点间在传输数据前要先建立TCP连接,并根据当前的TCP连接状态进行数据传输。
随着在网络上运行的重要应用越来越多,各种关键的网络节点普遍采用以主备切换方式工作的高可用性系统以减少其故障时间。图1中的节点B为一台包括主板和备板的分布式设备,与节点A之间建立TCP连接。在正常工作时,逻辑上节点A与节点B之间的TCP连接实际由节点A与节点B的主板完成。当主板出现问题后,由备板接替主板工作。
对TCP连接,备板必须知道在主备切换发生时的连接状态,如发送和接收方已经使用的序列号等才能接续原有的TCP连接,否则备板只能和节点A重新建立一条新的TCP连接。而重新建立TCP连接在一些情况下可能导致严重的问题,例如节点A与节点B是两台路由器,该TCP连接用来承载BGP(Border Gateway Protocol,边界网关协议)协议,一旦重建TCP连接会在一段时间内造成路由震荡。因此,TCP连接的状态同步成为问题的关键。
现有技术中通常采用两种方法来进行TCP连接状态的同步。仍以图1中的节点A和节点B为例,第一种同步方法如图2所示,每次节点A和节点B的主板之间进行TCP报文传输后,主板将每个报文中包括的TCP连接状态信息通过主板与备板间的TCP同步消息通知备板,这样当发生切换时,备板可以通过其备份的连接状态信息接续原有的TCP连接;第二种同步方法如图3所示,节点B的主板将从节点A接收的TCP报文复制一份传输至备板,将发送往节点A的报文也同样复制一份传输给备板,由备板根据从主板接收的复制报文保持与主板TCP连接状态的同步。
这两种方法可以在一定程度上解决TCP连接状态的同步问题,但无法做到在所有的情况下都有效。因为主板只能在接收到节点A的TCP报文后才能生成同步信息或复制该报文发送至备板,即使是主板在向节点A发送TCP报文的同时向备板发送复制报文或同步信息,考虑到主板同时要进行繁重的业务处理,按照操作系统的进程调度机制也很难保证两个发送进程同时进行;换言之,节点A与节点B的报文传输和主备板的状态同步之间基本上无可避免地存在一定的时间差。而在主板失效的情况下,主备切换发生的时机是不可控的,备板可能在任意时刻接替主板的工作,因此备板能否成功接续原有的TCP连接取决于发生切换的时刻状态同步的情况是否与报文传输的情况一致。一旦两者不一致,原有TCP连接状态无法恢复,节点A与节点B之间只能重建TCP连接。
同时,这两种方法都要求主板与备板之间进行TCP连接的实时同步,造成了主板与备板间过多的信息传输,耗用了主板与备板间大量的带宽与CPU(Central Process Unit,中央处理器)的处理能力,降低了设备的性能。

发明内容
本发明要解决的是现有技术中在本地实现连接状态同步所造成的只在部分情况有效和导致高可用性系统性能下降的问题。
本发明所述数据通信中连接状态的同步方法包括以下步骤
节点向与其连接的对端节点请求连接状态信息;节点根据对端节点返回的连接状态信息更新本地的连接状态。
优选地,所述节点包括第一通信单元和至少一个第二通信单元;所述方法在节点向对端节点请求连接状态信息之前还包括第一通信单元将与对端节点的连接参数通知第二通信单元。
优选地,所述节点向对端节点请求连接状态信息具体为一个第二通信单元在接替第一通信单元与对端节点的连接后,以该连接的连接参数向对端节点请求连接状态信息;所述根据对端节点返回的连接状态信息更新本地的连接状态由所述第二通信单元进行。
优选地,所述连接参数包括源网际协议IP地址、目的IP地址、源端口号和目的端口号。
可选地,所述向对端节点请求连接状态信息和根据返回的连接状态信息更新本地连接状态由当前与对端节点连接的第一通信单元或第二通信单元进行。
优选地,所述连接状态信息包括本地序列号和对端序列号。
优选地,所述方法还包括节点向对端节点请求连接状态信息的同时发送本地的窗口大小;所述对端节点返回的连接状态信息中还包括对端的窗口大小。
优选地,所述方法在节点更新本地连接状态后还包括节点向对端节点确认连接状态同步。
优选地,所述向对端节点请求连接状态信息采用传输控制协议TCP建立连接的第一个同步SYN报文的格式;所述确认连接状态同步采用TCP建立连接的第三个SYN报文的格式。
本发明提供的另一种数据通信中连接状态的同步方法包括以下步骤已建立连接的节点接收对端节点的连接状态信息请求;节点将本地的当前连接状态信息返回给对端节点。
优选地,所述方法在向对端节点返回连接状态信息前还包括节点接收到对端节点的连接状态信息请求后,暂停该连接的数据传输。
优选地,所述对端节点的连接状态信息请求中包括对端的窗口大小;所述方法还包括节点根据对端连接状态信息请求中的窗口大小更新本地的对端窗口大小;所述返回给对端节点的当前连接状态信息中包括本地记录的对端序列号、本地序列号和本地的窗口大小。
优选地,所述将当前连接状态信息返回给对端节点采用TCP建立连接的第二个SYN报文的格式,其中确认序列号字段为本地记录的对端序列号。
本发明提供的一种通信节点,包括连接模块和同步请求模块,其中连接模块用来通过与对端节点的连接进行通信;同步请求模块用来通过连接模块向对端节点发送连接状态信息请求,并根据连接模块从对端节点接收的连接状态信息同步本地的连接状态。
优选地,所述同步本地的连接状态包括将本地的连接状态信息置为与接收的连接状态信息相同;通过连接模块向对端节点确认连接状态信息同步。
优选地,所述连接状态信息请求中包括本地窗口大小;所述接收的连接状态信息包括对端节点记录的本地序列号、对端序列号和对端的窗口大小。
本发明提供的第二种通信节点,包括第一通信单元和至少一个第二通信单元,其中
第一通信单元用来将与对端节点的连接参数传输至第二通信单元;第二通信单元用来根据所述连接参数接替第一通信单元与对端节点连接,向对端节点发送连接状态信息请求,并根据从对端节点接收的连接状态信息进行连接状态的同步。
优选地,所述进行本单元连接状态的同步包括将本单元的连接状态信息置为与接收的连接状态信息相同;向对端节点确认连接状态同步。
优选地,所述从对端节点接收的连接状态信息包括对端节点记录的本地序列号和对端序列号;所述连接参数包括源网际协议IP地址、目的IP地址、源端口号和目的端口号。
本发明提供的第三种通信节点,包括连接模块和同步响应模块,其中连接模块用来通过与对端节点的连接进行通信;同步响应模块用来接收连接模块输出的来自对端节点的连接状态信息请求,并将本地当前的连接状态信息通过连接模块发送给对端节点。
优选地,所述通信节点还包括通信控制模块,用来在连接模块接收到对端节点的连接状态信息请求后暂停连接模块的数据通信,在连接模块接收到对端节点的连接状态同步确认后继续连接模块的数据通信。
优选地,所述本地当前的连接状态信息包括本地记录的对端序列号、本地序列号和本地的窗口大小。
本发明通过令可能失步的节点与连接对端的节点同步连接状态信息,从根本上解决了连接状态同步问题,只要能够保持连接就可以恢复同步;同时,本发明不再需要高可用性系统内部频繁的连接状态同步,节省了系统带宽和处理能力,并且在任意时刻发生主备切换均可对原有的连接进行恢复。


图1为高可用性系统的TCP连接示例图;图2为现有技术中第一种连接状态同步方法的示例图;图3为现有技术中第二种连接状态同步方法的示例图;图4为本发明所述连接状态同步方法实施例一中同步请求节点的流程图;图5为TCP/IP协议中TCP报文的字段结构图;图6为本发明所述连接状态同步方法实施例一和二中同步响应节点的流程图;图7为本发明所述连接状态同步方法实施例二中同步请求节点的流程图;图8为应用本发明所述连接状态同步方法的同步请求节点和同步响应节点的结构示意图;图9为应用本发明所述连接状态同步方法的同步请求节点和同步响应节点的结构示意图;图10为本发明增加的TCP状态机示意图;图11为本发明应用示例一中用于连接状态同步的报文的流程图;图12为本发明应用示例二中用于连接状态同步的报文的流程图。
具体实施例方式
现有技术中,高可用性系统的连接状态同步都着眼于在主备之间实现严格的状态同步,使得备板保持与主板的同步以求在切换发生时能够顺利接替主板与对端节点的通信。而在面向连接的数据传输中,与对端节点的连接能够由主板切换到备板,数据传输得以继续的条件是备板与对端节点的连接状态同步,而不是与主板的连接状态一致。如果出于某种原因在切换发生时主板与对端节点的连接状态不同步,即使备板与主板的连接状态完全一致也会导致连接中断。考虑到对端节点的连接状态实际上是本地同步的目标,并且该连接状态与本地的主备切换无关,与其进行工作量繁重的本地状态备份,还需要依赖于切换发生的时刻是否正是对端、主板和备板三者状态同步的时刻,不如直接令备板与对端节点实现连接状态同步,从而从根本上解决这一问题。
下文中,同步请求节点为连接一端需要与对端进行连接状态同步的节点,同步响应节点为连接另一端根据对端请求发送本地连接状态信息的节点。实际应用中同步请求节点通常是一个高可用性系统,例如一个包括主板和备板的路由器、一个包括多个服务器对外以单一逻辑实体运行的集群等等。同步响应节点可能是一个单一的设备,也可能是一个高可用性系统。
本发明所述连接状态同步方法的实施例一中,同步请求节点为一个高可用性系统,包括第一通信单元和至少一个第二通信单元,第一通信单元为与对端节点具有连接关系的单元,既可以是与对端节点建立连接的单元也可以是接替其他单元与对端节点的连接的单元,某个第二通信单元将接替第一通信单元与对端节点连接并继续承载在该连接上的数据传输。
实施例一中同步请求节点的流程如图4所示。在步骤S410,节点与对端节点建立连接。本发明中的连接状态同步发生在连接已经建立的情况下。
采用TCP协议时在进行数据传输前需要在两个通信节点之间建立TCP连接。连接双方的IP地址、用来标识连接双方发送和接收应用进程的端口号可以唯一地确定一个TCP连接,因此通常采用源IP(Internet Protocol,网际协议)地址、目的IP地址、源端口号和目的端口号作为TCP连接的连接参数。
在步骤S420,在连接建立后的某时刻,节点上该连接存在于第一通信单元与对端节点之间。第一通信单元将该连接的连接参数通知第二通信单元,供第二通信单元在切换发生时通过该连接参数来恢复该连接。
在步骤S430,某个第二通信单元接替第一通信单元与对端节点的连接。此时,该连接的连接参数已记录在第二通信单元本地。
第二通信单元何时接替第一通信单元的连接与同步请求节点的工作方式相关,可能发生在第一通信单元失效的情况下,也可能基于负载均衡的需要在第一通信节点正常工作时发生。当存在一个以上第二通信单元时,由哪个第二通信单元接替第一通信单元的连接由同步请求节点的切换设置决定。
第二通信单元以相同的连接参数接替第一通信单元的TCP连接意味着第二通信单元必须使用第一通信单元的IP地址,在第一通信单元仍正常工作的情况下,应当由同步请求节点保证这两个单元能够使用相同的IP地址分别进行各自与其对端节点面向连接的通信。
在步骤S440,该第二通信单元根据切换连接的连接参数向对端节点发送连接状态信息请求。对TCP协议,连接状态信息包括本地序列号和对端序列号,还可以包括本地和对端的窗口大小。
TCP/IP协议报文中TCP报头的字段结构如图5所示,16位源端口号为该报文的发送端应用程序的端口号,16位目的端口号为该报文的接收端应用程序的端口号,这两个字段与IP报头中的源IP地址和目的IP地址一同作为该TCP连接的连接参数。
发送端和接收端的应用程序通过TCP连接交换8bit(位)字节的字节流,TCP连接的每端节点通过序列号和确认序列号分别为本地发送和从对端接收的字节流进行计数。32位序列号表示该报文的发送端在该报文中第一个数据字节所使用的序号,而32位确认序列号表示进行接收确认的一端,即该报文的发送端所期望收到对端发送的下一个数据字节的序列号。数据字节为该TCP连接所传输的载荷部分。
16位窗口大小用来为TCP连接提供流量控制,表示该报文的发送端的缓冲区大小,即能够接收对端数据量的大小。TCP连接的两端节点还可以通过窗口扩大选项协商超过16位的窗口大小。
4位报头长度为TCP报文的总长度,6位保留字段之后为6个标志位,其中SYN(同步)标志位在现有的TCP协议中用来表示发起一个连接,ACK(确认)标志位表示32位确认序列号字段有效,由于TCP协议提供确认机制,在连接已经建立的情况下ACK标志位总是被置位。
可见,第二通信单元需要知道当前该TCP连接的本地序列号和对端序列号才能接续第一通信单元与对端节点进行数据传输工作。同时,还可以在连接状态同步的过程中交换双方的当前窗口大小来实行流量控制,因而,第二通信单元可以在向对端节点发送的连接状态信息请求报文中携带本地当前窗口大小的信息。
第一通信单元在连接状态信息请求中可以包括其记录的当前本地序列号,也可以将本地序列号空缺而由对端节点提供。
回到图4,在步骤S450,该第二通信单元接收对端节点返回的连接状态信息。
在步骤S460,该第二通信单元根据从对端节点接收的连接状态信息更新本地的连接状态。对TCP连接,对端节点返回的报文中TCP报头的序列号字段为对端序列号,确认序列号字段为本地序列号,窗口大小字段为对端的窗口大小。
在步骤S470,该第二通信单元向对端节点发送连接状态同步确认。
本步骤为可选步骤,连接状态同步确认可以用来通知对端节点继续进行数据传输;在不发送连接状态同步确认的情况下,可以由同步请求节点启动恢复数据传输,也可以由对端节点在发送连接状态信息后通过超时机制接续数据传输,或者根据情况二者结合使用。
在连接状态同步完成后,节点继续与对端节点进行原连接的数据传输。
在本实施例中,第二通信单元在连接切换完成后可以成为当前第一通信单元,高可用性系统中可能接替当前第一通信单元的通信单元可以成为当前第二通信单元。这种情况适用于具有逐级备份功能或支持负载动态均衡的高可用性系统。
本实施例中同步响应节点的流程如图6所示,在步骤S610,节点与对端的同步请求节点建立连接。
在步骤S620,节点接收对端节点的连接状态信息请求。如前所述,本发明中的连接状态同步发生在连接已经建立的情况下。
在步骤S630,节点暂停该连接的数据传输。由于面向连接的协议通常都采用确认和超时重传机制,同步响应节点暂停该连接的数据传输可以避免不必要的网络流量。
在步骤S640,当对端节点的连接状态信息请求中包括对端的窗口大小时,节点按照接收的对端窗口大小更新本地连接状态信息中的对端窗口大小。
在步骤S650,节点将本地的当前连接状态信息发送至对端节点,作为对其连接状态信息请求的响应。
在返回给对端节点的当前TCP连接状态信息中,包括节点记录的经过对端节点确认的本地序列号和对端序列号,以便该TCP连接的数据传输可以从对端节点发送连接状态信息请求前完成的字节流之后继续进行。当然,按照通信双方应用程序的通信机制,也可以对已完成的部分字节流重新传输。返回至对端节点的TCP连接状态信息中还可以包括节点当前的窗口大小。
在步骤S660,节点接收对端节点的连接状态同步确认。本步骤用来配合步骤S470,因而本步骤也是可选步骤。
在步骤S670,节点继续该连接的数据传输。
在本发明连接状态同步方法的实施例二中,同步请求节点和同步响应节点都可以是一个单独的设备或者是一个高可用性系统。在实施例二中不考虑同步请求节点内部不同连接单元之间的切换,而将其作为一个连接状态失步的整体看待。例如,同步请求节点的有多个单元可以与同步响应节点建立连接,当前连接单元上的发送进程因故中断,在当前连接单元重新启动发送进程后该连接仍有效,然而丢失了该连接的连接状态,此时并未发生连接切换,但仍需要进行连接状态同步。
实施例二与实施例一的不同之处在于同步请求节点的连接参数记录在本地,在进行连接状态同步前不需要先获得该连接的连接参数。
本实施例中同步请求节点的流程与实施例一中的部分流程基本一致,其详细说明请参见实施例一中的对应步骤,此处不再重复。同步响应节点的流程则与实施例一中相同。
本实施例中同步请求节点的流程如图7所示。在步骤S710,节点与对端节点建立连接。
在步骤S720,节点发现自己可能或已经与对端节点的连接状态失去同步,尤其是在由于本身的原因造成失步的情况下,向对端节点发送连接状态信息请求。节点在发送TCP连接的连接状态信息请求时,可以在请求报文中包括本地的窗口大小。
在步骤S730,节点从对端节点接收到连接状态信息。TCP连接的对端节点返回的连接状态信息中包括当前该连接的本地序列号、对端序列号,还可以包括对端的窗口大小。
在步骤S740,节点将本地的连接状态更新为与对端节点返回的连接状态信息一致。
在步骤S750,节点向对端节点发送连接状态同步确认。同样,本步骤为可选步骤。
在连接状态同步完成后,节点与对端节点继续进行原连接的数据传输。
不难理解,实施例一中同步请求节点在连接切换前,第一通信单元可以采用实施例二中的方法进行连接恢复,在连接切换后,第二通信单元也可以采用实施例二中的方法进行连接恢复。
图8所示为应用实施例一的连接同步方法的同步请求节点和同步响应节点的结构图。同步请求节点810包括相互连接的第一通信单元811和第二通信单元812,二者均连接至同步响应节点820的连接模块821。同步响应节点820除连接模块821外,还包括同步响应模块822和通信控制模块823,这两个模块与连接模块821相互连接。同步请求节点810与同步响应节点820互为对端节点。
第一通信单元811与同步响应节点820的连接模块821之间存在连接,并将该连接的连接参数传输至第二通信单元812。TCP连接的连接参数包括该连接的源IP地址、目的IP地址、源端口号和目的端口号。
当第二通信单元812接替第一通信单元811与同步响应节点820的连接时,使用从第一通信单元811接收的该连接的连接参数向同步响应节点820发送连接状态信息请求,在连接状态请求中可以填入当前第二通信单元812的窗口大小。
同步响应节点820的连接模块821通过与同步请求节点810之间的连接进行双方的通信。当连接模块821接收到第二通信单元812的连接状态信息请求后,将其传输至同步响应模块822。如果同步响应节点具有通信控制模块823,此时由通信控制模块823暂停连接模块821的数据传输。
同步响应模块822将本地记录的当前连接状态信息传输至连接模块821,由连接模块821将回复给第二通信单元812。对其中包括第二通信单元812窗口大小的连接状态信息请求,同步响应模块821还将本地连接状态中的对端窗口大小更新为与接收的窗口大小一致。同步响应节点820回复的连接状态信息中包括其记录的本地序列号和对端序列号,还可以包括本地的窗口大小。
第二通信单元812接收到同步响应节点820的连接状态信息后,根据该连接状态信息进行连接状态同步。第二通信单元812将本地的连接状态更新为与接收的连接状态信息一致,之后可根据具体应用需要在通信双方节点约定是否由第二通信单元812向同步响应节点820发送连接状态同步确认。
在第二通信单元812发送连接状态同步确认的情况下,当连接模块821接收到连接状态同步确认后,可以由通信控制模块823恢复连接模块821的数据传输。
图9所示为应用实施例二的连接同步方法的同步请求节点和同步响应节点的结构图。同步请求节点830包括相互连接的连接模块831和同步请求模块832,其中连接模块831连接至同步响应节点820的连接模块821。同步响应节点820除连接模块821外,还包括同步响应模块822和通信控制模块823,这两个模块与连接模块821相互连接。同步请求节点830与同步响应节点820互为对端节点。
同步请求节点830的连接模块831与同步响应节点820的连接模块821通过其间存在的连接进行两个节点间的通信。当同步请求节点830认为其可能或已经失去与同步响应节点820的连接状态同步时,由同步请求模块832将连接状态信息请求传输至连接模块831,由连接模块831向同步响应节点820发送连接状态信息请求,在连接状态请求中可以填入当前同步请求节点830的窗口大小。
当同步响应节点820的连接模块821接收到同步请求节点830的连接状态信息请求后,将其传输至同步响应模块822。如果同步响应节点具有通信控制模块823,此时由通信控制模块823暂停连接模块821的数据传输。
同步响应模块822将本地记录的当前连接状态信息传输至连接模块821,由连接模块821将回复给同步请求节点830。对其中包括同步请求节点830窗口大小的连接状态信息请求,同步响应模块822还将本地连接状态中的对端窗口大小更新为与接收的窗口大小一致。同步响应节点820回复的连接状态信息中包括其记录的本地序列号和对端序列号,还可以包括本地的窗口大小。
同步请求节点830的连接模块831接收到同步响应节点820的连接状态信息后,将其传输至同步请求模块832同步请求模块832。同步请求模块832根据该连接状态信息进行同步请求节点830的连接状态同步。同步请求模块832将本地的连接状态更新为与接收的连接状态信息一致,之后可根据具体应用需要在通信双方节点约定是否由同步请求模块832向同步响应节点820发送连接状态同步确认。
在同步请求模块832发送连接状态同步确认的情况下,当同步响应节点820的连接模块821接收到连接状态同步确认后,可以由通信控制模块823恢复连接模块821的数据传输。
当图8中同步请求节点810中的第一通信单元811和第二通信单元812都支持实施例二的连接状态同步方法时,第一通信单元811和第二通信单元812可以分别包括各自的连接模块和同步请求模块,用来进行该单元与同步响应节点820的连接恢复。
对上述连接状态同步方法实施例一和实施例二、以及应用实施例一和实施例二方法的同步请求节点和同步响应节点,连接状态信息请求、对连接状态信息请求的响应以及连接状态同步确认都需要通过在该连接上传输的报文实现。而连接状态同步时的两端节点交换的信息与连接建立时类似,其实现的功能也类似,都用来匹配连接双方的状态信息,为后续的数据传输做好准备。因此进行连接状态同步的报文本发明推荐采用用来建立连接的报文格式,通过在报头字段中填入不同的内容来交换连接状态信息。
TCP协议采用三次握手的过程来建立两个通信节点间的TCP连接。第一次握手由发起连接的节点向对端节点发送第一个SYN报文,第一个SYN报文置位SYN标志位,清除ACK标志位,在序列号字段填入发起连接的节点的初始序列号,在窗口大小字段填入当前该节点的窗口大小。对端节点在接收到第一个SYN报文后,如果希望与该节点建立连接则返回第二个SYN报文,第二个SYN报文置位SYN标志位和ACK标志位,在序列号字段填入对端节点的初始序列号,在确认序列号字段填入接收到该节点的初始序列号加1以对第一个SYN报文进行确认;在窗口大小字段填入当前对端节点的窗口大小。发起连接的节点接收到第二个SYN报文后,向对端节点发送第三个SYN报文,第三个SYN报文置位ACK标志位,并在确认序列号字段将对端节点的初始序列号加1以对第二个SYN报文进行确认,在窗口大小字段填入当前该节点的窗口大小。上述三个SYN报文完成TCP连接的建立。
在TCP连接的同步过程中,连接状态信息请求报文可以采用第一个SYN报文的格式,其中序列号字段填入同步请求节点当前正在使用的序列号,如果当前正在使用的序列号未知可以填入0值;确认序列号字段填入0值;置位SYN标志位、清除ACK标志位;在窗口大小字段填入同步请求节点当前的窗口大小。
同步响应节点回复的连接状态信息响应报文可以采用第二个SYN报文的格式,其中序列号字段填入同步响应节点当前正在使用的序列号;确认序列号字段填入本地记录的同步请求节点的序列号;置位SYN和ACK标志位;在窗口大小字段填入同步响应节点当前的窗口大小。
同步请求节点的连接状态同步确认报文可以采用第三个SYN报文的格式,并且各字段填入的内容也可以与第三个SYN报文相同。
需要说明的是,本发明中的连接状态同步发生在已经建立连接的情况下,因而通信双方的节点可以通过发送或接收上述三个报文时该连接的情况来判断是用于建立连接的报文还是进行连接状态同步的报文,从而进行对应的操作。另外,现有技术中TCP连接一端的节点在连接已经建立的情况下收到该连接的SYN报文,通常会使用使用复位报文终止该连接,而应用本发明后,在连接已建立的情况下收到SYN报文的节点应向对端节点回复连接状态信息。
在TCP连接建立后进行连接状态同步的状态机如图10所示,已经建立的TCP连接处于Established(已建立连接)状态,为了区别于建立连接过程中的SYN RCVD(SYN报文已接收)和SYN SENT(SYN报文已发送)状态,在连接状态同步过程中为EST SYN RCVD(连接后SYN报文已接收)和ESTSYN SENT(连接后SYN报文)状态。
处于Established状态的节点在需要进行连接状态同步时发送连接状态信息请求报文后进入EST SYN SENT状态;在接收到对端节点的连接状态信息响应报文后进行连接状态同步,发送连接状态同步确认报文后重新回到Established状态。处于Established状态的节点在接收到连接状态信息请求报文,向对端节点返回连接状态信息响应报文后进入EST SYN RCVD状态,在接收到对端节点的连接状态同步确认报文后重新回到Established状态。
以下通过两个具体的例子说明本发明的应用。
本发明的应用示例一请见图1所示分布式系统的TCP连接,其连接状态同步的流程如图11所示。节点B的主板发生故障后,备板接替主板工作,备板只需知道原TCP连接的目的IP地址、源IP地址、目的端口号和源端口号,就可以向节点A发送连接状态信息请求报文,接收节点A的连接状态信息响应报文,再向节点A发送连接状态同步确认报文来完成连接状态同步的过程。之后节点B就可以继续和节点A进行数据传输了,这个过程对上层的应用程序而言几乎是不可见的。
本发明的应用示例二中,节点C与节点D之间通过TCP连接进行数据传输。当节点C或其上的进程重新启动以后,只要还保有该连接的目的IP地址、源IP地址、目的端口号和源端口号,就可以通过与节点D交互连接状态信息请求报文、连接状态信息响应报文和连接状态同步确认报文来进行连接状态同步,使该TCP连接得以恢复。也就是说,节点C上短时间内的重新启动行为不会对基于该连接的数据传输造成影响。
可见,本发明不仅对高可用性系统在各种情况下和任意时刻的切换都可以继续原有的连接,并且对集中式系统短时间故障造成的连接状态失步也能够实现恢复的效果。同时,本发明不需要高可用性系统的各个连接单元之间进行连接状态的实时同步,而只需向备份连接单元传输一次该连接的连接参数,从而使得高可用性系统的处理器和内部带宽均得以释放,确保了系统的业务处理能力。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。
权利要求
1.一种数据通信中连接状态的同步方法,其特征在于,包括以下步骤节点向与其连接的对端节点请求连接状态信息;节点根据对端节点返回的连接状态信息更新本地的连接状态。
2.如权利要求1所述数据通信中连接状态的同步方法,其特征在于所述节点包括第一通信单元和至少一个第二通信单元;所述方法在节点向对端节点请求连接状态信息之前还包括第一通信单元将与对端节点的连接参数通知第二通信单元。
3.如权利要求2所述数据通信中连接状态的同步方法,其特征在于,所述节点向对端节点请求连接状态信息具体为一个第二通信单元在接替第一通信单元与对端节点的连接后,以该连接的连接参数向对端节点请求连接状态信息;所述根据对端节点返回的连接状态信息更新本地的连接状态由所述第二通信单元进行。
4.如权利要求3所述数据通信中连接状态的同步方法,其特征在于,所述连接参数包括源网际协议IP地址、目的IP地址、源端口号和目的端口号。
5.如权利要求2所述数据通信中连接状态的同步方法,其特征在于所述向对端节点请求连接状态信息和根据返回的连接状态信息更新本地连接状态由当前与对端节点连接的第一通信单元或第二通信单元进行。
6.如权利要求1至5任意一项所述数据通信中连接状态的同步方法,其特征在于所述连接状态信息包括本地序列号和对端序列号。
7.如权利要求6所述数据通信中连接状态的同步方法,其特征在于所述方法还包括节点向对端节点请求连接状态信息的同时发送本地的窗口大小;所述对端节点返回的连接状态信息中还包括对端的窗口大小。
8.如权利要求1至5任意一项所述数据通信中连接状态的同步方法,其特征在于,所述方法在节点更新本地连接状态后还包括节点向对端节点确认连接状态同步。
9.如权利要求8所述数据通信中连接状态的同步方法,其特征在于所述向对端节点请求连接状态信息采用传输控制协议TCP建立连接的第一个同步SYN报文的格式;所述确认连接状态同步采用TCP建立连接的第三个SYN报文的格式。
10.一种数据通信中连接状态的同步方法,其特征在于,包括以下步骤已建立连接的节点接收对端节点的连接状态信息请求;节点将本地的当前连接状态信息返回给对端节点。
11.如权利要求10所述数据通信中连接状态的同步方法,其特征在于,所述方法在向对端节点返回连接状态信息前还包括节点接收到对端节点的连接状态信息请求后,暂停该连接的数据传输。
12.如权利要求10或11所述数据通信中连接状态的同步方法,其特征在于所述对端节点的连接状态信息请求中包括对端的窗口大小;所述方法还包括节点根据对端连接状态信息请求中的窗口大小更新本地的对端窗口大小;所述返回给对端节点的当前连接状态信息中包括本地记录的对端序列号、本地序列号和本地的窗口大小。
13.如权利要求12所述数据通信中连接状态的同步方法,其特征在于所述将当前连接状态信息返回给对端节点采用TCP建立连接的第二个SYN报文的格式,其中确认序列号字段为本地记录的对端序列号。
14.一种通信节点,其特征在于,包括连接模块和同步请求模块,其中连接模块用来通过与对端节点的连接进行通信;同步请求模块用来通过连接模块向对端节点发送连接状态信息请求,并根据连接模块从对端节点接收的连接状态信息同步本地的连接状态。
15.如权利要求14所述的通信节点,其特征在于,所述同步本地的连接状态包括将本地的连接状态信息置为与接收的连接状态信息相同;通过连接模块向对端节点确认连接状态信息同步。
16.如权利要求14或15所述的通信节点,其特征在于所述连接状态信息请求中包括本地窗口大小;所述接收的连接状态信息包括对端节点记录的本地序列号、对端序列号和对端的窗口大小。
17.一种通信节点,其特征在于,包括第一通信单元和至少一个第二通信单元,其中第一通信单元用来将与对端节点的连接参数传输至第二通信单元;第二通信单元用来根据所述连接参数接替第一通信单元与对端节点连接,向对端节点发送连接状态信息请求,并根据从对端节点接收的连接状态信息进行连接状态的同步。
18.如权利要求17所述的通信节点,其特征在于,所述进行本单元连接状态的同步包括将本单元的连接状态信息置为与接收的连接状态信息相同;向对端节点确认连接状态同步。
19.如权利要求17或18所述的通信节点,其特征在于所述从对端节点接收的连接状态信息包括对端节点记录的本地序列号和对端序列号;所述连接参数包括源网际协议IP地址、目的IP地址、源端口号和目的端口号。
20.一种通信节点,其特征在于,包括连接模块和同步响应模块,其中连接模块用来通过与对端节点的连接进行通信;同步响应模块用来接收连接模块输出的来自对端节点的连接状态信息请求,并将本地当前的连接状态信息通过连接模块发送给对端节点。
21.如权利要求20所述的通信节点,其特征在于,所述通信节点还包括通信控制模块,用来在连接模块接收到对端节点的连接状态信息请求后暂停连接模块的数据通信,在连接模块接收到对端节点的连接状态同步确认后继续连接模块的数据通信。
22.如权利要求21所述的通信节点,其特征在于所述本地当前的连接状态信息包括本地记录的对端序列号、本地序列号和本地的窗口大小。
全文摘要
本发明公开了一种数据通信中连接状态的同步方法,包括节点向与其连接的对端节点请求连接状态信息;节点根据对端节点返回的连接状态信息更新本地的连接状态。本发明还公开了应用该方法的通信节点。本发明通过令可能失步的节点与连接对端的节点同步连接状态信息,从根本上解决了连接状态同步问题,只要能够保持连接就可以恢复同步;同时,本发明不再需要高可用性系统内部频繁的连接状态同步,节省了系统带宽和处理能力,并且在任意时刻发生主备切换均可对原有的连接进行恢复。
文档编号H04L29/06GK101022451SQ20061000749
公开日2007年8月22日 申请日期2006年2月14日 优先权日2006年2月14日
发明者王飓 申请人:杭州华为三康技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1