一种sctp协议服务热备份的方法
【专利摘要】本发明提供一种SCTP协议服务热备份的方法,同时启动主设备和备设备作为服务器,通过VRRP协议选举产生主服务器,配置服务器IP;利用虚拟服务器功能,主设备将SCTP报文转发到备设备,并修改虚拟服务器中的转发功能,让主设备自身也获取报文进行处理;在备设备设置防火墙,将冗余的SCTP的反馈包过滤掉,避免报文在主备设备间回环使客户端收到重复的回执,但允许心跳请求包以保证备设备的心跳检测;当主设备出现故障时,VRRP协议保证备设备能够及时发现,获取服务器IP,关闭防火墙,切换成主服务器,客户端与新的主服务器无隙对接。本发明技术方案实施简单,特别适用于基站核心网场景,能够节约成本,具有突出的市场价值。
【专利说明】
一种SGTP协议服务热备份的方法
技术领域
[0001 ]本发明涉及通讯设备热备份领域,针对基础传输协议流控制传输协议(SCTP)的备份方法。
【背景技术】
[0002]流控制传输协议(SCTP)是因特网工程任务组(IETF)在2000年定义的一个传输层协议,是提供基于不可靠传输业务的协议之上的可靠的数据报传输协议。SCTP作为信令通讯协议,被广泛运用于核心网设备接口中。
[0003]SCTP是一个面向连接的流传输协议,它可以在两个端点之间提供稳定、有序的数据传递服务。SCTP可以看做是TCP协议(传输控制协议)的改进,它继承了 TCP较为完善的拥塞控制并改进TCP的一些不足之处:
SCTP与TCP的最大不同之处在于它是多宿主连接,而TCP是单地址连接。
[0004]一个TCP连接只能支持一个流,一个SCTP连接可以支持多个流。在SCTP协议中,流是指从一个SCTP端点到另一端点之间建立的单向逻辑通路,通常情况下所有用户消息在流中按序传递。
[0005]SCTP被用于基站和核心网的信令通讯协议中。核心网作为服务器端,监听基站信息。而基站作为客户端,在启动时则发起连接,与核心网建立SCTP偶联。然后基站会与核心网进行信令交互,得到网络配置信息。
[0006]在基站的运行过程中,如果和核心网的偶联发生异常断开。现有的基站往往需要花时间去清理信令协议,或者需要间隔一段时间再与核心网建立连接,甚至基站需要重新启动。通过核心网接入的用户的网络会有较长延时甚至中断。
[0007]如果说网络设备出现故障,不需要工程人员赶到现场。设备会自动重启或者自动切换到备用设备上。网络断开后经过几分钟到几个小时候会自动修复叫做冷备份。那么热备份,也叫做高可用性,是指当网络设备遇到计划和非计划系统宕机问题时,系统会立刻切换到备用设备上,服务失败后马上恢复甚至不中断。整个过程用户只需等待能够容忍的时延,甚至不会感受到故障发生过。
[0008]上文提到SCTP多宿主特性貌似符合热备份的思想,当一个地址不可用时,可以自动切换到另一个地址。但是在具体实现时,服务器协议栈的实现往往在单一物理设备上,而不同的地址对应不同的网络接口。当单一网络接口发生故障时,SCTP可以无延时切换到另一网络接口,但是当整个服务器宕机时,则没有解决办法。
【发明内容】
[0009]本发明提出了一种不断开SCTP偶联的情况下,将主服务器切换到后备服务器的方法。在不影响客户的情况下完成服务器热备份。
[0010]本发明技术方案提供一种SCTP协议服务热备份的方法,同时启动主设备和备设备作为服务器,通过VRRP协议选举产生主服务器,配置服务器IP;利用虚拟服务器功能,主设备将所收到的SCTP报文转发到备设备,并修改虚拟服务器中的转发功能,让主设备自身也获取报文进行处理;在备设备设置防火墙,将冗余的SCTP的反馈包过滤掉,避免报文在主备设备间回环使客户端收到重复的回执,但允许心跳请求包以保证备设备的心跳检测;当主设备出现故障时,VRRP协议保证备设备能够及时发现,获取服务器IP,关闭防火墙,切换成主服务器,客户端与新的主服务器无隙对接。
[0011 ]而且,在配置设备阶段,主备设备分别安装Linux系统,配置内核,设置支持流控制传输协议的SCTP模块和虚拟服务器的IPVS模块,将两台设备相互配置成对方的虚拟服务器,服务器设备通过普通三层交换机和客户端连接。
[0012]而且,设有设备甲和设备乙作为服务器,在启动设备阶段执行以下步骤,
步骤I,启动设备甲,激活VRRP协议,作为主,物理网口获取虚拟服务区IP;未检测到虚拟服务器,不转发报文;
步骤2,启动设备乙,激活VRRP协议,作为备,物理网口不获取VIP;检测到虚拟服务器,建立报文复制转发通道;同时配置防火墙,阻拦冗余SCTP报文发出;
步骤3,设备甲也检测到虚拟服务器,建立报文复制转发通道;
步骤4,启动客户端,客户端发起握手;客户端发送init报文到三层交换机,三层交换机根据IP将报文转发给设备甲;设备甲处理报文,同时复制报文并转发给设备乙;设备乙处理报文,再准备复制报文并准备转发给设备甲时,被防火墙拦截;
步骤5,设备甲的SCTP模块处理完消息后发送init ack报文给客户端;
步骤6,设备乙的SCTP模块处理完消息后也发送init ack报文给客户端,但是被防火墙拦截;
步骤7,客户端继续握手流程,经三层交换机发送cookie echo报文给设备甲,透过设备甲转发给设备乙,设备甲乙的SCTP偶联状态建立成功;
步骤8,设备甲回复报文cookie ack报文给客户端,客户端的SCTP偶联状态建立完成。
[0013]本发明技术方案实施简单,只在SCTP服务器备份,完全不需要用户端做任何修改。这对于基站核心网场景下的意义尤其重要:只需要替换单一核心网的软件部分,完全不需要修改众多基站的硬件或者软件。因此能够节约成本,减免人工,但是能够取到意料不到的技术效果,具有突出的市场价值。
【附图说明】
[0014]图1为本发明实施例中服务器设备配置图;
图2为本发明实施例中SCTP偶联建立过程和初始数据发送;
图3为本发明实施例中客户端心跳检测流程;
图4为本发明实施例中服务器端心跳检测流程;
图5为本发明实施例中切换完成后数据发送流程。
[0015]图6为本发明实施例中切换可能遇到的情况一。
[0016]图7为本发明实施例中切换可能遇到的情况二。
【具体实施方式】
[0017]
以下结合附图和实施例对本发明技术方案进行详细描述。
[0018]SCTP和TCP—样,属于可靠连接协议。在交互数据之前需要握手,建立好偶联。如果偶联断开,需要重新握手建立。偶联建立好后,客户端和服务器端都会周期性的发起心跳检测。传输数据时,收的数据的一方会定期给发送方回执。
[0019]本发明考虑同时启动主设备和备设备作为服务器,通过VRRP协议选举产生主服务器,配置服务器IP。
[0020]本发明利用虚拟服务器功能,主设备将所收到的SCTP报文转发到备设备。并简单修改虚拟服务器中的转发功能,能够让主设备自身也获取报文进行处理。
[0021]在备设备设置防火墙,将冗余的SCTP的反馈包过滤掉。这样报文不会在主备设备间回环,客户端也不会收的重复的回执。但是允许心跳请求包,保证备设备的心跳检测。
[0022]当主设备出现故障时,VRRP保证备设备能够及时发现,获取服务器IP,关闭防火墙,切换成主。SCTP客户与新的主设备无隙对接。
[0023]虚拟路由冗余协议(VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准。VRRP将局域网的一组路由器(包括一个活动路由器和若干个备份路由器)组织成一个虚拟路由器,称之为一个备份组。如果备份组内的活动路由器坏掉,备份路由器将会通过选举策略选出一个新的活动路由器,继续向网络内的主机提供路由服务。从而实现网络内的主机不间断地与外部网络进行通信。VRRP为IP地址的热备提供了解决方法。VRRP实现主备切换的时间精度为秒级。第三版协议已经将时间精度精确到10毫秒级,满足网络设备的实时要求。
[0024]虚拟服务器(Linux Virtual Server, LVS)是一个高度可扩展性和高可用性的服务器,建立在一个集群的服务器中。服务器集群的架构对用户是完全透明的,并且用户使用起来感觉它只有一个高性能虚拟服务器。本发明提出,将虚拟服务器用于SCTP协议的热备份。
[0025]为了便于描述,本发明以两台设备虚拟成一个单一地址的SCTP服务器。然后服务器和一个客户端建立SCTP通讯为例。主备设备依次启动,单个客户端发起SCTP偶联建立。完成建立后,主服务器切换成备,备服务器切换成主,客户端和新的主服务器继续通讯。SCTP偶联不发生断裂。
[0026]为了便于实施参考起见,提供实施例中各操作具体说明如下:
配置设备阶段
I各设备安装普通Linux系统,配置内核,设置支持流控制传输协议的SCTP模块和虚拟服务器的IPVS模块如图1所示,IPVS表示IP虚拟服务器。SCTP模块采用SCTP协议栈实现,本发明提出在现有技术的SCTP模块中,修改握手时的密匙检测部分,只保留对地址和端口的检测。具体原因在下面启动部分明述。在现有技术的IPVS模块中修改消息转发部分,将直接转发原报文修改为,转发复制报文,而处理原报文。
[0027]2在各设备安装开源工具Keepalived,将各设备配置到相同的备份组,如图1下方所示VRRP备份组。虚拟服务器部分,将两台设备相互配置成对方的虚拟服务器,如图1中虚线圈成的部分,建立虚拟服务器组甲、虚拟服务器组乙,各虚拟服务器组包括本设备的SCTP模块、IPVS模块和另一设备的SCTP模块。当检测到虚拟服务器时,将报文复制转发给虚拟服务器。当没有检测到虚拟服务器时,不转发报文。
[0028]3设置VRRP协议的主备切换脚本。当某设备检测到自己为备设备时,配置防火墙,阻拦冗余SCTP报文发出。当检测到自己为主设备时,清空防火墙设置。
[0029]4服务器设备通过普通三层交换机和客户端连接。这样避免客户端和服务器设备之间直接二层转发。交换机不需要做任何特殊转发或拦截功能。
[0030]启动设备阶段
I启动设备甲,激活VRRP协议,作为主,物理网口获取虚拟服务区IP(VIP)。未检测到虚拟服务器,不转发报文。
[0031]2启动设备乙,激活VRRP协议,作为备,物理网口不获取VIP。检测到虚拟服务器(甲),建立报文复制转发通道。由于乙是备服务器,同时配置防火墙,阻拦冗余SCTP报文发出。
[0032]3这个时候设备甲也检测到虚拟服务器(乙),建立报文复制转发通道。
[0033]4启动客户端,客户端发起握手如图2所示。客户端发送init报文(初始报文)到三层交换机,如图2中initO(初始化函数)。三层交换机根据IP将报文转发给设备甲。设备甲处理报文,同时复制报文并转发给设备乙。设备乙处理报文,再准备复制报文并准备转发给设备甲时,被防火墙拦截。
[0034]5设备甲SCTP模块处理完消息后发送init ack报文(初始确认报文)给客户端(经三层交换机)。
[0035]6设备乙SCTP模块处理完消息后也发送init ack报文(初始确认报文)给客户端(交换机),但是被防火墙拦截。
[0036]7客户端继续握手流程,经三层交换机发送cookie echo报文(cookie回声报文)给服务器。同第4步一样,报文会转发给设备甲,透过设备甲转发给设备乙,但是注意的是报文中夹带的cookie和设备甲的协议栈匹配,和设备乙的并不匹配,所以需要在SCTP模块中取消对密匙的验证。至此,设备甲乙的SCTP偶联状态已经建立成功。
[0037]8如同第5步一样,设备甲回复报文cookie ack报文(cookie确认报文)给客户端。客户端SCTP偶联状态建立完成。之后的客户端发送的所有业务包都会发给设备甲和设备乙,设备甲和客户端正常通信,设备乙处于监听状态,所发送的报文都会被防火墙拦截,如图2中从服务器端到客户端传输的数据,以及从客户端到服务器端的回执。
[0038]心跳检测阶段
I如图3所示,客户端发起心跳请求时,设备甲和设备乙收到心跳请求会分别发出回复。设备甲的回复会到达客户端,完成心跳检测。设备乙的心跳回复会被防火墙拦截。
[0039]2服务器甲发起心跳请求时,客户端会收到请求并回复。心跳回复报文到达设备甲时,完成心跳检测。回复报文也会到达设备乙,但这不影响设备乙的协议栈处理。可以参考图4上半部分。
[0040]3服务器乙发起心跳请求时,防火墙不会拦截请求报文。客户端会收到心跳请求并回复。回复报文到达设备甲,设备甲忽略。回复报文到达设备乙,完成心跳检测。可以参考图4下半部分。
[0041]主设备发生故障时主备切换阶段
I降低设备甲的优先级。设备乙转为主,设备甲转为备。设备乙清空防火墙配置,设备甲配置防火墙,阻拦冗余SCTP报文发出。由于VRRP协议可以精确到10毫秒级,这个切换过程大概会在30毫秒左右完成。
[0042]2如果切换过程中,客户端与服务器并没有信令交互。切换之后,客户端发送的报文会抵达三层交换机,三层交换机根据IP将报文转发给设备乙。设备乙作为主处理报文并转发给设备甲。设备甲乙的角色调换,而客户端不会受到任何影响,如图5所示,从客户端到设备乙的数据在转发到甲时会被防火墙拦截,设备乙返回的回执经三层交换机发送到客户端。
[0043]如果在步骤I的过程中正好客户端有一条信令发送给服务器,如图6所示。这条信令将会抵达设备甲但无法转发给设备乙。但是由于切换过后,设备甲不会再回复信息给客户端。客户端收不到回执会等待超时后重新发送。重新发送的报文会抵达设备乙和设备甲。由于设备甲应用软件已经知道本设备作为备了,这条重复发送的信息在设备甲上不会导致问题。
[0044]如果在步骤I的过程中正好服务器端有一条信令发送给客户端,如图7所示。回执会直接发送给设备乙再转发给设备甲。
[0045]具体实施时,可以采用计算机软件技术实现自动运行上述技术方案,可以利用标准操作系统和开源项目,只用稍做修改,不需要介入云操作系统或者特殊热备份架构,实现起来非常简单。
[0046]本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
【主权项】
1.一种SCTP协议服务热备份的方法,其特征在于:同时启动主设备和备设备作为服务器,通过VRRP协议选举产生主服务器,配置服务器IP;利用虚拟服务器功能,主设备将所收到的SCTP报文转发到备设备,并修改虚拟服务器中的转发功能,让主设备自身也获取报文进行处理;在备设备设置防火墙,将冗余的SCTP的反馈包过滤掉,避免报文在主备设备间回环使客户端收到重复的回执,但允许心跳请求包以保证备设备的心跳检测;当主设备出现故障时,VRRP协议保证备设备能够及时发现,获取服务器IP,关闭防火墙,切换成主服务器,客户端与新的主服务器无隙对接。2.根据权利要求1所述SCTP协议服务热备份的方法,其特征在于:在配置设备阶段,主备设备分别安装Linux系统,配置内核,设置支持流控制传输协议的SCTP模块和虚拟服务器的IPVS模块,将两台设备相互配置成对方的虚拟服务器,服务器设备通过普通三层交换机和客户端连接。3.根据权利要求1或2所述SCTP协议服务热备份的方法,其特征在于:设有设备甲和设备乙作为服务器,在启动设备阶段执行以下步骤, 步骤I,启动设备甲,激活VRRP协议,作为主,物理网口获取虚拟服务区IP;未检测到虚拟服务器,不转发报文; 步骤2,启动设备乙,激活VRRP协议,作为备,物理网口不获取VIP;检测到虚拟服务器,建立报文复制转发通道;同时配置防火墙,阻拦冗余SCTP报文发出; 步骤3,设备甲也检测到虚拟服务器,建立报文复制转发通道; 步骤4,启动客户端,客户端发起握手;客户端发送init报文到三层交换机,三层交换机根据IP将报文转发给设备甲;设备甲处理报文,同时复制报文并转发给设备乙;设备乙处理报文,再准备复制报文并准备转发给设备甲时,被防火墙拦截; 步骤5,设备甲的SCTP模块处理完消息后发送init ack报文给客户端; 步骤6,设备乙的SCTP模块处理完消息后也发送init ack报文给客户端,但是被防火墙拦截; 步骤7,客户端继续握手流程,经三层交换机发送cookie echo报文给设备甲,透过设备甲转发给设备乙,设备甲乙的SCTP偶联状态建立成功; 步骤8,设备甲回复报文cookie ack报文给客户端,客户端的SCTP偶联状态建立完成。
【文档编号】H04L29/08GK105897486SQ201610403736
【公开日】2016年8月24日
【申请日】2016年6月7日
【发明人】陶琴, 陈辉, 李婷
【申请人】武汉邮电科学研究院