首页> 中国专利> 在集群中的多个物理通道中按照优先级进行通信的方法

在集群中的多个物理通道中按照优先级进行通信的方法

摘要

本发明公开了一种在集群中的多个物理通道中按照优先级进行通信的方法,包括以下步骤:步骤S102,确定集群中的多个物理通道的优先级;步骤S104,根据优先级在集群中的源节点和目的节点之间的物理通道中建立通信链路;步骤S106,在建立了通信链路后,在目的节点和源节点之间进行数据传输;步骤S108,当进行数据传输的物理通道故障时,按照多个物理通道的优先级将数据传输切换至优先级不高于发生故障的物理通道的优先级的多个物理通道中的一个中;以及步骤S110,检测发生故障的物理通道,在发生故障的物理通道恢复时,根据当前物理通道的优先级和故障恢复后的物理通道的优先级确定是否将数据传输主动切换至故障恢复后的物理通道。本发明使集群通信高效可靠。

著录项

  • 公开/公告号CN101217543A

    专利类型发明专利

  • 公开/公告日2008-07-09

    原文格式PDF

  • 申请/专利权人 中兴通讯股份有限公司;

    申请/专利号CN200810004228.2

  • 发明设计人 刘忱;童小九;陆小飞;缪红保;

    申请日2008-01-21

  • 分类号H04L29/06(20060101);H04L12/24(20060101);

  • 代理机构11240 北京康信知识产权代理有限责任公司;

  • 代理人尚志峰;吴孟秋

  • 地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦

  • 入库时间 2023-12-17 20:23:48

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-05-25

    授权

    授权

  • 2008-09-17

    实质审查的生效

    实质审查的生效

  • 2008-07-09

    公开

    公开

说明书

技术领域

本发明涉及到集群通信,尤其涉及一种基于多个物理传输通道按消息等级传输的集群通信方法。

背景技术

随着计算机技术以日新月异的速度发展,单台计算机的性能和可靠性越来越好,但还是有许多现实的要求是单台计算机难以达到的,在很多情况下,往往需要将多台计算机组织起来进行协同工作来模拟一台功能更强大的计算机来解决问题,这种技术称为集群技术。

在集群系统中,各计算机的分工协作是通过彼此间的通信来维系的。因此,提供可靠的内部通信机制是集群系统高可用性,高性能和高扩展性的有力保证,也是集群系统设计中最重要的问题之一。在通常的设计中,一般将系统内控制消息和业务消息使用公用的物理通道和传输协议来传送,带来的问题是公共的物理传输通道有可能出现拥塞,大量的业务消息和控制消息在统一的传输层传送,可能导致控制消息的传输时延加大,甚至可能出现关键的控制消息没有在规定时间响应导致系统做出错误决策。特别的,如果要保证控制消息传输的可靠性,通常的做法是使控制消息和业务消息传输物理通道分离,使它们运行在不同的高速物理传输通道上,尽量使控制消息能够及时得到响应和处理,这样提高了控制消息传输的可靠性,但同时也带来了新的问题,即业务消息的协议处理必须和控制消息协议处理分离,且控制消息处理优先级必须高于业务消息处理,软件流程更加复杂,出错的可能性增大,而且消息处理分离增加了性能的开销,同时增加高速物理传输通道也造成了资源浪费。

因此,需要一种在集群中的多个物理通道中按照优先级进行通信的解决方案,能够解决上述相关技术中的问题。

发明内容

本发明的目的是提供一种统一的可靠的集群通信方式,能够有效工作在不同物理传输通道之上,支持通信物理通道的切换,并支持消息优先级传送,提高集群系统的可用性。

本发明的目的是提供一种通用的传输层协议(以下简称CTCP,Cluster Translation Control Protocol,集群传输控制协议),可以工作在不同物理通道之上,能够自动检测系统中集群节点之间最优的通信物理通道并在该链路上建立可靠的通信连接,在正常通信时支持消息按优先级传输,使关键的高优先级的控制消息能够得到最及时的响应和处理。在链路异常时,本协议可以主动发起向其它备用物理通信通道的建链流程,若建链成功,发起通道切换,可以保证传输层消息不丢失,为上层提供更高质量更可靠的通信服务。

