一种TCP的主备倒换热备份实现方法与流程

文档序号:14574557发布日期:2018-06-02 01:11阅读:247来源:国知局
一种TCP的主备倒换热备份实现方法与流程

本发明涉及通信技术领域,特别涉及一种传输控制协议(Transmission Control Protocol,TCP)的主备倒换热备份实现方法。



背景技术:

目前运营商汇聚层以上的通信设备对设备安全性可靠性要求都非常高,结构上使用主备盘、分布式转发等结构进行控制/数据层面的冗余备份。

在正常工作时,两个主控盘一个作为主用主控,一个作为备用主控,当主用主控出现故障时,备用主控可以替代主用主控继续维护网络通信。

主备倒换时为了保证备用上的数据与主用的一致,就需要实现备用主控和主用主控的控制/数据信息同步。TCP作为一种有连接的通信协议,在协议的建立、维护上有其独特的设计,例如序列号、窗口大小、时间戳等校对通过后才能继续传输数据。

在主备倒换时,基于TCP的上层协议,例如边界网关协议(BGP)、标签分发协议(LDP)等,需要实现倒换后本端TCP状态无感知,这就需要上层协议的备份,同时也需要TCP连接的备份和倒换。

TCP建立、维持连接的过程比较复杂,进行主备同步更是不容易实现。目前有的技术一般是通过将TCP当成白盒进行分解,对各个数据进行备份同步,涉及到的有报文、定时器、状态等等各种数据,而且TCP的这些数据随时都在变化,什么时候进行备份、已经建立好的连接如何进行批量备份,都是需要处理的问题。因而实现难度大、稳定性也比较差。



技术实现要素:

有鉴于此,本申请提供一种TCP的主备倒换热备份实现方法,能够简单实现TCP的主备倒换热备份,且不容易出错。

为解决上述技术问题,本申请的技术方案是这样实现的:

一种TCP的主备倒换热备份实现方法,该方法包括:

第一TCP上层协议模块创建客户端的第一socket,并将创建的socket的信息发送给第二TCP上层协议模块;其中,第一TCP上层协议模块为客户端上的主用主控板对应的TCP上层协议模块,第二TCP上层协议模块为客户端上的备用主控板对应的TCP上层协议模块;

第一TCP上层协议模块通知第一TCP模块作为客户端TCP建立TCP连接;

第一TCP模块与服务器端建立TCP连接;第一TCP模块为客户端上的主用主控板对应的TCP模块;

第二TCP上层协议模块根据接收到socket的信息在本地创建客户端的第二socket;并通知第二TCP模块建立TCP连接;其中,第二TCP模块为客户端上的备用主控板对应的TCP模块;

第二TCP模块与第一模拟TCP模块建立TCP连接;其中,第一模拟TCP模块为客户端上备用主控板对应的模拟服务器上的TCP的模块;

在客户端与对端服务器进行数据传输过程中,第一TCP模块确定发生socket参数变化时,将变化后的socket参数备份给第二TCP模块。

一种TCP的主备倒换热备份实现方法,所述方法包括:

当在客户端上针对主用主控板插入备用主控板时,第五TCP上层协议模块将已创建的第五套接字socket的信息发送给第六TCP上层协议模块;其中,第五TCP上层协议模块为客户端上的主用主控板对应的TCP上层协议模块,第六TCP上层协议模块为客户端上的备用主控板对应的TCP上层协议模块;

第六TCP上层协议模块根据接收到第五socket的信息在本地创建客户端的第六socket,并通知第六TCP模块作为客户端TCP建立TCP连接;其中,第六TCP模块为客户端上的备用主控板对应的TCP模块;

第六TCP模块与第三模拟TCP模块建立TCP连接;其中,第三模拟TCP模块为客户端上备用主控板对应的模拟服务器上的TCP的模块;

备用主控板在第六TCP上层协议模块创建第六socket之后,向主用主控板发送批量备份的请求;

