实现tcp应用主备热倒换的方法

文档序号:7992195阅读:648来源:国知局
专利名称:实现tcp应用主备热倒换的方法
技术领域
本发明涉及IP数据网络设备领域,特别是涉及一种实现TCP应用主备热倒换的方法。
背景技术
现代信息社会对互联网的依存程度逐步加深,对网络的可靠性和可用性要求也越来越高,例如安全、金融、数据中心等领域。而网络是由相关的设备和传输线路搭建的,随着网络的IPdnternet Protocol,网络之间互连的协议,即网际协议)化程度的提高,网络中 (包括固网和移动网络)数据网络设备的使用比例也逐步提高,因此对数据网络设备的可靠性和可用性的要求也越来越高。数据网络设备都是由硬件和运行在之上的软件部分组成,为了增强设备的可靠性和可用性,网络较核心部位的设备都是采用主备的方式进行部署,核心大交换容量设备都是采用双主控的方式,而有些应用情况则是将几台设备形成一个虚拟的系统,设备之间互为主备。为了达到当主用设备发生故障时备用设备能够接管并保证业务不中断的目的,设备中的主用主控与备用主控或虚拟系统中的主用设备和备用设备间的软件需要有热倒换的功能,由于TCP (Transmission Control Protocol,传输控制协议)可靠连接的特殊性, TCP应用比一般的软件更难实现同步的功能。IP数据网络设备包括带双主控的机架式设备、堆叠系统中的设备和虚拟交换系统中的设备,这些设备可能是交换机、路由器、P0N(PaSSive Optical Network,无源光网络) 局端设备、PTN(Packet Transport Network,分组传送网)设备或其他类似设备。图1为常规IP数据网络设备的软件架构图,参见图1所示,数据网络设备的软件体系中包括操作系统软件、BSP(Board Support lockage,板级支持包)/驱动软件、软件接口管理软件、二层协 illlife>TCP/IP(Transmission Control Protocol/Internet Protocol,网间协议)栈模块、三层软件模块和网络管理模块,其中,数据网络设备硬件和操作系统内核是数据网络设备的硬件和软件基础,硬件驱动、TCP/IP协议栈、二层协议模块、三层协议模块、网管模块都依赖于该设备的硬件和软件基础。硬件驱动用来驱动硬件使其可以正常工作,至少包括串口驱动、网口驱动或一些硬件芯片的驱动等。软件接口管理模块负责管理物理口、TRUNK(汇聚)接口、VLAN(Virtual Local Area Network,虚拟局域网)接口、IP 接口的参数配置管理,并从这些接口接收数据传递给上层软件或从上层软件接收数据并从这些接口发送到硬件。TCP/IP栈模块处理IP网络数据的收发,包括基于IP层的协议数据和基于 UDP(User Data Protocol,用户数据报协议)或TCP层的数据。二层协议模块泛指网络设备中用到的二层协议,例如STP (Spanning Tree Protocol,生成树协议)协议等,各二层协议从接口管理层接收或向接口管理层发送协议数据,并根据各自协议的流程完成相应的功能。三层协议模块泛指网络设备中用到的三层协议,例如BGP(Border Gateway Protocol, 边界网关协议,用来连接hternet上独立系统的路由选择协议)路由协议等,各三层协议通过套接字从TCP/IP栈模块接收或向接口管理层发送协议数据,并根据各自协议的流程完成相应的功能。网管模块用来管理设备的硬件和各软件模块的参数。现有的IP数据网络设备还存在一些技术方面的问题随着IP数据网络业务的发展,人们对IP网络愈加依赖,对IP数据网络设备的可靠性和可用性要求更高,但是IP数据网络设备的功能越来越强大,设备的硬件和软件也会越来越复杂,出现故障的可能性也越高。从目前的情况来看,一般是采用部件或设备冗余的方式来保证系统的可靠性和可用性,例如在同一个设备中使用双主控,或者在虚拟系统中部署多个设备来实现设备或系统的高可用,这种冗余方案中需要解决的最大问题就是软件系统的同步,只有备用设备与主用设备的协议运行状态一致才能实现主备之间的热倒换, 不中断网络和业务。参见图1所示,数据网络设备的软件系统可以将软件分为硬件支持软件(BSP/驱动)、操作系统软件、TCP/IP栈软件、二层协议软件、三层协议软件、网管软件等, 为了实现主备热倒换,设备软件系统中操作系统软件以上的软件模块可能都需要实现协议的同步功能,其中基于TCP的应用因为是面向连接的,如果对端设备发现TCP连接中断,则 TCP相关应用就会中断,因此基于TCP的三层协议软件的主备系统同步是难度最高的。