根据本发明提供了一种在集群中的多个物理通道中按照优先级进行通信的方法,包括以下步骤:步骤S102,确定集群中的多个物理通道的优先级;步骤S104,根据多个物理通道的优先级在集群中的源节点和目的节点之间的物理通道中建立通信链路;步骤S106,在物理通道中建立了通信链路后,在目的节点和源节点之间进行数据传输;步骤S108,当进行数据传输的物理通道故障时,按照多个物理通道的优先级将数据传输切换至优先级不高于发生故障的物理通道的优先级的多个物理通道中的一个中;以及步骤S110,检测发生故障的物理通道,在发生故障的物理通道恢复时,根据进行数据传输的当前物理通道的优先级和故障恢复后的物理通道的优先级确定是否将数据传输主动切换至故障恢复后的物理通道。

通信链路为传输层通信链路。

传输层通信链路的传输控制层包括:目的节点的地址,该地址包括目的节点的区、群集和节点号;集群传输层控制协议;发送缓存队列,其为按优先级排列的待发送数据;接收缓存队列,其为按优先级排列的待上层接收或待派发的数据缓存队列;链路序列标识,用于在每次建立传输层通信链路需要唯一标明当前传输层通信链路号。

集群传输层控制协议包括滑窗协议,滑窗协议包括发送窗口、重传窗口、和接收窗口。

步骤S104包括以下步骤:步骤S104-2,建立传输层通信链路时,从当前可用的物理通道中的优先级最高的物理通道广播目的节点的地址,若源节点通过优先级最高的物理通道收到目的节点的回应,则在优先级最高的物理通道中建立传输层通信链路;步骤S104-4,若在优先级最高的物理通道中建立传输层通信链路超时,则按照通道优先级从其余可用的物理通道中选择优先级最高的物理通道,并重复步骤S104-2,直到建立了传输层通信链路;或步骤S104-6,当在所有可用的物理通道中建立传输层通信链路都失败后,确定源节点和目的节点之间的通信链路连接失败。

步骤S106包括以下步骤:根据数据的优先级从高到低的顺序,按照滑窗协议将数据从源节点发送至目的节点。

步骤S106还包括以下步骤:数据发送后,发送窗口保留数据,直到目的节点返回确认数据被正常接收的消息,才释放数据;或如果在规定时间内目的节点未返回确认数据被正常接收的消息,则重传发送窗口中保留的数据。

步骤S106还包括以下步骤:目的节点按照数据的发送顺序接收数据,并按照数据的优先级将数据存入接收缓存区中。

步骤S108包括以下步骤:当进行数据传输的高优先级物理通道故障时,保持故障物理通道的传输层通信链路,以及利用同等优先级的物理通道或较低优先级的物理通道发起重信建立传输层通信链路,若重新建立传输层通信链路成功,则切换至新的传输层通信链路进行数据传输;否则利用下一个可用的物理通道发起重新建立传输层通信链路,直到重新建立传输层通信链路成功,或者当所有物理通道重新建立传输层通信链路都失败后,断开故障物理通道的传输层通信链路。

步骤S108还包括以下步骤:如果连接在进行数据传输的物理通道两端的节点中的一个节点关闭而另一个节点连接正常时,则关闭的节点向新的物理通道发起重新建立传输层通信链路的请求,并标识其为再次建立传输层通信链路,以提示连接正常的节点必须关闭前一物理通道再接收新的物理通道的建立传输层通信链路请求;以及连接正常的节点的数据到达连接关闭的节点时,通知连接正常的节点必须先关闭前一物理通道的传输层通信链路。

