一种TCP热备架构中TCP流备份和平滑的方法和设备技术

技术编号:26606437 阅读:66 留言:0更新日期:2020-12-04 21:30
本发明专利技术公开了一种TCP热备架构中TCP流备份和平滑的方法和设备,涉及数据通信领域,包括收发时,靠近源的第一主用组件先缓存流,备份给第一备用组件成功后并更新收发流长度再传输给第二主用组件;第二主用组件收到流后先缓存,备份给第二备用组件成功后并更新其收发流长度并传输给下一主用组件或远端设备;收到下一组件基于收发流长度的确认或远端设备基于TCP序列号的确认后,才能删除主用、备用组件的缓存流;在备升主之后,基于收发流长度实现协议组件和TCP组件之间缓存流的平滑。本发明专利技术TCP热备架构中TCP流备份和平滑的方法和设备,提高了备升主后,基于TCP的MPLS/路由协议恢复的概率,提高了设备的可用性。

【技术实现步骤摘要】
一种TCP热备架构中TCP流备份和平滑的方法和设备
本专利技术涉及数据通信领域,具体涉及一种TCP热备架构中TCP流备份和平滑的方法和设备。
技术介绍
NSR(NoneStopRouting,不中断路由)是指在在网络通信设备中配置两块主控盘,一块为主用主控盘(以下简称主用盘),一块为备用主控盘(以下简称为备用盘),在主用盘物理/软件故障或主备切换命令情况下,在邻居不感知故障而无须提供GR协助,由备用盘接替主用盘工作恢复协议邻居状态和路由标签等业务数据,而不引起协议和业务中断的技术。基于TCP连接的MPLS/路由协议组件,由TCP协议组件为其提供可靠的传输服务,MPLS/路由协议的NSR首先必须保证TCP连接的可靠备份,并在主用故障备升主后可以恢复。TCP热备是NSR实现的基础。与UDP不同,TCP流传输的不是完整的应用消息,而是字节流(一个消息的一部分或者多个消息粘连在一起)。TCP组件不感知应用消息的边界,一般由协议组件在应用协议头部定义一个长度由协议组件解析头部对消息定界;更极端地像telnet不定义长度,消息边界更模糊,由telnet协议组件逐字节解析TCP流。协议组件发送或接收的字节流丢失或重复部分字节(甚至一个字节),都会造成本地协议组件或远端协议组件无法对消息定界从而其后所有的TCP流处理错误无法恢复,TCP会话连接被关闭,该会话有关的所有标签或者路由将被撤销。TCP协议已经基于TCP序列号实现重传避免TCP流乱序、丢失、重复,从而提供本地TCP与远端TCP可靠的流传输服务。但这还不够,例如TCP收到远端的TCP流并发送确认序列号但尚未传输给上层协议组件时发生故障,备用备升主时因为前述流丢失无法恢复,从而导致该TCP连接恢复失败,从而NSR失败。在协议组件与TCP组件之间的流传输包含以下含义:(1)协议组件一次可以发送一个消息的一部分或者多个消息粘连在一起的TCP流;(2)发送方向可能由于套接口发送缓冲区限制不足以容纳发送TCP流长度,仅仅将部分发送TCP流拷贝到套接口发送缓冲区;(3)在接收方向TCP交给协议组件的TCP流不能保证是一个完整的应用消息,可能是消息的一部分,也可能多个消息粘连在一起的TCP流交给应用。某些TCP热备实现过程仅仅由TCP组件对TCP流和控制状态进行备份,另外一些TCP热备实现过程虽然对协议组件和TCP组件对TCP流和控制状态都各自进行备份,但协议组件和TCP各自备份缺少彼此协作机制以及备升主后协议组件和TCP组件进行平滑处理的机制。这些实现方式仅仅只能部分满足在故障时协议组件之间无TCP流收发的场景,而大型路由器协议组件每时每刻都可能收发TCP流,故障可能发生在收发TCP流任一环节,因此上述TCP热备实现过程难以解决以下问题:(1)备升主前无法保证TCP流进行了可靠的备份,同时由于备份缓冲区不可能无限大,备份TCP流的删除时间影响较大;(2)备升主后,协议组件和TCP组件虽然都有备份TCP流,但在发送方向,协议组件无法知道其发送缓冲区里面的哪些TCP流已经发送给TCP组件,哪些TCP流还没有发送给TCP组件;在接收方向,协议组件无法知道哪些TCP流已经从TCP组件接收,哪些TCP流还没有接收。因此前述实现很难保证协议组件与TCP之间收发TCP流的可靠传输,从而协议组件与远端设备协议组件之间收发TCP流不出现丢失或重复部分字节,从而难以导致NSR失败。综上所述,TCP热备实现必须提供一种可靠的协议组件备份和TCP备份之间的协作机制以及备升主后协议组件和TCP平滑处理机制。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种TCP热备架构中TCP流备份和平滑的方法和设备,提高了备升主后,基于TCP的MPLS/路由协议恢复的概率,提高了设备的可用性。为达到以上目的,本专利技术采取的技术方案是:一种TCP热备架构中TCP流备份和平滑处理的方法,包括:S1、收发TCP数据流时,靠近源的第一主用组件先缓存流,备份给第一备用组件,成功后更新收发流长度再传输给远离源的第二主用组件;第二主用组件收到TCP数据流后先缓存,备份给第二备用组件,成功后更新其收发流长度并传输给下一主用组件或远端设备;S2、在收到下一组件基于收发流长度的确认或远端设备基于TCP序列号的确认后,删除主用、备用组件的缓存流;S3、在备升主之后,基于收发流长度实现协议组件和TCP组件之间缓存流的平滑,随后恢复TCP连接。在上述技术方案的基础上,所述步骤S1中在发送方向接收TCP流的备份具体包括以下步骤:S101、主用协议组件初始化TCP连接以及主用协议收发流缓冲区后,将该会话有关主用协议收发缓冲区备份给备用协议组件;备用协议组件收到备份信息后为协议会话创建对应备用协议收发缓冲区;S102、主用TCP组件创建套接口控制块和TCP控制块后成功后,将套接口控制块和TCP控制块备份给备用TCP组件;备用TCP组件收到备份信息后为TCP连接创建套接口控制块和TCP控制块;S103、当新增路由、标签时,将新增路由、标签打包成TCP流,缓存至主用协议发送缓冲区;将主用协议发送缓冲区备份到备用协议发送缓冲区并更新;向主用协议组件返回备份成功消息;S104、主用协议组件收到备份成功消息后,更新该会话有关协议发送缓冲区中的发送长度;将待发送TCP流传输给主用TCP协议组件,主用TCP协议组件将TCP流拷贝到主用套接口发送缓冲区,并返回拷贝字节数;如发送字节数大于返回字节数,启动定时器再次传输未成功的TCP流;S105、主用TCP组件将主用套接口控制块的套接口发送缓冲区和TCP控制块备份给备用TCP组件;备用协议组件收到后更新备用套接口控制块的套接口发送缓冲区和TCP控制块,同时更新其套接口发送缓冲区中的发送流长度;并返回成功消息给主用TCP组件;主用TCP组件更新其套接口发送缓冲区中的发送流长度;S106、主用TCP组件调用TCP发送流程将TCP流传输给远端设备;S107、重复步骤S103~S106,传输后续TCP流。在上述技术方案的基础上,在步骤S1中在接收方向接收TCP流的备份具体包括以下步骤:S201、主用协议组件初始化TCP连接以及主用协议收发流缓冲区后,将该会话有关主用协议收发缓冲区备份给备用协议组件;备用协议组件收到备份信息后为协议会话创建对应备用协议收发缓冲区;S202、主用TCP组件创建套接口控制块和TCP控制块后,将套接口控制块和TCP控制块备份给备用TCP组件;备用TCP组件收到备份信息后为TCP连接创建套接口控制块和TCP控制块;S203、主用TCP组件收到远端设备的TCP流时,将其拷贝至主用套接口接收缓冲区,更新套接口缓冲区和TCP控制块的控制信息;S204、主用TCP组件将主用套接口控制块的套接口接收缓冲区和TCP控制块备份给备用TCP组件;备用协议组件收到后更新备用套接口接收缓冲区和TCP控制块,同时更新其套接本文档来自技高网
...