主用主控板接收到所述批量备份的请求时,通知第五TCP模块进行批量备份;其中,第五TCP模块为客户端上的主用主控板对应的TCP模块;

第五TCP模块将本地的socket参数发送给第六TCP模块。

由上面的技术方案可知,本申请中在客户端的备用主控板上模拟服务器端的TCP模块,用于使本客户端的备用主控板对应的TCP模块快速建立TCP连接,以便主用主控板上TCP模块上的socket参数能够实时备份到备用主控板对应的TCP模块中。本申请提供的技术方案能够黑盒处理TCP的主备备份,屏蔽了TCP的内部实现细节,通过模拟报文的方式驱动主备状态和参数保持一致,实现简单且不容易出错。

附图说明

图1为本申请实施例中客户端实时实现TCP的主备倒换热备份流程示意图;

图2为本申请实施例中客户端TCP实时备份结构示意图;

图3为本申请实施例中服务器实时实现TCP的主备倒换热备份流程示意图;

图4为本申请实施例中服务器端TCP实时备份结构示意图;

图5为本申请实施例中客户端批量实现TCP的主备倒换热备份流程示意图;

图6为本申请实施例中客户端TCP批量备份结构示意图;

图7为本申请实施例中服务器批量实现TCP的主备倒换热备份流程示意图;

图8为本申请实施例中服务器端TCP批量备份结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。

本申请提供一种TCP的主备倒换热备份实现方法,在客户端的备用主控板上模拟服务器端的TCP模块,用于使本客户端的备用主控板对应的TCP模块快速建立TCP连接,以便主用主控板上TCP模块上的套接字(socket)参数能够实时备份到备用主控板对应的TCP模块中。本申请提供的技术方案能够黑盒处理TCP的主备备份,屏蔽了TCP的内部实现细节,通过模拟报文的方式驱动主备状态和参数保持一致,实现简单且不容易出错。

本申请实施例中提出两种情况的备份,分别为实时备份和批量备份两个阶段,批量备份是主用主控板对新插入的备用主控板进行批量的备份,将主用主控板中已经存在和发现的TCP连接数据备份到备用主控板中,以保证主备数据一致;在后续socket参数发生变化时,再实时同步变化的数据;实时备份是主备主控板都在位,从TCP连接建立好之后就开始进行相关信息备份;并且在socket参数变化时,即进行数据备份,使主用主控上的数据变化实时同步到备用主控上。

下面结合附图,详细说明本申请实施例中实现实时备份和批量备份的过程。

实施例一

本实施例以实时备份为例。

参见图1,图1为本申请实施例中客户端实时实现TCP的主备倒换热备份流程示意图。具体流程为:

步骤101,第一TCP上层协议模块创建客户端的第一socket,并将创建的socket的信息发送给第二TCP上层协议模块。

其中,第一TCP上层协议模块为客户端上的主用主控板对应的TCP上层协议模块,第二TCP上层协议模块为客户端上的备用主控板对应的TCP上层协议模块。

步骤102,第一TCP上层协议模块通知第一TCP模块作为客户端TCP建立TCP连接。

第一TCP模块为客户端上的主用主控板对应的TCP模块。

步骤103,第一TCP模块与服务器端建立TCP连接。

步骤104,第二TCP上层协议模块根据接收到socket的信息在本地创建客户端的第二socket,并通知第二TCP模块建立TCP连接。

第二TCP模块为客户端上的备用主控板对应的TCP模块。

步骤105,第二TCP模块与第一模拟TCP模块建立TCP连接。

其中,第一模拟TCP模块为客户端上备用主控板对应的模拟服务器上的TCP的模块。

步骤106,在客户端与对端服务器进行数据传输过程中,第一TCP模块确定发生socket参数变化时,将变化后的socket参数备份给第二TCP模块。

基于TCP的上层协议如LDP、BGP等,本申请实施例中以LDP为例,则TCP上层协议模块称为LDP模块。

参见图2,图2为本申请实施例中客户端TCP实时备份结构示意图。

