一种实现tcp连接备份的系统及方法

文档序号:7957634阅读:163来源:国知局
专利名称:一种实现tcp连接备份的系统及方法
技术领域
本发明属于数据通信领域,尤其涉及一种实现TCP连接备份的系统及方法。
背景技术
传输控制协议(Transmission Control Protocol, TCP )是一种可靠的报文传 送控制协议,利用滑动窗口机制实现报文重传。由于TCP的序列号确认重传机 制比较复杂,因此难以对TCP连接进行备份。目前,主要通过TCP多播机制和TCP镜傳4几制两种方式对TCP连接进行 备份。在TCP多播机制中,主TCP连接的收发报文均拷贝 一份到备份TCP连 接,容易造成报文丢失,可能造成报文失序。在TCP镜像机制中,备板(Standby Main Board, SMB ) TCP首先处理报文。接收报文时,报文首先到达备板TCP, 然后拷贝 一份到主板TCP。发送报文时,主板TCP首先将"t艮文发送到备板TCP, 由备板TCP发出。在上述TCP镜像机制中,由于发送报文的备份是在TCP中实现的,TCP 可能将应用数据切割成多个TCP报文,然后再将TCP报文发送到SMB,进程 间通信(Inter Process Communication, IPC)通道利用率j氐。同时,由于大量的 报文緩冲,导致资源消耗庞大,通信效率很低。另外,所有操作必须由备板TCP 优先完成,导致报文的处理环节增加,也降低了通信效率。当应用程序将报文发送到套接字(socket)后,由于认为TCP是可靠的, 只要发送到socket,应用程序就认为报文发送成功,而实际上socket中的緩存 报文在倒换过程中会有部分丢失,此时应用程序无法知晓报文丢失,从而造成 报文的永久性丢失。
当应用程序发送大块报文时,TCP内部将切分报文,如果在完成部分切分 报文的发送后发生主备倒换,由于对端已经接收了部分报文,再发送报文时, 对端会将对已接收的报文与新接收的报文进行组织,重新发送大块报文,由 于会有重叠报文,而报文的序列号不重叠,导致大块报文不完整,同时应用程 序也无法界定报文边界,容易导致报文错误。发明内容本发明的目的在于提供一种实现TCP连接备份的方法,旨在解决现有技术中存在的TCP连接备份的可靠性和传送效率较低的问题。本发明的另 一 目的在于提供一种在发送报文时实现TCP连接备份的方法。 本发明的另 一 目的在于提供一种实现TCP连接备份的系统。 本发明是这样实现的, 一种实现TCP连接备份的方法,所述方法包括 在发送报文时,主板预测报文的边界信息,将报文以及报文的边界信息备份到备板,并将报文发送给对端;在接收报文时,备板将对端的报文以及对端接收到的报文的边界信息备份到主板,并根据所述对端接收到的报文的边界信息删除本地备份的对端已经接收到的报文。所述主板预测报文的边界信息的步骤包括A. 接收主板应用程序传送的报文以及报文的大小信息;B. 根据所述报文的大小信息获取所述报文的边界信息。 所述步骤B进一步包括下述步骤Bl.根据报文的边界信息和后续报文的大小信息计算后续报文的边界信息。 所述备板将对端的报文以及对端接收到的报文的边界信息备份到主板,并根据所述对端接收到的报文的边界信息删除本地备份的对端已经接收到的报文的步骤包括A.接收对端的报文以及对端接收到的报文的边界信息;
B. 将对端的报文以及对端接收到的报文的边界信息备份到主板;C. 根据所述对端接收到的报文的边界信息确认对端已经接收到的报文;D. 将本地备份的对端已经接收到的报文删除。 所述方法进一步包括下述步骤如果在报文完成部分发送时发生主备倒换,备板根据所述报文的边界信息 将本地备份的所述报文发送给对端。 所述方法进一步包括下述步骤如果在报文完成部分发送时发生主备倒换,备板根据对端返回的接收到的 报文的边界信息确认对端未收到的报文的边界信息,根据所述对端未收到的报 文的边界信息将本地备份的所述对端未收到的报文发送给对端。 主板通过滑动窗口方式将报文及报文的边界信息备份到备板。 主板和备板之间通过IPC消息传送报文以及报文的边界信息。 所述边界信息包括报文的开始序列号和结束序列号。 一种在发送报文时实现TCP连接备份的方法,所述方法包括 在发送报文前,预测报文的边界信息,并备份所述报文以及报文的边界信台、所述预测报文的边界信息的步骤包括A. 接收应用程序传送的报文以及报文的大小信息;B. 根据所述报文的大小信息获取所述报文的边界信息。 所述步骤B进一步包括下述步骤Bl.根据报文的边界信息和后续报文的大小信息计算后续报文的边界信息。 所述边界信息包括报文的开始序列号和结束序列号。 一种实现TCP连接备份的系统,所述系统包括报文发送备份单元,用于在发送报文时,将报文以及报文的边界信息备份 到备板,并将报文发送给对端;报文接收备份单元,用于在接收报文时,将对端的报文以及对端接收到的
报文的边界信息备份到主板,并根据所述对端接收到的报文的边界信息删除本 地备份的对端已经接收到的报文。所述报文发送备份单元包括主緩沖器模块,用于接收主板应用程序传送的报文以及报文的大小信息, 根据所述报文的大小信息获取所述报文的边界信息,并将所述报文以及报文的边界信息备份到报文接收备份单元;主TCP模块,用于根据主緩冲器模块发送的报文的大小信息向主緩沖器模 块返回报文的边界信息,接收主緩冲器模块发送的报文,并根据所述报文的边 界信息将所述报文发送给对端。所述主緩冲器模块进一步用于根据报文的边界信息和后续报文的大小信息 计算后续报文的边界信息。所述主緩沖器模块位于Socket接口之下、之下或者主TCP模块之内。 所述报文接收备份单元包括备份TCP模块,用于接收对端的报文以及对端接收到的报文的边界信息, 将对端的报文以及对端接收到的报文的边界信息备份到主板;备份緩冲器模块,用于接收并緩存报文发送备份单元备份的报文以及报文 的边界信息,根据备份TCP模块发送的所述对端接收到的报文的边界信息确认 对端已经接收到的报文,将本地备份的对端已经接收到的报文删除。所述备份緩冲器模块位于Socket接口之下、之下或者备份TCP模块之内。所述报文发送备份单元通过滑动窗口方式将报文及报文的边界信息备份到 备板。所述报文发送备份单元和报文发送备份单元之间通过IPC消息传送报文以 及报丈的边界信息。所述边界信息包括报文的开始序列号和结束序列号。本发明在发送报文前预测报文的边界信息,然后将报文和报文的边界信息 备份到备板,当主备倒换后,备板按原报文的序列号将报文重新发送出去,保证对端能够收到完整的报文,从而实现报文在主备倒换时的完整性保护,提高 了主备倒换的可靠性,有效解决TCP数据报文边界问题,确保发送报文无任何 损失,并且将报文的镜像分布在主、备板,简化了报文緩冲流程。通过对大块 数据进行备份,实现应用数据的汇聚,提高了 IPC通道的利用率,且每个板仅单方向镜像,效率更高。本发明很好地支持了 TCP滑动窗口机制,緩冲器模块 的预处理不影响后续的滑动窗口处理,由于预处理有緩沖机制,不影响TCP的 原有发送速度,传送效率高。另外,本发明不依赖应用程序独立完成TCP连接 备份,具有普遍适用性。