【技术保护点】
1.一种TCP热备架构中TCP流备份和平滑处理的方法,其特征在于,包括:/nS1、收发TCP数据流时,靠近源的第一主用组件先缓存流,备份给第一备用组件,成功后更新收发流长度再传输给远离源的第二主用组件;第二主用组件收到TCP数据流后先缓存,备份给第二备用组件,成功后更新其收发流长度并传输给下一主用组件或远端设备;/nS2、在收到下一组件基于收发流长度的确认或远端设备基于TCP序列号的确认后,删除主用、备用组件的缓存流;/nS3、在备升主之后,基于收发流长度实现协议组件和TCP组件之间缓存流的平滑,随后恢复TCP连接。/n

【技术特征摘要】
1.一种TCP热备架构中TCP流备份和平滑处理的方法,其特征在于,包括:
S1、收发TCP数据流时,靠近源的第一主用组件先缓存流,备份给第一备用组件,成功后更新收发流长度再传输给远离源的第二主用组件;第二主用组件收到TCP数据流后先缓存,备份给第二备用组件,成功后更新其收发流长度并传输给下一主用组件或远端设备;
S2、在收到下一组件基于收发流长度的确认或远端设备基于TCP序列号的确认后,删除主用、备用组件的缓存流;
S3、在备升主之后,基于收发流长度实现协议组件和TCP组件之间缓存流的平滑,随后恢复TCP连接。