图2中第一LDP模块创建客户端的第一socket,并将创建的socket的信息发送给第二LDP模块。

第一LDP模块在发送socket的信息时携带在板间通信消息(CDP)消息中,通过CDP通道发送给第二LDP模块。

第一LDP模块通知第一TCP模块作为客户端TCP建立TCP连接。

第一LDP模块来确定本地TCP模块作为客户端还是服务器端进行TCP的建立,并通知第一TCP模块进行TCP连接。

第一TCP模块与服务器端建立TCP连接。

第一TCP模块通过三次握手报文,与服务器端的TCP建立连接,过程同现有实现。

第二LDP模块根据接收到socket的信息在本地创建客户端的第二socket,并通知第二TCP模块建立TCP连接。

本申请实施例中无论第一LDP模块,还是第二LDP模块创建socket的过程同现有实现,创建的第一socket和第二socket的信息相同,但是第一socket和第二socket的socket标识相同或不同;即可以相同也可以不同,但是由于socket的信息相同,均包括:本地端口号、目的端口号、源、目的IP地址等,因此,通过socket的信息能够确定socket的对应关系。

第二TCP模块与第一模拟TCP模块建立TCP连接。

第二TCP模块作为客户端侧TCP在建立TCP连接时,发送SYN报文给对端服务器;第一模拟TCP模块接收到该SYN报文时,模拟服务器端TCP模块发送SYN ACK报文,第二TCP模块接收到第一模拟TCP模块发送的SYN ACK报文时,以为是对端服务器发送的响应报文,则发送ACK报文给对应服务器,完成TCP连接的建立,此时,第二TCP模块建立的TCP连接处于up状态。

在客户端与对端服务器进行数据传输过程中,第一TCP模块确定发生socket参数变化时,将变化后的socket参数备份给第二TCP模块。

其中,socket参数包括窗口、时间戳、序列号;

TCP模块之间、以及TCP上层协议模块之间传输socket参数,以及socket的信息时携带在CDP消息中通过CDP通道发送。

主TCP建立的连接(与服务器端进行交互),达到up状态相对于备用主控板上TCP建立的连接(自身设备上模块之间交互)要慢,因此,针对实时备份的实现方式中,当第一TCP模块建立TCP连接完成后,且socket参数发生变化时,直接进行备份即可。

备用主控板对应的TCP创建是由备LDP触发创建并自动UP的,此时还不能保证参数的主备一致性,只能保证备用主控板上TCP是UP的。这里可能存在一种情况:“主TCP没有建立成功,但备上TCP已经UP了”,但这个不影响倒换,因为倒换后备的TCP也会重新RST建立TCP连接,因而并不影响功能。

参见图3,图3为本申请实施例中服务器实时实现TCP的主备倒换热备份流程示意图。具体流程为:

步骤301,第三TCP上层协议模块创建服务器的第三socket,将创建的socket的信息发送给第四TCP上层协议模块,并通知第三TCP模块进入监听客户端发送SYN报文的状态。

第三LDP模块在发送socket的信息时携带在CDP消息中,通过CDP通道发送给第四LDP模块。

其中,第三TCP上层协议模块为服务器上的主用主控板对应的TCP上层协议模块,第四TCP上层协议模块为服务器上的备用主控板对应的TCP上层协议模块;

步骤302,第四TCP上层协议模块根据接收到socket的信息在本地创建服务器的第四socket;并通知第四TCP模块进入监听客户端发送SYN报文的状态。

步骤303,第三TCP模块和第四TCP模块进入监听客户端发送SYN报文的状态。

其中,第三TCP模块为服务器上的主用主控板对应的TCP模块;第四TCP模块为服务器上的备用主控板对应的TCP模块;

步骤304,第三TCP模块当监听到客户端发送的SYN报文时,与客户端建立TCP连接,并将监听到的SYN报文复制一份发送给第二模拟TCP模块。

其中,第二模拟TCP模块为服务器上备用主控板对应的模拟客户端端上的TCP的模块;