步骤S110包括以下步骤:物理通道发生故障并且已经发生过物理通道切换后,定时检测发生故障的物理通道,当发生故障的物理通道故障恢复时,如果当前进行数据传输的物理通道的优先级与故障恢复后的物理通道的优先级相同,则继续利用当前进行数据传输的物理通道进行数据传输;或如果当前进行数据传输的物理通道的优先级低于故障恢复后的物理通道的优先级,则主动将数据传输从当前进行数据传输的物理通道切换回故障恢复后的物理通道。

本发明提供了一个集群通信的传输层协议,可以工作在不同物理通道之上,能够自动检测系统中集群节点之间最优的通信物理通道并在该链路上建立可靠的通信连接,在正常通信时支持消息按优先级传输,使关键的控制消息能够得到最及时的响应和处理。在链路异常时,本协议可以主动发起向其它备用物理通信通道的建链流程,若建链成功,发起通道切换,可以保证物理通道故障时传输层消息不丢失,为上层提供更高质量更可靠的通信服务,体现了集群通信的高效、可靠的特点。

另外,本发明所提供的一种基于多物理通道按消息等级传输的集群通信方式,可以充分发挥多物理通道的备份作用,并减小集群节点间控制消息的通信时延,增强集群系统的安全性和实时性,提高集群系统的可用性。同时,该方法允许通信连接建立在不对等成本的高速物理通道和低速物理通道上,相比目前普遍采用的对等成本的物理传输通道备份,可以降低成本。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是示出根据本发明的在集群中的多个物理通道中按照优先级进行通信的方法的流程图;

图2是示出根据本发明实施例的在集群中的多个物理通道中按照优先级进行通信的方法的流程图;

图3是示出根据本发明第一实施例的在集群中的多个物理通道中按照优先级进行通信的方法的流程图;

图4是示出根据本发明第二实施例的支持消息按等级的多物理通道集群通信初始化示意图;

图5是示出根据本发明第二实施例的依据优先级策略建立集群节点通信连接示意图;

图6是示出根据本发明第二实施例的CTCP连接维护示意图;

图7是示出根据本发明第二实施例的CTCP正常通信数据发送示意图;

图8是示出根据本发明第二实施例的CTCP正常通信数据接收示意图;

图9是示出根据本发明第二实施例的当前通道故障时CTCP选择向备用物理通道切换示意图;以及

图10是示出根据本发明第二实施例的高优先级通道检测并在通道恢复时通道切换示意图。

具体实施方式

下面将结合附图来详细说明本发明的实施例。

图1是示出根据本发明的在集群中的多个物理通道中按照优先级进行通信的方法的流程图。参照图1,根据本发明的在集群中的多个物理通道中按照优先级进行通信的方法包括以下步骤:步骤S102,确定集群中的多个物理通道的优先级;步骤S104,根据多个物理通道的优先级在集群中的源节点和目的节点之间的物理通道中建立通信链路;步骤S106,在物理通道中建立了通信链路后,在目的节点和源节点之间进行数据传输;步骤S108,当进行数据传输的物理通道故障时,按照多个物理通道的优先级将数据传输切换至优先级不高于发生故障的物理通道的优先级的多个物理通道中的一个中;以及步骤S110,检测发生故障的物理通道,在发生故障的物理通道恢复时,根据进行数据传输的当前物理通道的优先级和故障恢复后的物理通道的优先级确定是否将数据传输主动切换至故障恢复后的物理通道。

通信链路为传输层通信链路。

传输层通信链路的传输控制层包括:目的节点的地址,该地址包括目的节点的区、群集和节点号;集群传输层控制协议;发送缓存队列,其为按优先级排列的待发送数据;接收缓存队列,其为按优先级排列的待上层接收或待派发的数据缓存队列;链路序列标识,用于在每次建立传输层通信链路需要唯一标明当前传输层通信链路号。

集群传输层控制协议包括滑窗协议,滑窗协议包括发送窗口、重传窗口、和接收窗口。