发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种实现TCP应用主备热倒换的方法,能够将TCP应用的主备同步和热倒换方法应用到IP数据网络设备中,实现双主控设备或虚拟系统中主备设备的热倒换,能有效提高IP数据网络设备的可靠性和可用性, 满足IP数据网络业务的要求。本发明提供的实现TCP应用主备热倒换的方法,包括以下步骤:A、主用设备中正在运行的TCP应用模块实时向在线的备用设备发送TCP应用配置和状态同步信息,备用设备收到TCP应用配置和状态同步信息后,修改相应的数据结构;B、主用设备的TCP连接成功建立或关闭时,主用设备的TCP/IP栈模块向备用设备发送TCP连接的同步信息,备用设备收到创建TCP连接的同步信息后,在其TCP/IP栈模块内核创建TCP连接,并将相关信息保存在对应的数据结构中;备用设备收到删除TCP连接的同步信息后,关闭对应的TCP连接; C、备用设备倒换为主用设备后,转主用后的TCP/IP栈模块收到TCP包后,如果连接是同步的连接,则根据倒换后该TCP连接收到的第一个数据包,初始化该TCP连接的发包序列号和收包确认序列号;转主用后的TCP应用模块启动相关定时器,并开始收发数据包,完成主备热倒换。在上述技术方案中,步骤A中若主用设备先加电、备用设备后加电,主用设备检测到备用设备上线后,主用设备将其TCP应用模块的配置信息和当前的状态信息封装成同步包,通过主备同步通信模块发送给备用设备。在上述技术方案中,步骤B中若主用设备先加电、备用设备后加电,主用设备检测到备用设备上线时,主用设备的TCP/IP栈模块将主用设备已经建立的TCP连接信息封装成数据包,通过主备同步通信模块发送给备用设备;在备用设备上线后,主用设备将其新建或关闭的TCP连接同步信息实时发送给备用设备。在上述技术方案中,所述TCP连接的同步信息包括本地IP地址、本地端口、远端IP 地址、远端端口、TCP连接类型和TCP连接状态。
在上述技术方案中,步骤B中所述备用设备接收到创建TCP连接的同步消息后,在备用设备上创建TCP套接字,并将TCP连接标记为同步TCP连接,关闭TCP连接相关的定时器;备用设备收到删除TCP连接的同步消息后,关闭对应的TCP套接字。在上述技术方案中,所述备用设备的TCP/IP栈模块创建或删除TCP套接字连接后,向备用设备的TCP应用模块通告TCP套接字连接信息,TCP应用模块根据同步配置信息记录TCP套接字连接信息,等待接收数据。在上述技术方案中,所述TCP套接字连接信息包括TCP连接的本地IP地址、本地端口、远端IP地址、远端端口、TCP套接字的套接字号。在上述技术方案中,若备用设备的TCP应用模块接收到创建TCP套接字连接信息, 则将该连接的TCP套接字和地址信息记录到应用的数据结构中,并在TCP应用模块的主循环加上对该套接字的选择操作,等待接收数据;若接收到删除TCP套接字连接信息,则将 TCP连接信息清除,将TCP套接字号置为无效,取消对之前TCP套接字的选择操作。在上述技术方案中,所述备用设备倒换为主用设备的过程如下将原备用设备与外设/用户通信的接口 MAC地址修改为原主用设备的MAC地址,原备用设备开始收发协议数据,其TCP/IP栈模块收到同步TCP连接的第一个TCP包时,根据该TCP包中的确认序列号,初始化该TCP连接的发包序列号,根据该TCP包中的发包序列号,初始化该TCP连接的收包确认序列号,后续收包不做特殊处理,TCP倒换后根据协议状态将相应的定时器启动, 协议收发包过程中不做改动。与现有技术相比,本发明的优点如下本发明将TCP应用同步和热倒换方法应用到IP数据网络设备中,实现双主控设备或虚拟系统中主备设备的热倒换,能有效提高IP数据网络设备的可靠性和可用性,满足IP 数据网络业务的要求。