步骤305,第二模拟TCP模块接收到第三TCP发送的SYN报文时,模拟客户端与第四TCP模块建立TCP连接。

步骤306,第三TCP模块与客户端建立TCP连接后,确定所在服务器在与对端客户端进行数据传输过程中发生socket参数变化时,将变化后的socket参数备份给第四TCP模块。

本申请实施例中以LDP为例,则TCP上层协议模块称为LDP模块。

参见图4,图4为本申请实施例中服务器端TCP实时备份结构示意图。

第三TCP上层协议模块创建服务器的第三socket,将创建的socket的信息发送给第四TCP上层协议模块,并通知第三TCP模块进入监听客户端发送SYN报文的状态。

第四TCP上层协议模块根据接收到socket的信息在本地创建服务器的第四socket;并通知第四TCP模块进入监听客户端发送SYN报文的状态。

本申请实施例中无论第三LDP模块,还是第四LDP模块创建socket的过程同现有实现,创建的第三socket和第四socket的信息相同,但是第三socket和第四socket的socket标识相同或不同;即可以相同也可以不同,但是由于socket的信息相同,均包括:本地端口号、目的端口号、源、目的IP地址等,因此,通过socket的信息能够确定socket的对应关系。

第三TCP模块和第四TCP模块进入监听客户端发送SYN报文的状态。

第三TCP模块当监听到客户端发送的SYN报文时,与客户端建立TCP连接,并将监听到的SYN报文复制一份发送给第二模拟TCP模块。

第二模拟TCP模块接收到第三TCP发送的SYN报文时,模拟客户端与第四TCP模块建立TCP连接。

第二模拟TCP模块接收到第三TCP模块发送的SYN报文时,模拟客户端发送SYN报文给第四TCP模块;第四TCP模块在接收到所述SYN报文时,确定为接收到客户端发送的SYN报文,并向模拟客户端的第二模拟TCP模块发送SYN ACK报文,第二模拟TCP模块接收到第四TCP模块发送的SYN ACK报文时,模拟客户端发送ACK报文给第四TCP模块,完成TCP连接的建立,此时,第四TCP模块建立的TCP连接处于up状态。

第三TCP模块与客户端建立TCP连接后,确定所在服务器在与对端客户端进行数据传输过程中发生socket参数变化时,将变化后的socket参数备份给第四TCP模块。

socket参数包括窗口、时间戳、序列号;

在传输socket参数时,携带在CDP消息中,通过CDP通道传输。

备用主控板对应的TCP建立是由主TCP备份的SYN报文驱动的,三次握手也是通过模拟客户端的TCP模块,具体实现时可以通过DUMP机制完成的,此时与“客户端实时备份”一样,不能保证参数的主备一致性,只能保证备上TCP是UP的。在主用主控板TCP上收发报文时进行socket参数的备份和同步,确保倒换后socket参数正确。

实施例二

本实施例以批量备份为例。

参见图5,图5为本申请实施例中客户端批量实现TCP的主备倒换热备份流程示意图。具体流程为:

步骤501,当在客户端上针对主用主控板插入备用主控板时,第五TCP上层协议模块将已创建的第五socket的信息发送给第六TCP上层协议模块。

其中,第五TCP上层协议模块为客户端上的主用主控板对应的TCP上层协议模块,第六TCP上层协议模块为客户端上的备用主控板对应的TCP上层协议模块。

步骤502,第六TCP上层协议模块根据接收到第五socket的信息在本地创建客户端的第六socket,并通知第六TCP模块作为客户端TCP建立TCP连接。

其中,第六TCP模块为客户端上的备用主控板对应的TCP模块

步骤503,第六TCP模块与第三模拟TCP模块建立TCP连接。

其中,第三模拟TCP模块为客户端上备用主控板对应的模拟服务器上的TCP的模块。

步骤504,备用主控板在第六TCP上层协议模块创建第六socket之后,向主用主控板发送批量备份的请求。