步骤S104包括以下步骤:步骤S104-2,建立传输层通信链路时,从当前可用的物理通道中的优先级最高的物理通道广播目的节点的地址,若源节点通过优先级最高的物理通道收到目的节点的回应,则在优先级最高的物理通道中建立传输层通信链路;步骤S104-4,若在优先级最高的物理通道中建立传输层通信链路超时,则按照通道优先级从其余可用的物理通道中选择优先级最高的物理通道,并重复步骤S104-2,直到建立了传输层通信链路;或步骤S104-6,当在所有可用的物理通道中建立传输层通信链路都失败后,确定源节点和目的节点之间的通信链路连接失败。

步骤S106包括以下步骤:根据数据的优先级从高到低的顺序,按照滑窗协议将数据从源节点发送至目的节点。

步骤S106还包括以下步骤:数据发送后,发送窗口保留数据,直到目的节点返回确认数据被正常接收的消息,才释放数据;或如果在规定时间内目的节点未返回确认数据被正常接收的消息,则重传发送窗口中保留的数据。

步骤S106还包括以下步骤:目的节点按照数据的发送顺序接收数据,并按照数据的优先级将数据存入接收缓存区中。

步骤S108包括以下步骤:当进行数据传输的高优先级物理通道故障时,保持故障物理通道的传输层通信链路,以及利用同等优先级的物理通道或较低优先级的物理通道发起重信建立传输层通信链路,若重新建立传输层通信链路成功,则切换至新的传输层通信链路进行数据传输;否则利用下一个可用的物理通道发起重新建立传输层通信链路,直到重新建立传输层通信链路成功,或者当所有物理通道重新建立传输层通信链路都失败后,断开故障物理通道的传输层通信链路。

步骤S108还包括以下步骤:如果连接在进行数据传输的物理通道两端的节点中的一个节点关闭而另一个节点连接正常时,则关闭的节点向新的物理通道发起重新建立传输层通信链路的请求,并标识其为再次建立传输层通信链路,以提示连接正常的节点必须关闭前一物理通道再接收新的物理通道的建立传输层通信链路请求;以及连接正常的节点的数据到达连接关闭的节点时,通知连接正常的节点必须先关闭前一物理通道的传输层通信链路。

步骤S110包括以下步骤:物理通道发生故障并且已经发生过物理通道切换后,定时检测发生故障的物理通道,当发生故障的物理通道故障恢复时,如果当前进行数据传输的物理通道的优先级与故障恢复后的物理通道的优先级相同,则继续利用当前进行数据传输的物理通道进行数据传输;或如果当前进行数据传输的物理通道的优先级低于故障恢复后的物理通道的优先级,则主动将数据传输从当前进行数据传输的物理通道切换回故障恢复后的物理通道。

下面结合图2来描述本发明的第一实施例。参照图2,该实施例提供了一种基于多个物理传输通道按消息等级传输的集群通信方法,包括以下步骤:

步骤S202,支持消息按等级传输的多物理通道集群通信的初始化;

步骤S204,依据优先级策略建立集群节点通信连接并提供相关的连接维护;

步骤S206,支持消息等级的集群传输控制协议通信;

步骤S208,当前通道故障时选择向备用物理通道的通信链路切换;以及

步骤S210,支持向对发生过故障的高优先级物理通道检测,在高优先级通道恢复时主动发起向高优先级通道的链路切换。

在步骤S202中,首先,系统启动时需要将所有本集群节点支持的物理通信通道进行初始化,集群节点内向其它集群节点通信的传输控制层必须包含以下内容:

集群通信对端节点的通信地址,主要包括:集群的地址划分-区(zone),群集(cluster)和节点(node);

集群传输层控制协议,例如采用滑窗协议,主要包括发送窗口,重传窗口,接收窗口等;

发送缓存队列,按优先级排列的待发送消息;

接收缓存队列,按优先级排列的待上层接收或待派发的消息缓存队列;

链路序列标识,每次建链需要唯一标明的当前链路号。