图1是本发明中緩冲器模块设置于Socket接口之下时,TCP连接备份系统 的结构原理图;图2是本发明中緩冲器模块设置于Socket接口之上时,TCP连接备份系统 的结构原理图;图3是本发明中緩沖器模块设置于TCP模块之内时,TCP连接备份系统的 结构原理图;图4是本发明中实现TCP连接备份时的报文发送流程图; 图5是本发明中实现TCP连接备份时的报文接收流程图; 图6是本发明中主备倒换后数据重发的原理示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅 仅用以解释本发明,并不用于限定本发明。本发明在发送报文前预测报文的边界信息,然后将报文和报文的边界信息 备份到备板,当主备倒换后,备板按原报文的序列号将报文重新发送出去,保 证对端能够收到完整的报文,从而实现报文在主备倒换时的完整性保护。TCP连接备份到备板,在接收报文时,将TCP连接备份到主板。在实现上,本 发明在主板和备板上分别增加了一个緩冲器模块(Bumper),利用緩冲器模块 完成TCP连接在收发两个方向上的镜像备份。緩冲器(Bumper)模块可以设置于TCP模块和套接字(socket)接口之间, 如图l所示,也可以设置于socket接口之上,如图2所示,或者设置于TCP模 块之内,如图3所示。主緩冲器模块与主TCP模块协同确定发送报文的边界信息(报文的开始序 列号和结束序列号),并将报文和报文的边界信息备份到备份緩冲器模块,确 保主应用程序发送到主TCP模块的报文在主备倒换后仍能准确发送到对端。主 备倒换后,备份TCP模块根据报文的序列号发送报文,因此发送到备份緩冲器 模块中的报文由备份TCP模块按原报文的序列号重新发送给对端,实现报文的 完整性保护。主緩沖器模块与备份緩冲器模块之间以及主TCP模块与备份TCP 模块之间通过IPC消息通讯。在发送报文时,如图4所示,主应用程序首先将报文以及报文的大小信息 通过Socket接口发送给主緩冲器模块,主緩沖器模块阻塞住应用程序。主緩沖 器模块根据报文的大小信息从主TCP模块获取发送报文的开始序列号和结束 序列号,以后主緩沖器模块可以根据该结束序列号和后续报文的大小直接计算 出后续报文的开始序列号和结束序列号,并将报文以及报文的开始序列号和结 束序列号备份到备份緩冲器模块,备份緩沖器模块保存主緩冲器模块发送的报 文以及报文的开始序列号和结束序列号。作为本发明的一个实施例,上述过程也可以采用异步方式,主緩冲器模块 的发送部分扩展为滑动窗口方式,主緩冲器模块可以连续发多块报文到备份緩 沖器模块,备份緩冲器模块连续处理多块报文后返回一个确认信息进行统一确 认,主緩冲器模块采用超时机制对备份緩沖器模块的状态进行监测,如果超时 后未收到备份緩沖器模块返回的确认信息,则重新发送报文。主緩冲器模块将报文发送给主TCP模块,由主TCP模块将报文发送给对 端。备份緩冲器模块将主緩冲器模块发送的报文透传到备份应用程序,备份应 用程序解析收到的报文,确定报文发送的目的信息,保证主备在应用处理上的同步。备份TCP模块接收对端返回的报文接收序列号确认信息,并将对端已经接 收到的报文的序列号发送给主TCP模块。同时,将对端已经接收到的报文的序 列号发送给备份緩冲器模块,备份緩沖器模块根据该报文的序列号确认对端已 经接收到的报文,并删除本地备份的对端已经接收到的报文。由上可知,主TCP模块在主緩沖器模块对报文进行预处理时仍能继续发送 其緩冲区中的报文,因此主TCP模块本身的传送效率不受任何影响,即使增加 了高可靠性和热备份功能后,仍能保持高效率的报文传送。如图5所示,在接收报文时,备份TCP模块接收对端发送的报文以及对端 返回的已接收到的报文的序列号,将报文发送到主TCP模块,主TCP模块将 接收到的报文发送给主应用程序。主TCP模块获取报文后,向对端发送报文接 收确认信息。同时,备份TCP模块将报文发送给备份应用程序,并将对端收到 的报文的序列号通知备份緩冲器模块,备份緩冲器模块根据该报文的序列号确 定对端已经接收到的报文,并将本地备份的对端已经接收到的报文删除。作为本发明的另 一实施例,报文接收和发送操作也可以统一由备板来完成。 主緩冲器模块从主TCP模块获取发送报文的边界信息,并将报文和报文的边界 信息备份到备份緩沖器模块,确保主应用程序发送到主TCP模块的报文在主备 倒换后仍能准确发送到对端。备份緩冲器模块将报文发送给备份TCP模块,由 备份TCP模块将报文发送给对端。主备倒换后,备份TCP模块根据报文的序 列号发送报文,因此发送到备份緩冲器模块中的报文能在主备倒换后由备份 TCP模块按原报文的序列号重新发送给对端,实现报文的完整性保护。如果主应用程序发送到主緩冲器模块中的报文在完成部分发送的情况下发 生了TCP连接倒换,假设该报文的序列号是(m,m+5 ),已经得到对端反馈的 报文序列号是m+2,说明对端已经接收到(m,m+2)的报文。倒换到备板后,备份应用程序需要重新组织新报文,但无法组织完整的该 报文,所以此时备份緩冲器模块将从其緩存中找到该报文,然后指定报文序列 号(m,m+5 )将该报文发送到备份TCP模块。备份TCP模块将该报文发送给对 端。对端收到序列号为(m,m+5)的报文,根据滑动窗口机制丟弃(m,m+2) 报文,只保留(m+3, m+5)的报文,与已接收到的报文(m,m+2 )组成完整报 文,如图6所示。备份緩冲器模块也可以根据本身接收到的对端返回的已接收到的报文的序 列号,只发送(m+3, m+5)的报文,则对端不需要丟弃处理。整个倒换过程 可以充分证明,只要是应用程序发送到緩冲器模块中的报文,在备份倒换后, TCP模块不需要依赖应用程序的情况下能保证报文准确发到对端,并且保持报 文的完整性。应用程序只需要关心其报文倒换,对发送到TCP模块中的报文可 以认为是可靠到达对端,从而实现TCP连接的可靠倒换。本发明可以有效解决TCP数据报文边界的问题,确保发送报文无任何损 失,并且将报文的镜像分布在主、备板,简化了报文緩沖流程,通过緩冲器模 块进行大块数据备份,实现应用数据的汇聚,提高了 IPC通道的利用率,且每 个板仅单方向镜像,效率更高。同时,本发明可以很好地支持TCP滑动窗口机制,緩冲器模块的预处理不 影响后续的滑动窗口处理,由于预处理有緩冲机制,不影响TCP原有发送速度, 具有较高的报文传送效率。另外,本发明不需要依赖应用程序就能独立完成 TCP连接备份,具有普遍适用性。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发 明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明 的保护范围之内。
权利要求
1、一种实现TCP连接备份的方法,其特征在于,所述方法包括在发送报文时,主板预测报文的边界信息,将报文以及报文的边界信息备份到备板,并将报文发送给对端;在接收报文时,备板将对端的报文以及对端接收到的报文的边界信息备份到主板,并根据所述对端接收到的报文的边界信息删除本地备份的对端已经接收到的报文。
6、 如权利要求1要求所述的实现TCP连接备份的方法,其特征在于,所述方法进一步包括下述步骤如果在报文完成部分发送时发生主备倒换,备板根据对端返回的接收到的 报文的边界信息确认对端未收到的报文的边界信息,根据所述对端未收到的报 文的边界信息将本地备份的所述对端未收到的报文发送给对端。
7、 如权利要求1至6任一权利要求所述的实现TCP连接备份的方法,其 特征在于,主板通过滑动窗口方式将报文及报文的边界信息备份到备板。
8、 如权利要求1至6任一权利要求所述的实现TCP连接备份的方法,其 特征在于,主板和备板之间通过IPC消息传送报文以及报文的边界信息。
9、 如权利要求1至6任一权利要求所述的实现TCP连接备份的方法,其 特征在于,所述边界信息包括报文的开始序列号和结束序列号。
10、 一种在发送报文时实现TCP连接备份的方法,其特征在于,所述方法 包括在发送报文前,预测报文的边界信息,并备份所述报文以及报文的边界信
11、 如权利要求IO所述的在发送报文时实现TCP连接备份的方法,其特 征在于,所述预测报文的边界信息的步骤包括A. 接收应用程序传送的报文以及报文的大小信息;B. 根据所述报文的大小信息获取所述报文的边界信息。
12、 如权利要求11所述的在发送报文时实现TCP连接备份的方法,其特 征在于,所述步骤B进一步包括下述步骤Bl.根据报文的边界信息和后续报文的大小信息计算后续报文的边界信息。
13、 如权利要求10、 11或12所述的在发送报文时实现TCP连接备份的方 法,其特征在于,所述边界信息包括报文的开始序列号和结束序列号。
14、 一种实现TCP连接备份的系统,其特征在于,所述系统包括 报文发送备份单元,用于在发送报文时,将报文以及报文的边界信息备份 到备板,并将报文发送给对端;报文接收备份单元,用于在接收报文时,将对端的报文以及对端接收到的 报文的边界信息备份到主板,并根据所述对端接收到的报文的边界信息删除本 地备份的对端已经接收到的报文。
15、 如权利要求14所述的实现TCP连接备份的系统,其特征在于,所述 报文发送备份单元包括主緩沖器模块,用于接收主板应用程序传送的报文以及报文的大小信息, 根据所述报文的大小信息获取所述报文的边界信息,并将所述报文以及报文的 边界信息备份到报文接收备份单元;主TCP模块,用于根据主緩冲器模块发送的报文的大小信息向主緩沖器模 块返回报文的边界信息,接收主緩冲器模块发送的报文,并根据所述报文的边 界信息将所述报文发送给对端。
16、 如权利要求15所述的实现TCP连接备份的系统,其特征在于,所述 主緩沖器模块进一步用于根据报文的边界信息和后续报文的大小信息计算后续 报文的边界信息。
17、 如权利要求15所述的实现TCP连接备份的系统,其特征在于,所述 主緩沖器模块位于Socket接口之下、之下或者主TCP模块之内。
18、 如权利要求14所述的实现TCP连接备份的系统,其特征在于,所述 报文接收备份单元包括备份TCP模块,用于接收对端的报文以及对端接收到的报文的边界信息, 将对端的报文以及对端接收到的报文的边界信息备份到主板;备份緩冲器模块,用于接收并緩存报文发送备份单元备份的报文以及报文 的边界信息,根据备份TCP模块发送的所述对端接收到的报文的边界信息确认 对端已经接收到的报文,将本地备份的对端已经接收到的报文删除。
19、 如权利要求18所述的实现TCP连接备份的系统,其特征在于,所述 备份緩沖器模块位于Socket接口之下、之下或者备份TCP模块之内。
20、 如权利要求14至19 ^f壬一一又利要求所述的实现TCP连"l妄备^f分的系统, 其特征在于,所述报文发送备份单元通过滑动窗口方式将报文及报文的边界信 息备份到备板。
21、 如权利要求14至19任一权利要求所述的实现TCP连接备份的系统,送报文以及报文的边界信息。
22、 如权利要求14至19任一权利要求所述的实现TCP连接备份的系统, 其特征在于,所述边界信息包括报文的开始序列号和结束序列号。
全文摘要
本发明适用于数据通信领域,提供了一种实现TCP连接备份的方法及系统,所述方法包括在发送报文时,主板预测报文的边界信息,将报文以及报文的边界信息备份到备板,并将报文发送给对端;在接收报文时,备板将对端的报文以及对端接收到的报文的边界信息备份到主板,并根据所述对端接收到的报文的边界信息删除本地备份的对端已经接收到的报文。本发明在发送报文前预测报文的边界信息,然后将报文和报文的边界信息备份到备板,当主备倒换后,备板按原报文的序列号将报文重新发送出去,保证对端能够收到完整的报文,从而实现报文在主备倒换时的完整性保护,提高了主备倒换的可靠性和数据传送效率,不依赖应用程序独立完成TCP连接备份,具有普遍适用性。
文档编号H04L29/06GK101132347SQ20061006234
公开日2008年2月27日 申请日期2006年8月24日 优先权日2006年8月24日
发明者裕 付, 勇 施, 涂伯颜, 罗汉军 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1