步骤505,主用主控板接收到所述批量备份的请求时,通知第五TCP模块进行批量备份。

其中,第五TCP模块为客户端上的主用主控板对应的TCP模块。

步骤506,第五TCP模块将本地的socket参数发送给第六TCP模块。

基于TCP的上层协议如LDP、BGP等,本申请实施例中以LDP为例,则TCP上层协议模块称为LDP模块。

参见图6,图6为本申请实施例中客户端TCP批量备份结构示意图。

图6中当在客户端上针对主用主控板插入备用主控板时,第五LDP模块将已创建的第五socket的信息发送给第六LDP模块。

第六LDP模块根据接收到第五socket的信息在本地创建客户端的第六socket,并通知第六TCP模块作为客户端TCP建立TCP连接。

本申请实施例中无论第五LDP模块,还是第六LDP模块创建socket的过程同现有实现,创建的第五socket和第六socket的信息相同,但是第五socket和第六socket的socket标识相同或不同;即可以相同也可以不同,但是由于socket的信息相同,均包括:本地端口号、目的端口号、源、目的IP地址等,因此,通过socket的信息能够确定socket的对应关系。

传输socket的信息时,携带在CDP消息中通过CDP通道传输。

第六TCP模块与第三模拟TCP模块建立TCP连接。

第六TCP模块作为客户端侧TCP在建立TCP连接时,发送SYN报文给对端服务器;第三模拟TCP模块接收到该SYN报文时,模拟服务器端TCP模块发送SYN ACK报文,第六TCP模块接收到第三模拟TCP模块发送的SYN ACK报文时,以为是对端服务器发送的响应报文,则发送ACK报文给对应服务器,使第三模拟模块完成TCP连接的建立,此时,第六TCP模块建立的TCP连接处于up状态。

备用主控板在第六LDP模块创建第六socket之后,向主用主控板发送批量备份的请求。

主用主控板接收到所述批量备份的请求时,通知第五TCP模块进行批量备份。

第五TCP模块将本地的socket参数发送给第六TCP模块。

第五TCP模块将socket参数发送给第六TCP模块时携带在CDP消息中,通过CDP通道传输。

socket参数包括窗口、时间戳、序列号等。

在批量备份结束后,可以在socket参数变化时,实时进行socket参数备份。

参见图7,图7为本申请实施例中服务器批量实现TCP的主备倒换热备份流程示意图。具体流程为:

步骤701,第七TCP上层协议模块将已创建的第七socket的信息发送给第八TCP上层协议模块。

其中,第七TCP上层协议模块为服务器上的主用主控板对应的TCP上层协议模块,第八TCP上层协议模块为服务器上的备用主控板对应的TCP上层协议模块;

步骤702,第八TCP上层协议模块根据接收到第七socket的信息在本地创建服务器的第八socket。

步骤703,备用主控板在第八TCP上层协议模块创建第八socket之后,向主用主控板发送批量备份的请求。

该批量请求包括两部分:一是构建SYN报文,二是socket参数备份。

步骤704,主用主控板接收到所述批量备份的请求时,通知第七TCP模块进行批量备份。

步骤705,第七TCP模块通知第四模拟TCP模块模拟发送SYN报文;并将本地的socket参数发送给第八TCP模块。

其中,第七TCP模块为服务器上主用主控板对应的TCP模块;

步骤706,第四模拟TCP模块构建SYN报文,并发送给第五模拟TCP模块。

其中,第四模拟TCP模块为服务器上主用主控板对应的模拟客户端上的TCP的模块;第五模拟TCP模块为服务器上备用主控板对应的模拟客户端上的TCP的模块。

步骤707,第五模拟TCP模块模拟客户端TCP将接收到的SYN报文发送给第八TCP模块。

其中,第八TCP模块为服务器上备用主控板对应的TCP模块;

步骤708,第八TCP模块接收到SYN报文后,与第五模拟TCP模块建立TCP连接。

本申请实施例中以LDP为例,则TCP上层协议模块称为LDP模块。