然后,在通道初始化过程中需要确定所有可用的物理通道优先级。如果不同物理通道可以提供基本相同或对等的通信带宽和传输性能,则可以设置为相同的优先级,如果不同物理通道的通信带宽和传输性能不同,则依据通信带宽和传输性能的高低,给物理通道划分不同的优先级,传输性能高的使用高优先级。默认两台主机间消息传输首选高优先级的物理通道,即采用最高通信质量的物理通道。

在步骤S204中,通信建立链路过程是由上层消息发送请求触发的,建链时需要从首选物理通信通道广播请求通信目的端的节点地址,广播中携带了本机的通信节点地址等信息,若收到目的端的回应,确定底层采用的物理通信通道,并建立传输层的通信连接;若建链超时,则按通道优先级依次选取剩下的可用通信物理通道,然后从第二个物理通道发起通信建链请求,方法与前面相同,直到在所有按优先级排列的可用物理通信通道列表中全部通道尝试建链失败后,才认为建立两集群节点的通信连接失败;

CTCP端到端的通信传输层连接基于数据报的滑窗协议,连接建立后的通信维护依赖于保活和窗口探测机制,通信可靠性依赖于超时重发和快速重传等现有机制;以及

CTCP的多播采用对多个节点的单播技术实现,提供集群内的组播功能。

在步骤S206中,CTCP正常通信时的消息头结构主要包括目的集群节点通信地址,源集群节点通信地址,发送数据报序号,应答数据报序号,窗口大小,消息优先级和CTCP事件号等;

CTCP消息传输按优先级,重要的控制消息使用高的优先级,在通信消息缓存中的高优先级队列中存放,在数据传输时优先保证进入CTCP窗口控制器中的发送窗口发送;低优先级的消息在通信消息缓存中的低优先级队列中存放,待前面的高优先级队列所有消息发送完后再进入CTCP窗口控制器的发送窗口。数据报进入CTCP窗口控制器后,按照滑窗协议处理,每个数据报按包序号传输,在数据发送后,发送窗口仍然保留数据,直到对端回应确认该数据包已经正常接收,才释放该数据包。如果在规定时间通信对端没有回应确认,则开启重传流程,通过超时重传保证数据传输的可靠性;

接收方消息在CTCP窗口控制器的接收窗口中按数据报序号接收,但进入接收缓存区中需要按优先级排列,即保证高优先级消息先提交给上层也同时保证同一优先级发送的消息按顺序接收。

在步骤S208中,连接断链后选择向备用物理通道的通信链路切换,保证上层无消息丢失。CTCP连接检测到通信故障后,即将断链时,不会立刻释放CTCP控制结构,需要先在通道设备表中搜索同等优先级的物理通道或其它优先级的物理通道并发起重建链,若三次握手成功,则连接恢复,按正常方式通信,保证无消息丢失。如果建链失败,则在通道设备表中搜索下一个可用的物理通道并发起建链,如此继续,直到所有物理通道都尝试建链失败后,CTCP连接才真正断链;以及

如果连接一端关闭,一端正常,连接关闭方可能发起向新物理通道重新连接,必须以不同的链路序列标识标识本方已经是再次建立连接,提示对端必须先关闭以前的通道再接受新物理通道的建链请求;若在该条件下连接正常的节点数据报到达连接关闭节点时,CTCP会发通知消息,告知对端必须先关闭该通道链路。

在步骤S210中,高优先级的首选物理通道在遭遇到通信故障并且已经发生过通道切换后,需要主动定时检测,一旦该物理通道故障恢复,主动发起从当前物理通道向高优先级首选物理通道的切换,若当前物理通道与首选物理通道优先级相同,则无须主动发起物理通道切换;

高优先级的物理通道可以为集群系统提供良好的通信带宽和高性能,所以在高优先级物理通道故障并且已经发生过通道切换时需要动态检测首选的高优先级物理通道是否已经恢复,本方法中的通道检测方式是集群节点主动定时通过首选通道向通信对端节点发起附加建链请求,若对方回应允许建链,则关闭低优先级物理通道,发起向高优先级的物理通道建立链路的动作。若当前物理通道与首选物理通道优先级相同,则保持现状,不发起高优先级物理通道检测。