图1是常规IP数据网络设备软件的系统架构图。图2是本发明实施例中支持TCP应用主备同步的IP数据网络设备软件的系统架构图。图3是本发明实施例中本设备是主用设备时TCP应用主备热倒换的流程图。图4是本发明实施例中本设备是备用设备时TCP应用主备热倒换的流程图。
具体实施例方式下面结合附图及实施例对本发明作进一步的详细描述。参见图2所示,本发明实施例在常规软件体系中加入了主备选举模块和主备同步通信模块,并且在需要实现同步功能的TCP/IP栈模块、二层协议模块、三层协议模块和网管模块中增加了主备同步的相关功能。本发明实施例提供的实现TCP应用主备热倒换的方法,包括以下步骤A、主用设备中正在运行的TCP应用模块实时向在线的备用设备发送TCP应用配置和状态同步信息,备用设备收到TCP应用配置和状态同步信息后,修改相应的数据结构。TCP应用软件的同步过程分为两种情况,一种是主备设备同时加电上线,另一种是主用设备先加电上线,稳定工作后,备用设备再加电上线。若主用设备和备用设备同时加电,主备选举模块根据一定的规则(例如系统号或槽位号)选举出主用设备,选举出的主用设备按启动时的配置运行所有软件;若主用设备先加电、备用设备后加电,主用设备检测到备用设备上线后,主用设备将系统中需要实现同步功能的软件(例如TCP/IP栈模块和TCP 应用模块)的配置信息和协议运行到当前的状态信息封装成同步包,通过主备同步通信模块发送给备用设备;当主用设备和备用设备都正常工作后,主用设备将其配置的改变和状态的改变实时同步到备用设备。备用设备接收到配置和状态同步信息后,建立相应的数据结构,但定时器等不启动,自身的状态机也不运行。B、主用设备的TCP连接成功建立或关闭时,主用设备的TCP/IP栈模块向备用设备发送TCP连接同步信息,备用设备收到创建TCP连接的同步信息后,在其TCP/IP栈模块内核创建TCP连接,并将相关信息保存在对应的数据结构中;备用设备收到删除TCP连接的同步信息后,关闭其TCP连接。若主用设备先加电、备用设备后加电,主用设备检测到备用设备上线时,主用设备的TCP/IP栈模块将主用设备已经建立的所有TCP连接信息封装成数据包,通过主备同步通信模块发送给备用设备;在备用设备上线后,主用设备将其新建或关闭的TCP连接信息实时同步给备用设备。同步的TCP连接信息中包括本地IP地址、本地端口、远端IP地址、远端端口、TCP连接类型(创建/关闭)、TCP连接状态等。备用设备接收到创建TCP连接的同步消息后,在备用设备上根据本地地址等信息创建TCP的套接字,并将TCP连接标记为同步TCP连接,关闭TCP连接相关的定时器;收到删除TCP连接的同步消息,则关闭对应的TCP 套接字。这样可以用很少的通信量就完成TCP连接的同步。备用设备的TCP/IP栈模块创建或删除TCP套接字连接后,向备用设备的TCP应用模块通告TCP套接字连接信息,备用设备的TCP应用模块在接收到TCP/IP栈模块通告的 TCP套接字信息后,根据同步的配置信息记录TCP套接字连接信息,并开始等待接收数据。 TCP/IP栈模块向上层TCP应用模块要通告的TCP套接字连接信息包括TCP连接的本地IP 地址、本地端口、远端IP地址、远端端口、TCP套接字的套接字号;通告方式可以采用路由套接字的方式等进程或任务间通信的方式。若备用设备的TCP应用模块接收到创建TCP套接字连接信息,则将该连接的 TCP套接字和地址信息记录到应用的数据结构中,并在应用的主循环加上对该套接字的 select (选择)操作,等待接收数据;若接收到删除TCP套接字连接信息,则将TCP连接信息清除,将TCP套接字号置为无效,取消对之前TCP套接字的select (选择)操作。C、当主用设备因为硬件或软件的故障或人为强制切换的因素导致不能正常工作时,备用设备的主备选举模块根据Heart BeatGL^U检测或硬件中断的方式检测到主用设备不可用,开始将本设备切换成主用设备,接管其工作,主备倒换过程如下将原备用设备与外部设备或用户通信的接口 MAC地址修改为原主用设备的MAC地址,原备用设备开始收发协议数据,其TCP/IP栈模块收到同步TCP连接的第一个TCP包时,根据该TCP包中的 ACK(确认)序列号,初始化该TCP连接的发包序列号,根据该TCP包中的SEQ(序列号)号, 初始化该TCP连接的收包确认序列号,后续收包则不做特殊处理;TCP倒换后根据协议状态将相应的定时器启动,但协议收发包过程则不用做任何改动。经过以上备份和倒换过程后, 倒换后的系统与其他系统在倒换前建立的TCP连接不会中断,TCP应用也不会中断,因此对与之连接的其他不会产生任何影响,因而对网络业务不会产生影响。参见图3所示,假设本设备是主用设备,TCP应用主备热倒换的具体流程如下步骤101:系统启动。步骤102 如果两个设备同时存在,主备选举模块选举出主用设备,假设主备选举模块判定本设备是主用设备。步骤103 判断备用设备是否存在,如果是,转到步骤107 ;否则,转到步骤104。步骤104 判断备用设备是否上线,如果是,转到步骤105 ;否则,继续判断备用设备是否上线。步骤105 主用设备的TCP应用模块将其TCP应用配置和状态同步信息发送给主备同步通信模块,TCP/IP栈模块发送TCP连接同步信息。步骤106 主备同步通信模块发送同步数据给备用设备。步骤107 主用设备收到TCP数据。步骤108 :TCP连接建立或删除时,TCP/IP栈模块发送TCP连接同步信息给备用设备。步骤109 :TCP应用的实时配置同步,TCP协议收包处理后状态同步发送,返回步骤 107。参见图4所示,假设本设备是备用设备,TCP应用主备热倒换的具体流程如下步骤201:系统启动。步骤202 如果两个设备同时存在,主备选举模块选举出主用设备,假设主备选举模块判定本设备不是主用设备。步骤203 =TCP应用模块初始化,但不启动定时器。步骤204 :TCP/IP栈模块接收到TCP同步信息,根据同步信息创建TCP套接字或关闭TCP套接字,并将TCP套接字通告给TCP应用模块。步骤205 =TCP应用模块接收到配置同步和状态同步信息,根据同步信息对数据结构进行修改。步骤206 =TCP应用模块接收到TCP连接通告信息,记录套接字,并对该套接字进行 select (选择)操作。步骤207 判断主备选举模块是否检测到主用设备发生故障,如果是,则将本设备倒换为主用设备,转到步骤208 ;否则,继续判断主备选举模块是否检测到主用设备发生故障。步骤208 将本设备与外部设备或用户通信的接口 MAC地址修改为原主用设备的 MAC地址,本设备开始收发协议数据。步骤209 本设备的TCP/IP栈模块接收TCP数据,用TCP同步连接的第一个数据包信息初始化该TCP连接的发包序列号,根据该TCP包中的序列号,初始化该TCP连接的相关信息,后续TCP数据正常处理。步骤210 =TCP应用模块启动相关定时器,接收协议数据正常处理与其连接的对端设备通信,返回步骤104,转为主用设备后按主用设备的处理流程运行。下面以核心数据网络设备中用的较多的基于TCP的路由协议BGP为例,具体的分析本发明实施例中TCP应用主备热倒换的实现过程。
在系统启动后,如果两个设备同时存在,则选举出主用设备,主用设备开始接收数据,BGP协议正常运行;如果备用设备后上线,主用设备检测到备用设备后,主用设备上的 BGP协议需要将自己的邻居配置信息、BGP的邻居状态和从BGP邻居学习到的路由信息等同步给备用设备,主用设备上的TCP/IP栈模块将已经建立连接的BGP邻居的TCP连接信息通告给备用设备;而备用设备上线后,主用设备上配置的邻居消息和新发生的BGP邻居的TCP 连接变化(创建/关闭)和路由变化(添加/删除)等信息也要实时的同步给备用设备。备用设备上的BGP协议接收到配置同步和邻居状态、路由等同步消息后,根据具体的情况来操作自己的数据结构,例如添加或删除邻居、改变邻居状态,添加或删除路由, 但备用设备上BGP相关的定时器不启动;备用设备上的TCP/IP栈模块收到TCP连接同步信息后,创建或删除TCP的套接字,新创建的套接字的状态和地址等信息置为同步信息中的数据,并将套接字的信息用路由套接字等方式通告给BGP协议;BGP协议接收到通告信息后寻找匹配的邻居,如果是创建消息,则将套接字记录在邻居信息中,且BGP主任务开始对该套接字的select操作,如果是删除消息,则将邻居信息中的套接字置为无效值,并停止 select 操作。当主用设备发生故障时,备用设备的主备选择模块决定自己变成主用设备,转主用后的备用设备将自己的接口 MAC地址置为之前主用设备的MAC地址,倒换后开始接收BGP 协议数据;TCP/IP栈接收TCP包时,如果对应TCP连接是同步连接,则根据收到的第IfTCP 包中的ACK和SEQ序列号,来初始化改连接的发包序列号和回应包的序列号,后续包则不用特殊处理;倒换后BGP主任务select同步过来的TCP套接字,正确接收数据,并根据倒换后 BGP邻居的状态来启动对应的定时器,完成BGP的倒换;之后TCP/IP栈和BGP协议按正常流程处理,倒换完成。与系统连接的BGP邻居不会发现倒换的过程,连接不会中断,因此路由不会发生变化,对业务不会产生任何影响。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
权利要求
1.一种实现TCP应用主备热倒换的方法,其特征在于包括以下步骤A、主用设备中正在运行的TCP应用模块实时向在线的备用设备发送TCP应用配置和状态同步信息,备用设备收到TCP应用配置和状态同步信息后,修改相应的数据结构;B、主用设备的TCP连接成功建立或关闭时,主用设备的TCP/IP栈模块向备用设备发送 TCP连接的同步信息,备用设备收到创建TCP连接的同步信息后,在其TCP/IP栈模块内核创建TCP连接,并将相关信息保存在对应的数据结构中;备用设备收到删除TCP连接的同步信息后,关闭对应的TCP连接;C、备用设备倒换为主用设备后,转主用后的TCP/IP栈模块收到TCP包后,如果TCP连接是同步的连接,则根据倒换后该TCP连接收到的第一个数据包,初始化该TCP连接的发包序列号和收包确认序列号;转主用后的TCP应用模块启动相关定时器,并开始收发数据包, 完成主备热倒换。
2.如权利要求1所述的实现TCP应用主备热倒换的方法,其特征在于步骤A中若主用设备先加电、备用设备后加电,主用设备检测到备用设备上线后,主用设备将其TCP应用模块的配置信息和当前的状态信息封装成同步包,通过主备同步通信模块发送给备用设备。
3.如权利要求1所述的实现TCP应用主备热倒换的方法,其特征在于步骤B中若主用设备先加电、备用设备后加电,主用设备检测到备用设备上线时,主用设备的TCP/IP栈模块将主用设备已经建立的TCP连接信息封装成数据包,通过主备同步通信模块发送给备用设备;在备用设备上线后,主用设备将其新建或关闭的TCP连接的同步信息实时发送给备用设备。
4.如权利要求3所述的实现TCP应用主备热倒换的方法,其特征在于所述TCP连接的同步信息包括本地IP地址、本地端口、远端IP地址、远端端口、TCP连接类型和TCP连接状态。
5.如权利要求1所述的实现TCP应用主备热倒换的方法,其特征在于步骤B中所述备用设备接收到创建TCP连接的同步消息后,在备用设备上创建TCP套接字,并将TCP连接标记为同步TCP连接,关闭TCP连接相关的定时器;备用设备收到删除TCP连接的同步消息后,关闭对应的TCP套接字。
6.如权利要求5所述的实现TCP应用主备热倒换的方法,其特征在于所述备用设备的TCP/IP栈模块创建或删除TCP套接字连接后,向备用设备的TCP应用模块通告TCP套接字连接信息,TCP应用模块根据同步配置信息记录TCP套接字连接信息,等待接收数据。
7.如权利要求6所述的实现TCP应用主备热倒换的方法,其特征在于所述TCP套接字连接信息包括TCP连接的本地IP地址、本地端口、远端IP地址、远端端口、TCP套接字的套接字号。
8.如权利要求6所述的实现TCP应用主备热倒换的方法,其特征在于若备用设备的 TCP应用模块接收到创建TCP套接字连接信息,则将该连接的TCP套接字和地址信息记录到应用的数据结构中,并在TCP应用模块的主循环加上对该套接字的选择操作,等待接收数据;若接收到删除TCP套接字连接信息,则将TCP连接信息清除,将TCP套接字号置为无效,取消对之前TCP套接字的选择操作。
9.如权利要求1至8任一项所述的实现TCP应用主备热倒换的方法,其特征在于所述备用设备倒换为主用设备的过程如下将原备用设备与外部设备/用户通信的接口 MAC地址修改为原主用设备的MAC地址,原备用设备开始收发协议数据,其TCP/IP栈模块收到同步TCP连接的第一个TCP包时,根据该TCP包中的确认序列号,初始化该TCP连接的发包序列号,根据该TCP包中的发包序列号,初始化该TCP连接的收包确认序列号,后续收包不做特殊处理,TCP倒换后根据协议状态将相应的定时器启动,协议收发包过程中不做改动。
全文摘要
本发明公开了一种实现TCP应用主备热倒换的方法,包括步骤主设备中正运行的TCP应用模块实时向在线备用设备发送TCP应用配置和状态同步信息,备用设备修改相应数据结构;主设备的TCP连接成功建立/关闭时,TCP/IP栈向备用设备发送TCP连接同步信息,备用设备在TCP/IP栈内核创建/关闭连接;主备倒换后,TCP/IP栈收到TCP包,若该TCP连接是同步的连接,则根据倒换后收到的第一个数据包,初始化该连接的发包序列号和收包确认序列号;倒换后TCP应用模块启动定时器,开始收发数据包。本发明能实现双主控设备或虚拟系统中的主备热倒换,有效提高IP数据网络设备的可靠性和可用性,满足IP数据网络业务的要求。
文档编号H04L29/08GK102510408SQ20111038806
公开日2012年6月20日 申请日期2011年11月30日 优先权日2011年11月30日
发明者余少华, 李松华, 程友清 申请人:武汉烽火网络有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1