一种tcp连接热备份的实现方法

文档序号:8265812阅读:533来源:国知局
一种tcp连接热备份的实现方法
【技术领域】
[0001]本发明涉及网络通信技术领域,具体涉及一种TCP连接热备份的实现方法。
【背景技术】
[0002]TCP (Transmiss1n Control Protocol,传输控制协议)是当今网络世界使用最为普遍的传输层协议,目前流行的协议如FTP、HTTP等都是基于TCP实现。随着路由器使用场景越来越复杂,越来越多样化,对基于TCP技术的服务提出了更高标准的要求,因此TCP高可靠性应运而生。
[0003]TCP NSR(Non-Stop Routing)是实现TCP高可靠性的实现方式之一,是指为分布式设备提供热备份的机制,又称多主控技术。为分布式设备配备两块或多块主控盘,一块为主用盘(以下简称主盘)、其它为备用盘(以下简称备盘),当主盘发生故障时,系统自动进行主备倒换,由备盘无缝、平滑地接替主盘的工作。
[0004]如图1所示,Node A和Node B之间建立一条TCP连接。Node B是一台分布式的设备,有主盘和备盘。正常工作时由主盘完成这个TCP连接,主盘出现问题由备盘接替。这个简单的备份,在使用TCP协议时遇到难题:由于备盘无法获知主盘上TCP连接运行状态,缓存数据以及已使用的序列号,发生切换时必须重新建立一条新的TCP连接,而这将会导致严重的问题。比如Node B和Node A是两台路由器,之间运行BGP路由协议,一旦重建TCP,就要重新交换路由信息,因此产生路由震荡。
[0005]为解决该问题,目前业界采用两种方案:
[0006]如图2所示的第一种方案中,通过修改TCP状态机来实现TCP的备份。图中的ESTAB是TCP状态机中固有的稳定状态,本方案在在ESTAB之前新增了 SYN RCVD*和SYNSENT* 两个 TCP 状态。各个状态变迀中的 Rec ACK,Rec SYNC,Send SYN、Rec SYN、ACK、SendACK、Need Synchronizat1n均为报文格式,这种方案能解决TCP备份的难点,但致命的问题在于,该方案只适用于同一家厂商的路由器,其他厂商路由器上的TCP/IP协议栈并不感知SYN RCVD*和SYN SENT*这两个状态,从而导致丢弃报文。
[0007]如图3所示的第二种方案中,是把主盘接收或发送的packet报文都复制一份给备盘,如果主盘和备盘采用相同算法,则可以保持一致的TCP状态。而本方案中,主盘和备盘是独立的,虽然算法一致,但实际上各进程的调度顺序可能存在差异,要做到完全一致很困难。在实际使用中,也会导致丢弃报文。

【发明内容】

[0008]针对现有技术中存在的缺陷,本发明的目的在于提供一种TCP连接热备份的实现方法,保证TCP连接主备倒换不断连,防止报文丢失。
[0009]为达到以上目的,本发明采取的技术方案是:一种TCP连接热备份的实现方法,基于发送端和接收端,发送端和接收端均包括主盘和备盘,主盘和备盘均包括TCP/IP协议栈和报文缓存队列,TCP/IP协议栈又包括TCP模块,所述实现方法包括:对于发送端发送报文,经过该端TCP模块处理后,在传递给网络层处理之前,将报文备份到备盘,收到备盘回复的确认报文后,继续处理报文并发送给接收端;对于接收端接收报文,经链路层和网络层处理后,传递给传输层处理之前,将报文备份到备盘,收到备盘回复的确认报文后,主盘才继续处理报文,并将报文上送到接收端应用程序。
[0010]在上述技术方案的基础上,发送端的应用程序创建socket控制块,主盘TCP/IP协议栈将相关的socket控制块备份到备盘,备盘创建对应的socket控制块。
[0011]在上述技术方案的基础上,在发送端,主盘的应用程序发送报文后阻塞在发送函数中,主盘TCP/IP协议栈收到报文,调用TCP模块处理后,在发送给网络层之前,将报文、报文的开始序列号和结束序列号备份到发送端的备盘,备盘收到主盘备份的报文后,缓存到报文缓存队列中,并向主盘发送确认报文,主盘接收到备盘的确认报文后,通知阻塞在发送函数中的应用程序返回;主盘继续调用网络层和链路层相关处理函数,按正常流程将报文传送给接收端。
[0012]在上述技术方案的基础上,对于发送端,当主盘有报文未发送出去,则发生主备倒换,备盘升级为主盘,将报文缓存队列中的报文重新组织发送出去。
[0013]在上述技术方案的基础上,接收端的用户创建socket控制块时,主盘TCP/IP协议栈将相关的socket控制块备份到备盘,备盘创建相应的socket控制块。
[0014]在上述技术方案的基础上,接收端通过其主盘TCP/IP协议栈的物理接口接收报文,报文经过链路层及网络层处理后,传递至主盘传输层入口时,主盘TCP模块缓存该报文到缓存队列中,并透传至备盘的TCP模块,备盘收到报文后向主盘回复确认报文;主盘TCP模块收到确认报文后,从主盘的报文缓存队列中找出相应的报文,经过处理后向发送端回复ACK报文,并将接收到的由发送端发来的报文上传至主盘应用程序。
[0015]在上述技术方案的基础上,所述发送端或接收端,其备盘插入瞬间,主盘检测到备盘上线,如果主盘的TCP缓冲区中有缓存报文,主盘TCP模块将报文上送至主盘应用程序,并通知主盘应用程序开始收方向定界,主盘应用程序进行相关数据备份。
[0016]在上述技术方案的基础上,所述主盘应用程序进行相关数据备份具体为,主盘应用程序通知主盘TCP模块进行发送方向的定界,TCP模块将相关数据备份到备盘的TCP模块。
[0017]本发明的有益效果在于:将TCP状态信息从主盘备份到备盘,同时将该TCP连接的报文以及序列号一起备份到备盘,当主盘发生故障时,系统自动进行主备倒换,倒换后,基于备份的报文做平滑处理,由备盘无缝、平滑地接替主盘的工作,从而保证TCP连接不断连。
【附图说明】
[0018]图1为【背景技术】中双节点通讯图;
[0019]图2为【背景技术】中第一种方案示意图;
[0020]图3为【背景技术】中第二种方案示意图;
[0021]图4为本发明TCP连接热备份的实现方法的原理图;
[0022]图5为本发明实施例发送报文处理流程图;
[0023]图6为本发明实施例接收报文处理流程图。
【具体实施方式】
[0024]以下结合附图及实施例对本发明作进一步详细说明。
[0025]本发明TCP连接热备份的实现方法,基于发送端和接收端,发送端和接收端均包括主盘和备盘,如图4所示,为发送端或接收端的主盘和备盘。主盘和备盘均包括BGP(Border Gateway Protocol,边界网关协议)模块、TCP/IP协议栈和报文缓存队列,BGP模块是一个通过sokcet控制块的接口使用TCP服务的APP(应用程序),TCP/IP协议栈包括socket控制块、TCP模块(传输层)和IP模块(网络层),共同对外提供服务。所述实现方法包括:对于发送端发送报文,经过该端TCP模块处理后,在传递给IP模块(网络层)处理之前,将报文备份到备盘,收到备盘回复的确认报文后,继续处理报文并发送给接收端;对于接收端接收报
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1