下面接合图3至图9来详细说明本发明的第二实施例。

如图3所示,本实施例所提供的一种基于多物理通道按消息等级传输的集群通信方法,包括以下基本处理步骤:

步骤S302,依据优先级策略建立集群节点通信连接;

步骤S304,按消息等级传输的可靠传输层通信;

步骤S306,当前通道故障时选择向其它备用物理通道的切换,并对出现故障的高优先级物理通道检测,在通道恢复时主动发起向原高优先级通道的切换。

所述的步骤S302中,根据集群通信初始化时建立的全局物理通道表,CTCP可以依据通道优先级策略建立集群节点间通信连接。如果建立连接失败,则在全局通道表中搜索次高优先级通道并发起建立连接,如此反复直到建立连接成功。建立通信连接成功后,记录该连接集群节点间所有可用物理通道到CTCP控制块设备列表中,通过连接的保活检测和窗口检测维护链路通信状态。

集群系统内节点对集群通信初始化,主要包括将所有本集群节点支持的物理通信通道进行初始化,根据传输性能建立区分优先级的全局物理通道表。集群节点间通信的传输控制层相关配置包括:

集群通信对端节点的通信地址,主要包括:集群的地址划分,区(zone),群集(cluster)和节点(node);

集群传输层控制协议,例如采用现有技术——滑窗协议,主要包括发送窗口,重传窗口,接收窗口等;

发送缓存队列,按优先级排列的待发送消息;

接收缓存队列,按优先级排列的待上层接收或待派发的消息缓存队列;

链路序列标识,每次建链需要唯一标明的当前链路号。

其主要相关数据结构表示如下:

    struct

    {

        {zone;cluster;node;}/*集群节点地址*/

        WndCtl;               /*CTCP窗口控制器*/

        DgramDevList;         /*全局传输通道设备列表*/

        T_MSG_SndList;        /*需要在该连接上发送的消息队列*/

        T_MSGQueue;           /*该连接接收消息队列*/

        LinkNum;              /*链路序列标识*/

    }CTCPCtl;

集群通信初始化,如图4所示。

步骤S402,初始化集群控制传输控制协议的默认参数和数据结构;

步骤S404,设置CTCP链路初始序列号;

步骤S406,初始化所有传输通道物理设备;

步骤S408,建立设备描述符表,为每个传输物理设备申请相关的设备描述符;

步骤S410,按通道设备传输性能为每个设备设置优先级,传输性能高的使用高优先级。

其中,通信建立链路过程是由上层消息发送请求触发的,建链时需要从首选物理通信通道广播请求通信目的端的节点地址,广播中携带了本机的通信节点地址等信息,若收到目的端的回应,确定底层采用的物理通信通道,并建立传输层的通信连接;若建链超时,则按通道优先级按通道优先级选取次佳的通信物理通道,从第二个物理通道发起通信建链请求,方法与前面相同,直到在所有按优先级排列的物理通信通道列表中全部尝试建链失败后,才认为建立两集群节点的通信连接失败。建立通信链路流程如图5所示。

步骤S502,上层消息发送请求触发通信建链;

步骤S504~S506,搜索全局通道表,选取最高优先级的可用物理通道,若没有可用的物理通道,则执行步骤S514;

步骤S508,向该通道发起建链握手,建立连接,若建链成功执行步骤S512,否则执行步骤S510;

步骤S510,若建链失败,设置该通道不可用,转向全局通道表中搜索下一个可用物理通道;

步骤S512,若建链成功,记录所有可用物理通道到CTCP通道表中;以及

步骤S514,进行异常处理,并完成处理。

