消息处理方法和装置及通信系统
技术领域
本发明实施例涉及通信技术,尤其涉及一种消息处理方法和装置及通信系统。
背景技术
图1为环形链路的网络架构示意图,如图1所示,该环形链路的网络包括:第一终端(End Point;简称:EP)11,第二EP12、第三EP13和第四EP14。其中,每个EP的信用证(credit;简称:crt)的最大值均为n,且每个EP的接收端口都配置了一个深度为n的缓存队列;n为整数且大于0。另外,4个EP以顺时针方向向各各自对角EP发送消息,即第一EP11向第二EP12发送消息,第二EP12向第三EP13发送消息,第三EP13向第四EP14发送消息,第四EP14向第一EP11发送消息。
具体的,以第一EP11作为源端为例,若第一EP11向第三EP13发送消息,则第一EP11在第一EP11中的信用证大于0时,先发送消息给第二EP12,并在发送消息后将第一EP11中的信用证减1,第二EP12接收到该消息后,将该消息放在第二EP12的缓存队列中,若第二EP12中的信用证大于0,则从该缓存队列中取出该消息并发送给第三EP13,并在发送该消息后将第二EP12中的信用证减1,同时,第二EP12向第一EP11发送通知消息,以触发第一EP11释放信用证,即将其信用证加1。
由于各个EP的信用证均为n,且每个EP的接收端口都配置了一个深度为n的缓存队列,因此,如果按照上述每个EP按照顺时针方向向各自对角EP发送消息,在各个EP同时发送n个消息时,会导致各个EP中的信用证均变为0,从而造成在各个EP在需要路由转发时无信用证可用,但又无法从缓存队列中取出消息以释放EP的信用证,进而出现了死锁的现象,因此造成了网络的可靠性差的问题。
发明内容
本发明实施例提供一种消息处理方法和装置及通信系统,以解决现有技术中基于环形链路的网络容易死锁的问题,有效地提高了网络的可靠性。
本发明实施例的第一个方面提供一种消息的处理方法,包括:
接收待输出消息;
判断第1信用证是否大于或者等于零,若判断出所述第1信用证等于零,且所述待输出消息为待输出路由消息,则确定所述待输出消息的路由次数j,并判断所述待输出路由消息的路由次数j对应的第j+1信用证是否大于或者等于零;
若判断出所述第j+1信用证大于零,则发送所述待输出消息,并将所述第j+1信用证减1;
其中,信用证被分成第1信用证至第N信用证,第1信用证用于指示所述待输出消息是否转发,第2信用证至第N信用证分别用于在第1信用证等于零时指示对应的路由次数的待输出路由消息是否转发;j和N均为整数,j大于或等于1,且小于或等于N-1
在第一个方面的第一种可能实现方式中,还包括:
若判断出所述第1信用证大于零,则发送所述待输出消息,并将所述第1信用证减1。
结合第一个方面,在第一个方面的第二种可能实现方式中,还包括:
若判断出所述第1信用证等于零,且所述待输出消息为待输出源消息,则等待所述第1信用证释放后再发送所述待输出消息;或者,
若判断出所述第j+1信用证等于零,则等待所述第1信用证或者第j+1信用证释放后再发送所述待输出消息。
结合第一个方面至第一个方面的第二种中任一种可能实现方式,在第一个方面的第三种可能实现方式中,所述待输出消息包括:源端和目的端,则所述发送所述待输出消息,包括:
根据所述源端和目的端,查询预配置的路由表,选择对应的路由组,并从所述路由组中选择一个路由发送所述待输出消息。
结合第一个方面的第三种可能实现方式,在第一个方面的第四种可能实现方式中,所述从所述路由组中选择一个路由发送所述待输出消息,包括:
识别每个路由组的流量,并选择流量最小的路由组发送所述待输出消息。
结合第一个方面的第三种可能实现方式,在第一个方面的第五种可能实现方式中,所述从所述路由组中选择一个路由组发送所述待输出消息,包括:
识别每个路由组的链路状态,并从链路状态为正常链路状态的路由组中选择一个路由组发送所述待输出消息;
则所述方法还包括:
对链路状态为非正常链路状态的路由组进行删除或者无效处理。
结合第一个方面至第一个方面的第五种中任一种可能实现方式,在第一个方面的第六种可能实现方式中,所述确定待输出消息的路由次数j,包括:
根据所述待输出消息的路由字段,确定所述待输出消息的路由次数j。
本发明实施例的第二个方面提供一种消息的处理装置,包括:
收发模块,用于接收待输出消息;
判断模块,用于判断第1信用证是否大于或者等于零;
确定模块,用于若所述判断模块判断出所述第1信用证等于零,且所述待输出消息为待输出路由消息,则确定所述待输出消息的路由次数j;
所述判断模块还用于判断所述待输出路由消息的路由次数j对应的第j+1信用证是否大于或者等于零;
所述收发模块,还用于若所述判断模块判断出所述第j+1信用证大于零,则发送所述待输出消息;
信用证处理模块,用于将所述第j+1信用证减1;
其中,信用证被分成第1信用证至第N信用证,第1信用证用于指示所述待输出消息是否转发,第2信用证至第N信用证分别用于在第1信用证等于零时指示对应的路由次数的待输出路由消息是否转发;j和N均为整数,j大于或等于1,且小于或等于N-1。
在第二个方面的第一种可能实现方式中,所述收发模块还用于若所述判断模块判断出所述第1信用证大于零,则发送所述待输出消息;
所述信用证处理模块还用于将所述第1信用证减1。
结合第二个方面,在第二个方面的第二种可能实现方式中,所述收发模块还用于若所述判断模块判断出所述第1信用证等于零,且所述待输出消息为待输出源消息,则等待所述第1信用证释放后再发送所述待输出消息;
或者,
所述收发模块还用于若所述判断模块判断出所述第1信用证或者第j+1信用证等于零,则等待所述第j+1信用证释放后再发送所述待输出消息。
结合第二个方面至第二个方面的第二种中任一种可能实现方式,在第二个方面的第三种可能实现方式中,所述待输出消息包括:源端和目的端,则所述收发模块包括:
选择单元,用于查询预配置的路由表,选择对应的路由组;
收发单元,用于从所述路由组中选择一个路由组发送所述待输出消息。
结合第二个方面的第三种可能实现方式,在第二个方面的第四种可能实现方式中,所述收发模块还包括:
识别单元,用于识别所述选择单元选择的每个路由组的流量;
则所述收发单元具体用于选择流量最小的路由组发送所述待输出消息。
结合第二个方面的第三种可能实现方式,在第二个方面的第五种可能实现方式中,所述收发模块还包括:
识别单元,用于识别所述选择单元选择的每个路由组的链路状态;
则所述收发单元具体用于从链路状态为正常链路状态的路由组中选择一个路由组发送所述待输出消息;
所述装置还包括:
处理模块,用于对链路状态为非正常链路状态的路由组进行删除或者无效处理。
结合第二个方面至第二个方面的第五种中任一种可能实现方式,在第二个方面的第六种可能实现方式中,所述确定模块具体用于若所述判断模块判断出所述第1信用证等于零,且所述待输出消息为待输出路由消息,则根据所述待输出消息的路由字段,确定所述待输出消息的路由次数j。
本发明实施例的第三个方面提供一种通信系统,包括终端,所述终端为如上述所述的消息的处理装置。
本发明实施例消息处理方法和装置及通信系统,通过接收待输出消息,并判断出第1信用证等于零,且该待输出消息为待输出路由消息,则确定待输出消息的路由次数j,并判断待输出路由消息的路由次数j对应的第j+1信用证是否大于或者等于零,并在该第j+1信用证大于零时,发送该待输出消息,并将该第j+1信用证减1,由于信用证被分成第1信用证至第N信用证,第1信用证用于指示该待输出消息是否转发,第2信用证至第N信用证分别用于在第1信用证等于零时指示对应的路由次数的待输出路由消息是否转发,因此,可以有效地解决了现有技术中基于环形链路的网络容易死锁的问题,从而有效地提高了网络的可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为环形链路的网络架构示意图;
图2为本发明消息的处理方法的一个实施例的流程图;
图3为本实施例中终端的一个结构示意图;
图4为本发明消息的处理方法的另一个实施例的流程图;
图5为本实施例中所基于的环形链路的网络结构示意图;
图6为本发明消息的处理装置的一个实施例的结构示意图;
图7为本发明消息的处理装置的另一个实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为本发明消息的处理方法的一个实施例的流程图,如图2所示,本实施例的执行主体为终端,则该方法可以包括:
步骤101、接收待输出消息。
在本实施例中,由该终端所组成的网络架构为环形链路网络架构。
步骤102、判断第1信用证是否大于或者等于零。
步骤103、若判断出该第1信用证等于零,且该待输出消息为待输出路由消息,则确定该待输出消息的路由次数j,并判断该待输出路由消息的路由次数j对应的第j+1信用证是否大于或者等于零。
其中,信用证被分成第1信用证至第N信用证,第1信用证用于指示该待输出消息是否转发,第2信用证至第N信用证分别用于在第1信用证等于零时指示对应的路由次数的待输出路由消息是否转发;j和N均为整数,j大于或等于1,且小于或等于N-1。
在本实施例中,该终端可以是源端、目的端或者路由端。图3为本实施例中终端的一个结构示意图,如图3所示,如果待输出消息是由终端300本身发起的,即是从缓存队列302中进入输出端口,则该终端300为源端。如果消息是由缓存队列301中进入输出端口,则该终端300为路由端。另外,输出端口的信用证可以分成N部分,即第1信用证至第N信用证。其中,第1信用证可以用于源端发送消息,也可以用于路由端发送消息,即对于接收到的待输出消息,均可以先判断第1信用证是否有效。第2信用证至第N信用证分别用于在第1信用证等于零时指示对应的路由次数的待输出路由消息是否转发,即可以根据确定的待输出路由消息的路由次数,从第2信用证至第N信用证中选择对应的信用证,来进行判断是否可以发送该待输出路由消息。举例来说,若待输出路由消息的路由次数为1,则根据第2信用证来进行判断;若待输出路由消息的路由次数为j,则根据第j+1信用证来进行判断。其中,j和N均为正整数。
步骤104、若判断出该第j+1信用证大于零,则发送该待输出消息,并将该第j+1信用证减1。
在本实施例中,通过接收待输出消息,并判断出第1信用证等于零,且该待输出消息为待输出路由消息,则确定待输出消息的路由次数j,并判断待输出路由消息的路由次数j对应的第j+1信用证是否大于或者等于零,并在该第j+1信用证大于零时,发送该待输出消息,并将该第j+1信用证减1,由于信用证被分成第1信用证至第N信用证,第1信用证用于指示该待输出消息是否转发,第2信用证至第N信用证分别用于在第1信用证等于零时指示对应的路由次数的待输出路由消息是否转发,因此,可以有效地解决了现有技术中基于环形链路的网络容易死锁的问题,从而有效地提高了网络的可靠性。
下面采用几个具体的实施例,对图1所示方法实施例的技术方案进行详细说明。
图4为本发明消息的处理方法的另一个实施例的流程图,如图4所示,本实施例的方法可以包括:
步骤201、接收待输出消息。
步骤202、判断第1信用证是否大于或者等于零;若大于零,则执行步骤203;若等于零,则执行步骤204。
步骤203、发送该待输出消息,并将该第1信用证减1。结束。
步骤204、判断该待输出消息为待输出路由消息还是待输出源消息,若是待输出路由消息,则执行步骤205;若是待输出源消息,则执行步骤207。
步骤205、确定所述待输出消息的路由次数j,并判断所述待输出路由消息的路由次数j对应的第j+1信用证是否大于或者等于零;若大于零,则执行步骤206;若等于零,则执行步骤207。
在本实施例中,优选地,确定所述待输出消息的路由次数j为:根据该待输出消息的路由字段,确定所述待输出消息的路由次数j。
步骤206、发送该待输出消息,并将该第j+1信用证减1。结束。
步骤207、等待信用证释放,并重新执行步骤202。
在本实施例中,举例来说,以图1中的环形链路的网络架构中的第一EP11为例,该第一EP11中的信用证包括:第1信用证、第2信用证和第3信用证,其中,初始时,第1信用证、第2信用证和第3信用证大小之和等于第二EP12中的缓存队列的大小,或者等于第四EP14中的缓存队列的大小。第1信用证可以用于该第一EP11作为源端发送消息所使用的信用证,也可以用于该第一EP11作为路由端发送消息所使用的信用证。第2信用证用于该第一EP11作为路由端发送第一次路由消息所使用的信用证;第3信用证用于该第一EP11作为路由端发送第二次路由消息所使用的信用证。另外,需要说明的是,图1中的环形链路的网络架构中四个EP并不是仅仅按照顺时针方向向各自对角EP发送消息,而是在每个EP中配置了路由表,可以依据配置的路由表选择合适的路由组进行消息的发送。
当第一EP11发送待输出消息时,首先判断第1信用证是否大于零,若大于零,则说明第一EP11的下一跳EP中的缓存队列中存在剩余空间,从而发送该待输出消息给下一跳EP,并将该第1信用证减1。若等于零,则说明第1信用证失效,若确定该待输出消息为待输出路由消息,则确定该待输出路由消息的路由次数,即确定是第一次路由还是第二次路由,若是第一次路由,则判断第2信用证是否大于零,若大于零,则发送待输出消息,并将第2信用证减1;若等于零,即使第3信用证大于零,也不发送待输出消息,而是等待该第2信用证的释放。若是第二次路由,则判断第3信用证是否大于零,若大于零,则发送待输出消息,并将第3信用证减1;若等于零,即使第2信用证大于零,也不发送待输出消息,而是等待该第3信用证的释放。
另外,还需要说明的是,信用证的释放与该第一EP11的下一跳EP的缓存队列有关系,若下一跳EP的缓存队列有剩余空间,则可以触发第一EP11对信用证进行释放,释放的优先级依次是第3信用证、第2信用证、第1信用证。
针对上述方法,即使第一EP11中的第1信用证无效后,也可以利用第2信用证或者第3信用证发送消息,从而避免现有技术中由于环形链路而造成的死锁问题。
进一步的,在本发明的又一个实施例的流程图,在上述图4所示实施例的基础上,步骤203和/或步骤206中发送待输出消息的具体实现方式为:
当该待输出消息包括:源端和目的端时,根据该源端和目的端,查询预配置的路由表,选择对应的路由组,并从该路由组中选择一个路由组发送该待输出消息。
在本实施例中,图5为本实施例中所基于的环形链路的网络结构示意图,如图5所示,用实线表示的子网包括EP21、EP22、EP23和EP24;在该子网中对于每个EP中配置的路由表可以包括三个路由组,例如,以EP21为源端例,若发消息到目的端EP24,则可以有三个路由组,分别是:EP21直接发送EP24的路由组,EP21通过EP22到EP24的路由组,EP21通过EP23到EP24的路由组。因此,若EP21发送可以发送待输出消息,则可以从三个路由组中任选一个路由组进行发送。
可选地,上述步骤中从该路由组中选择一个路由组发送该待输出消息的实现方式具体有如下几种:
第一种:识别每个路由组的流量,并选择流量最小的路由组发送该待输出消息。
以上述图4所示中的EP21为例,在发送待输出消息到EP24时,可以从上述三个路由组中选择流量最小的路由组发送该待输出消息,从而实现负载均衡。
第二种:识别每个路由组的链路状态,并从链路状态为正常链路状态的路由组中选择一个路由组发送该待输出消息。
以上述图5所示中的EP21为例,在发送待输出消息到EP24时,如果可EP21与EP24之间的链路出现故障,则从其他两个正常链路状态的路由组中选择一个路由组发送待输出消息,或者,从其他两个正常链路状态的路由组中选择流量最小的路由组发送待输出消息,从而在链路出现故障时,只需要选择可用的路由组链路即可,而不需要重新计算路由组。
另外,可选地,该方法还可以包括:
对链路状态为非正常链路状态的路由组进行删除或者无效处理。
在本实施例中,需要说明的是,对于无效处理,即在链路状态为非正常链路状态的路由组对应的有效位中设置为无效,例如:0。另外,在链路状态为正常链路状态的路由组对应的有效位中则设置为有效,例如:1。
图6为本发明消息的处理装置的一个实施例的结构示意图,如图6所示,本实施例的装置包括:收发模块31、判断模块32、确定模块33和信用证处理模块34;其中,收发模块31用于接收待输出消息;判断模块32用于判断第1信用证是否大于或者等于零;确定模块33用于若该判断模块32判断出该第1信用证等于零,且该待输出消息为待输出路由消息,则确定该待输出消息的路由次数j;判断模块32还用于判断该待输出路由消息的路由次数j对应的第j+1信用证是否大于或者等于零;收发模块31还用于若该判断模块32判断出该第j+1信用证大于零,则发送该待输出消息;信用证处理模块34用于将该第j+1信用证减1;其中,信用证被分成第1信用证至第N信用证,第1信用证用于指示该待输出消息是否转发,第2信用证至第N信用证分别用于在第1信用证等于零时指示对应的路由次数的待输出路由消息是否转发;j和N均为整数,j大于或等于1,且小于或等于N-1。
本实施例的消息的处理装置可以执行图2所示方法实施例的技术方案,其实现原理和技术效果相类似,此处不再赘述。
图7为本发明消息的处理装置的另一个实施例的结构示意图,在上述图6所示实施例的基础上,如图7所示,收发模块31还用于若该判断模块32判断出该第1信用证大于零,则发送该待输出消息;该信用证处理模块34还用于将该第1信用证减1。
可选的,收发模块31还用于若该判断模块32判断出该第1信用证等于零,且该待输出消息为待输出源消息,则等待该第1信用证释放后再发送该待输出消息;或者,收发模块31还用于若该判断模块32判断出该第j+1信用证等于零,则等待该第信用证或者第j+1信用证释放后再发送该待输出消息。
可选的,该待输出消息包括:源端和目的端,则收发模块31包括:选择单元311和收发单元312;其中,选择单元311用于查询预配置的路由表,选择对应的路由组;收发单元312用于从该路由组中选择一个路由组发送该待输出消息。
可选的,该收发模块31还包括:识别单元313用于识别该选择单元311选择的每个路由组的流量;则该收发单元312具体用于选择流量最小的路由组发送该待输出消息。
或者,识别单元313还用于识别该选择单元312选择的每个路由组的链路状态;则该收发单元311具体用于从链路状态为正常链路状态的路由组中选择一个路由组发送该待输出消息;该装置还包括:处理模块35用于对链路状态为非正常链路状态的路由组进行删除或者无效处理。
可选的,确定模块33具体用于若该判断模块32判断出该第1信用证等于零,且该待输出消息为待输出路由消息,则根据该待输出消息的路由字段,确定该待输出消息的路由次数j。
本发明还提供了一种通信系统,包括终端,该终端为上述图6或图7所示的消息的处理装置,其实现原理和技术效果相类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。