参见图8,图8为本申请实施例中服务器端TCP批量备份结构示意图。

第七LDP模块将已创建的第七socket的信息发送给第八LDP模块。

第八LDP模块根据接收到第七socket的信息在本地创建服务器的第八socket。

本申请实施例中无论第七LDP模块,还是第八LDP模块创建socket的过程同现有实现,创建的第七socket和第八socket的信息相同,但是第七socket和第八socket的socket标识相同或不同;即可以相同也可以不同,但是由于socket的信息相同,均包括:本地端口号、目的端口号、源、目的IP地址等,因此,通过socket的信息能够确定socket的对应关系。

备用主控板在第八LDP模块创建第八socket之后,向主用主控板发送批量备份的请求。

该批量请求包括两部分:一是构建SYN报文,二是socket参数备份。

主用主控板接收到所述批量备份的请求时,通知第七TCP模块进行批量备份。

第七TCP模块通知第四模拟TCP模块模拟发送SYN报文;并将本地的socket参数发送给第八TCP模块。

第四模拟TCP模块构建SYN报文,并发送给第五模拟TCP模块。

第五模拟TCP模块模拟客户端TCP将接收到的SYN报文发送给第八TCP模块。

第八TCP模块接收到SYN报文后,与第五模拟TCP模块建立TCP连接。

第五模拟TCP模块接收到第四模拟TCP模块发送的SYN报文时,模拟客户端发送SYN报文给第八TCP模块;第八TCP模块在接收到所述SYN报文时,确定为接收到客户端发送的SYN报文,并向模拟客户端的第五模拟TCP模块发送SYN ACK报文,第五模拟TCP模块接收到第八TCP模块发送的SYN ACK报文时,模拟客户端发送ACK报文给第八TCP模块,完成TCP连接的建立,此时,第八TCP模块建立的TCP连接处于up状态。

主用主控板和备用主控板之间,TCP模块之间、LDP模块之间传输socket参数,以及socket的信息时携带在CDP消息中传输。

与TCP客户端进行批量备份不同的是,本端设备作为服务器时,备用主控的板卡插上设备之后,首先是板卡启动,板卡自动之后,进入配置加载阶段,备用主控向主用主控索取配置,主用主控将自己的配置内容发给备用主控,备用主控就根据这些配置的内容进行配置加载,配置加载完成之后,备用主控向主用主控请求批量备份,主用主控将自己各个模块的信息进行批量备份到备用主控上,这个过程就包括TCP的批量备份。实际上在配置加载完成后,也就是批量备份之前,主LDP上的配置信息已经在备用主控上执行完成,这个过程中备LDP就会创建server的socket,进入监听状态。在批量备份阶段,先是主TCP的DUMP_TCP模块重构SYN报文发送到备TCP的DUMP_TCP模块,然后主TCP将自己监听到的所有的TCP连接(即是TCP(child))的参数信息备份到备TCP。

综上所述,本申请通过在客户端的备用主控板上模拟服务器端的TCP模块,用于使本客户端的备用主控板对应的TCP模块快速建立TCP连接,以便主用主控板上TCP模块上的socket参数能够实时备份到备用主控板对应的TCP模块中。本申请提供的技术方案能够黑盒处理TCP的主备备份,屏蔽了TCP的内部实现细节,通过模拟报文的方式驱动主备状态和参数保持一致,实现简单且不容易出错。

本申请同时还给出客户端的批量备份实现方式,以及服务器端的批量和实时备份的方式。

黑盒处理TCP的主备备份,屏蔽了TCP内部实现细节,通过“模拟报文”方式驱动主备状态和参数保持一致,实现简单且不容易出错;

批量备份和实时备份机制,流程上没有大的差异,复用了流程,结构简单;

参数的同步依靠主TCP的报文收发驱动,关键位置少,且利于后续的扩展,新增参数方便;

Client的实时备份需要上层LDP协议辅助触发,Server时监听到的连接不需要上层协议参与,TCP模块进行主备同步;

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1