其中,CTCP端到端的通信传输层连接采用现有的基于数据报的滑窗协议,主要是采用定时查询和检测消息的方式实现。连接建立后的通信维护依赖于定时保活和窗口探测等消息检测机制,通信可靠性依赖于超时重发和快速重传等机制。连接维护及相关状态变迁,流程如图6所示。

步骤S602,向对端发起通信建链请求,发送端CTCP进入等待连接同步状态(SYN-);

步骤S604,接收端处理对端发送的建立CTCP连接请求(即连接同步消息SYN),进入接受连接同步状态(SYN+),并协商该连接中可用的通道设备表;

步骤S606,处于等待连接同步状态(SYN-)的CTCP处理建链回应消息(SYN ACK),连接工作状态变为ESTABLISH;

步骤S608,处于接受连接同步状态(SYN+)的CTCP处理建链回应消息(SYN ACK),连接工作状态变为ESTABLISH;

步骤S610,处于工作状态的CTCP相互发起的连接保活检测和滑窗检测消息;

步骤S612,处于工作状态的CTCP接收的连接保活检测应答和滑窗检测应答消息;

处于工作状态的CTCP,在规定时间未收到连接保活检测应答或滑窗检测应答消息,并且超过一定次数后,发起连接预关闭。

CTCP的多播采用对多个节点的单播技术实现,提供集群内的组播功能。

所述的步骤S604中,CTCP正常业务通信时,采用滑窗协议实现按序收发和流控机制,业务消息需要按消息优先级进入滑窗发送器,在接收端,从滑窗接收器接收的按序消息也需要按优先级提交用户处理,保证同一优先级的消息按序接收。

CTCP正常通信时的消息头结构主要包括目的集群节点通信地址,源集群节点通信地址,发送数据报序号,应答数据报序号,窗口大小,消息优先级和CTCP事件号。

消息头结构定义如下:

struct

{

    struct{

                char   zone:3;/*目的集群节点地址,zone 3位,cluster 5位,node 8位*/

                char   cluster:5;

                char   node;

        }DestNode;

            struct{

                char   zone:3;/*源集群节点地址,zone 3位,cluster 5位,node 8位*/

                char   cluster:5;

                char   node;

        }SrcNode;

        unsigned short wPackNo;      /*发送数据报序号*/

        unsigned short wAckNo;       /*应答数据报序号*/

        char            twin:4;      /*4位窗口大小*/

        char            tPriority:4;/*4位优先级*/

        unsigned short wEvent;      /*16位的事件号*/

}T_CTCPHead;

CTCP消息按优先级发送,重要的控制消息使用高的优先级,在通信消息缓存中的高优先级队列中存放,在数据传输时优先保证进入CTCP窗口控制器中的发送窗口发送;低优先级的消息在通信消息缓存中的低优先级队列中存放,待前面的高优先级队列消息发送完后再进入CTCP窗口控制器的发送窗口。数据报进入CTCP窗口控制器后,按照滑窗协议,每个数据报按包序号传输,在数据发送后,发送窗口仍然保留数据,直到对端回应确认该数据包已经正常接收,才释放该数据包。如果在规定时间通信对端没有回应确认,则开启重传流程,通过超时重传保证数据传输的可靠性。如图7所示:

步骤S702~S704,连接确定后,待发送消息按优先级放入消息缓存队列;

步骤S706~S708,满足滑窗发送条件后,CTCP发送器按优先级从消息缓存队列中取消息到发送窗口;

步骤S710,发送数据后,设置重传定时器,等待对端确认;

步骤S712,若重传定时器先超时,则重新发送发送窗口中数据;若重传超过规定次数,则执行步骤S716,否则执行步骤S714;

步骤S714,若收到对端确认,释放发送窗口中消息,完成发送。

步骤S716,发起连接预关闭。

接收消息是在CTCP窗口控制器的接收窗口中按数据报序号接收,但进入接收缓存区中需要按优先级排列,即保证高优先级消息先提交给上层也同时保证同一优先级发送的消息按顺序接收。如图8所示:

步骤S802,接收数据按包序号放入接收窗口,如果接收数据包序号错乱,回应对端消息乱序确认;