2.如权利要求1所述的TCP热备架构中TCP流备份和平滑处理的方法,其特征在于,所述步骤S1中在发送方向接收TCP流的备份具体包括以下步骤:
S101、主用协议组件初始化TCP连接以及主用协议收发流缓冲区后,将该会话有关主用协议收发缓冲区备份给备用协议组件;备用协议组件收到备份信息后为协议会话创建对应备用协议收发缓冲区;
S102、主用TCP组件创建套接口控制块和TCP控制块后成功后,将套接口控制块和TCP控制块备份给备用TCP组件;备用TCP组件收到备份信息后为TCP连接创建套接口控制块和TCP控制块;
S103、当新增路由、标签时,将新增路由、标签打包成TCP流,缓存至主用协议发送缓冲区;将主用协议发送缓冲区备份到备用协议发送缓冲区并更新;向主用协议组件返回备份成功消息;
S104、主用协议组件收到备份成功消息后,更新该会话有关协议发送缓冲区中的发送长度;将待发送TCP流传输给主用TCP协议组件,主用TCP协议组件将TCP流拷贝到主用套接口发送缓冲区,并返回拷贝字节数;如发送字节数大于返回字节数,启动定时器再次传输未成功的TCP流;
S105、主用TCP组件将主用套接口控制块的套接口发送缓冲区和TCP控制块备份给备用TCP组件;备用协议组件收到后更新备用套接口控制块的套接口发送缓冲区和TCP控制块,同时更新其套接口发送缓冲区中的发送流长度;并返回成功消息给主用TCP组件;主用TCP组件更新其套接口发送缓冲区中的发送流长度;
S106、主用TCP组件调用TCP发送流程将TCP流传输给远端设备;
S107、重复步骤S103~S106,传输后续TCP流。


3.如权利要求1所述的TCP热备架构中TCP流备份和平滑处理的方法,其特征在于,在步骤S1中在接收方向接收TCP流的备份具体包括以下步骤:
S201、主用协议组件初始化TCP连接以及主用协议收发流缓冲区后,将该会话有关主用协议收发缓冲区备份给备用协议组件;备用协议组件收到备份信息后为协议会话创建对应备用协议收发缓冲区;
S202、主用TCP组件创建套接口控制块和TCP控制块后,将套接口控制块和TCP控制块备份给备用TCP组件;备用TCP组件收到备份信息后为TCP连接创建套接口控制块和TCP控制块;
S203、主用TCP组件收到远端设备的TCP流时,将其拷贝至主用套接口接收缓冲区,更新套接口缓冲区和TCP控制块的控制信息;
S204、主用TCP组件将主用套接口控制块的套接口接收缓冲区和TCP控制块备份给备用TCP组件;备用协议组件收到后更新备用套接口接收缓冲区和TCP控制块,同时更新其套接口接收缓冲区中的接收流长度;主用TCP组件更新其套接口接收缓冲区中的接收流长度;
S205、主用TCP组件调用TCP发送流程将包含确认序列号的报文传输给远端设备;TCP组件先备份再发确认序列号的报文;
S206,主用协议组件从主用TCP组件接收TCP流,TCP组件不删除其套接口接收缓冲区中的TCP流;
S207,主用协议组件将主用协议接收缓冲区备份到备用协议组件的协议接收缓冲区;备用协议组件收到备份信息后,更新对应备用协议接收缓冲区,更新接收长度,返回成功消息给主用协议组件;主用协议组件更新接收长度。


4.如权利要求1所述的TCP热备架构中TCP流备份和平滑处理的方法,其特征在于,步骤S2中,在发送方向发送TCP流的备份的删除具体包括以下步骤:
S301、主用协议组件向主用TCP组件查询发送流长度,并与主用协议发送缓冲区的发送流长度比较,删除协议发送缓冲区中已经发送成功的TCP流;
S302、主用协议组件将S301中协议发送缓冲区的删除TCP流信息发送给备用协议组件;备用协议组件收到删除TCP流信息后,删除备用协议发送缓冲区已经发送成功T...

【专利技术属性】
技术研发人员:付华楷马红斌
申请(专利权)人:烽火通信科技股份有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1