步骤S804~S806,按消息优先级将接收窗口中的按序接收数据包放入用户接收缓存队列中,并向对端回应确认;

步骤S808~S810,用户接收数据后,回应按CTCP接收器的实际容量扩大CTCP接收窗口。

如果CTCP发送端收到对端的消息乱序确认,则发起数据重传。

所述的步骤S808~S810中,当前通道故障时,CTCP在检测到连接异常状态下,选择向全局通道表中其它可用的物理通道发起通信建链流程,并在重新连接成功时切换物理通道,从而保证CTCP连接正常。CTCP还向对发生过故障的高优先级物理通道定时发起检测,在高优先级通道恢复正常时,主动发起从当前通道向高优先级通道的链路切换流程。整个流程对上层业务基本不可见,可以做到消息不丢失。

CTCP连接预关闭后,不会立刻释放CTCP控制结构,需要先在连接通道设备表中搜索同等优先级的物理通道或下一个优先级的可用物理通道并发起建链,若三次握手成功,则连接恢复,按正常方式通信,保证无消息丢失。如果建链失败,则在通道设备表中搜索下一个可用的物理通道并发起建链,如此继续,直到所有物理通道都尝试建链失败后,CTCP链路才真正断链。如图9所示:

步骤S902~S904,连接故障时,按优先级查找CTCP通道表中的可用设备通道;

步骤S906,向该设备通道发起通信建链;

步骤S908,若建链成功,顺序执行步骤S910和S912,否则执行步骤S914;

步骤S910~S912,发起通道切换,以新的通信通道替代原来的通道,恢复CTCP连接;

步骤S914若建链不成功,设置该通道不可用,重复步骤S902-S908,直到CTCP通道设备表中所有通道建立通信链路失败,执行步骤S916;以及

步骤S916,连接断链。

特别的,如果连接一端关闭,一端正常,连接关闭方可能发起向新物理通道重新连接,必须以不同的链路标识LinkNum标识本方已经是再次建立连接,提示对端必须先关闭以前的通道再接受新物理通道的建链请求;若在该条件下连接正常的节点数据报到达连接关闭节点时,CTCP会发通知消息,告知对端必须关闭该通道。

如图10所示,高优先级的首选物理通道在遭遇到通信故障并且已经发生过通道切换后,需要主动定时检测,一旦该物理通道故障恢复,主动发起从当前物理通道向高优先级首选物理通道的切换,若当前物理通道与首选物理通道优先级相同,则无须主动发起物理通道切换。

高优先级的物理通道可以为集群系统提供良好的通信带宽和高性能,所以在高优先级物理通道故障并且已经发生过通道切换时需要动态检测首选的高优先级物理通道是否已经恢复,本方法中的通道检测方式是集群节点主动定时通过首选通道向通信对端节点发起附加建链请求,若对方回应允许建链,则关闭低优先级物理通道,发起向高优先级的物理通道建立链路的动作。若当前物理通道与首选物理通道优先级相同,则保持现状,不发起高优先级物理通道检测。

本发明所提供的一种基于多物理通道按消息等级传输的集群传输层通信协议,能够自动检测系统中集群节点之间最优的通信物理通道并在该链路上建立可靠的通信连接,在正常通信时支持消息按优先级传输,使关键的控制消息能够得到最及时的响应和处理。在链路异常时,本协议可以主动发起向其它备用物理通信通道的建链流程,通道切换时保证物理通道故障时传输层消息不丢失,为上层提供更高质量更可靠的通信服务。可以充分发挥多物理通道的备份作用,并减小集群节点间控制消息的通信时延,增强了集群系统的安全性和实时性,提高了集群系统的可用性,充分体现了集群通信的特点——高效,可靠。另外,该方法允许通信连接建立在不对等成本的高速物理通道和低速物理通道上并实现相互备份,相比目前普遍采用的对等成本的物理传输通道备份,可以降低成本。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号