具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本申请实施例提供一种报文转发方法、装置、通信设备及计算机可读存储介质。其中,该报文转发方法可应用于通信设备,其中,所述通信设备包括路由器。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参照图1,图1 为本申请的实施例提供的一种报文转发方法的流程示意图。
如图1所示,该方法包括步骤S101至步骤S103。
步骤S101、通过交叉盘将接收到的数据报文广播至建立组播关系的多个业务盘。
示范性的,如图2所示,交叉盘与多个业务盘建立组播关系,以使多个业务盘成为交叉盘的组播成员,且每个业务盘对应有槽位,业务盘的槽位可以是同一槽位,也可以是不同槽位,其中,业务盘的数量至少为2个,业务盘对应至少两个不同的槽位。交叉盘接收到入口盘检测到的数据报文,将接收到的报文进行广播,以使与交叉盘建立组播关系的组播成员接收到该数据报文,该数据报文以数据包的形式进行广播,且该数据报文包括单播报文和组播报文。
步骤S102、根据所述数据报文,确定多个所述业务盘中的待转发业务盘。
示范性的,在获取到数据报文时,通过该数据报文确定多个业务盘中的一个业务盘作为待转发业务盘。示范例的,获取该数据报文中的标识信息,通过该标识信息,确定多个业务盘中对应的业务盘,将该对应的业务盘作为待转发业务盘。例如,各个业务盘为业务盘1、业务盘2,当获取到数据报文中的标注信息为业务盘1时,确定业务盘1为待转发业务盘。
在一实施例中,具体地,参照图2,步骤S102包括:子步骤S1021至子步骤S1022。
子步骤S1021、获取所述数据报文中的五元组。
示范性的,获取该数据报文中的五元组,该五元组包括源IP地址,源端口,目的IP地址,目的端口和传输层协议。
子步骤S1022、基于预置哈希计算引擎计算所述五元组,获取所述数据报文的哈希值。
示范性的,获取预置哈希计算引擎,该预置哈希计算引擎预先存储在区块链或存储介质中,通过获取路径获取存储于区块链或存储介质中的预置哈希计算引擎。将获取到的五元组输出到预置哈希计算引擎中,通过该预置哈希计算引擎对该五元组进行计算,获取预置哈希计算引擎输出的哈希值,该哈希值为数据报文的哈希值。
子步骤S1023、根据预置映射表,确定所述哈希值对应的待转发组播。
示范性的额,获取预置映射表,通过预置哈希表确定哈希值第一个的待转发业务盘,该预置映射表包括多个哈希值、以及各个哈希值对应的业务盘标识和槽位标识。通过将该哈希值与预置映射表进行匹配,获取预哈希值相匹配的业务盘标识和槽位标识,通过匹配的业务盘标识确定待转发业务盘。
具体的,所述预置映射表包括第一预置映射表;所述根据预置映射表,确定所述哈希值对应的待转发业务盘,包括:获取所述第一预置映射表;通过所述哈希值查询所述第一预置映射表,获取与所述哈希值相匹配的第一业务盘;确定所述第一业务盘作为待转发业务盘。
示范性的,获取第一预置映射表,该第一预置映射表包括多个哈希值、以及各个哈希值对应的业务盘标识和槽位标识,其中,该业务盘为当前与该交叉盘建立组播关系的。通过将该哈希值与预置映射表进行匹配,获取与哈希值相匹配的业务盘标识和槽位标识,通过业务盘标识确定第一业务盘,并确定第一业务盘为待转发业务盘。
具体的,所述预置映射表包括第二预置映射表;所述将所述第一业务盘作为待转发业务盘之后,还包括:通过所述交叉盘向各个所述业务盘发送业务配置报文;通过所述业务配置报文,确定所述第一业务盘是否发生故障的;若确定所述第一业务盘发生故障,则获取所述第二预置映射表;通过所述哈希值查询所述第二预置映射表,获取与所述哈希值匹配的第二业务盘;确定所述第二业务盘作为待转发业务盘。
示范性的,通过交叉盘将预先存储的业务配置报文发送至建立组播关系的业务盘,获取各个业务盘返回该有任务配置报文对应的协议信号,通过该协议信号,确定发生故障的业务盘。例如,分别获取到业务盘1和业务盘2的协议信号,若获取到业务盘1的协议信号为0,则确定该业务盘1没有发生故障;若获取到业务盘1的协议信号为1,则确定该业务盘1发生故障。若获取到业务盘2的协议信号为0,则确定该业务盘2没有发生故障;若获取到业务盘2的协议信号为1,则确定该业务盘2发生故障。
若确定该发生故障的业务盘为第一业务盘时,获取第二预置映射表,该第二预置映射表包括多个哈希值、以及各个哈希值对应的业务盘标识和槽位标识,但第二预置映射表未包括第一业务盘对应的业务盘标识和槽位标识。通过将哈希值与第二预置映射表进行匹配,获取预第二预置映射表中与哈希值相匹配的业务盘标识和槽位标识,将该业务盘标识对应的第二业务盘作为待转发业务盘,该槽位标识对应的槽位转发出口。
具体的,所述基于预置哈希计算引擎计算所述五元组,获取所述数据报文的哈希值之后,还包括:若检测到所述业务盘的数量发生变化,则生成第三映射表;通过查询所述第三映射表,获取与所述哈希值匹配的目标业务盘;确定所述目标业务盘作为待转发业务盘。
示范性的,当检测到与交叉盘建立组播联系的业务盘发生数量变化时,该数量变化包括业务盘的增加或减少,获取当前与该交叉盘建立组播关系的业务盘的业务盘标识和槽位标识,通过各个业务盘的业务盘标识、槽位标识、以及预置哈希值,生成第三映射表。通过哈希值查询该第三映射表,获取该第三映射表中与哈希值相匹配的业务盘,将该业务盘作为目标业务盘,以及将该目标业务盘对应的槽位作为转发出口,将该目标业务盘作为待转发业务盘。
步骤S103、通过所述待转发业务盘将所述数据报文进行转发。
示范性的,在确定待转发业务盘,通过待转发业务盘对应的槽位标识确定该待转发业务盘的槽位,并将待转发业务盘的槽位作为转发出口转发该数据报文。
在本申请实施例中,通过交叉盘将接收到的数据报文广播至建立组播关系的多个业务盘,并确定待转发业务盘,以使待转发业务盘转发数据报文,实现组播或未知单播业务都能无损转发。
请参照图4,图4为本申请实施例提供的一种报文转发装置的示意性框图。
如图4所示,该报文转发装置400,包括:广播模块401、确定模块402、转发模块403。
广播模块401,用于通过交叉盘将接收到的数据报文广播至建立组播关系的多个业务盘;
确定模块402,用于根据所述数据报文,确定多个所述业务盘中的待转发业务盘;
转发模块403,用于通过所述待转发业务盘将所述数据报文进行转发。
其中,确定模块402具体还用于:
获取所述数据报文中的五元组;
基于预置哈希计算引擎计算所述五元组,获取所述数据报文的哈希值;
根据预置映射表,确定所述哈希值对应的待转发业务盘。
其中,确定模块402具体还用于:
获取所述第一预置映射表;
通过所述哈希值查询所述第一预置映射表,获取与所述哈希值相匹配的第一业务盘;
确定所述第一业务盘作为待转发业务盘。
其中, 报文转发装置400具体还用于:
通过所述交叉盘向各个所述业务盘发送业务配置报文;
通过所述业务配置报文,确定所述第一业务盘是否发生故障的;
若确定所述第一业务盘发生故障,则获取所述第二预置映射表;
通过所述哈希值查询所述第二预置映射表,获取与所述哈希值匹配的第二业务盘;
确定所述第二业务盘作为待转发业务盘。
其中,报文转发装置400还用于:
若检测到所述业务盘的数量发生变化,则生成第三映射表;
通过查询所述第三映射表,获取与所述哈希值匹配的目标业务盘;
确定所述目标业务盘作为待转发业务盘。
其中,报文转发装置400还用于:
实时检测所述业务盘的数量;
若确定所述业务盘发生增减,则确定当前的有效业务盘;
获取所述有效业务盘的标识信息、所述有效业务盘的槽位信息和预置哈希值,生成第三映射表。
其中,报文转发装置400还用于:
预先将所述交叉盘与多个业务盘建立联系,以使建立联系的各个业务盘为所述交叉盘的组播成员;
所述业务盘的数量至少为2个,且所述业务盘至少处于2个不同的槽位。
需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各模块及单元的具体工作过程,可以参考前述报文转发方法实施例中的对应过程,在此不再赘述。
请参阅图5,图5是本发明实施例提供的一种通信设备的结构示意性框图。
示例性的,通信设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的基于报文转发装置程序,其中所述基于报文转发装置程序被所述处理器执行时,实现如本发明实施例提供的报文转发方法。
应当理解的是,处理器可以是中央处理单元 (Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路 (Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
通过交叉盘将接收到的数据报文广播至建立组播关系的多个业务盘;
根据所述数据报文,确定多个所述业务盘中的待转发业务盘;
通过所述待转发业务盘将所述数据报文进行转发。
在一个实施例中,所述处理器实现根据所述数据报文,确定多个所述业务盘中的待转发业务盘时,用于实现:
获取所述数据报文中的五元组;
基于预置哈希计算引擎计算所述五元组,获取所述数据报文的哈希值;
根据预置映射表,确定所述哈希值对应的待转发业务盘。
在一个实施例中,所述处理器实现所述预置映射表包括第一预置映射表;所述根据预置映射表,确定所述哈希值对应的待转发业务盘时,用于实现:
获取所述第一预置映射表;
通过所述哈希值查询所述第一预置映射表,获取与所述哈希值相匹配的第一业务盘;
确定所述第一业务盘为待转发业务盘。
在一个实施例中,所述处理器实现所述预置映射表包括第二预置映射表;所述确定所述第一业务盘为待转发业务盘之后时,用于实现:
通过所述交叉盘向各个所述业务盘发送业务配置报文;
通过所述业务配置报文,确定所述第一业务盘是否发生故障的;
若确定所述第一业务盘发生故障,则获取所述第二预置映射表;
通过所述哈希值查询所述第二预置映射表,获取与所述哈希值匹配的第二业务盘;
确定所述第二业务盘为待转发业务盘。
在一个实施例中,所述处理器实现所述基于预置哈希计算引擎计算所述五元组,获取所述数据报文的哈希值之后时,用于实现:
若检测到所述业务盘的数量发生变化,则生成第三映射表;
通过查询所述第三映射表,获取与所述哈希值匹配的目标业务盘;
确定所述目标业务盘为待转发业务盘。
在一个实施例中,所述处理器实现所述若检测到所述业务盘的数量发生变化,则生成第三映射表时,用于实现:
实时检测所述业务盘的数量;
若确定所述业务盘发生增减,则确定当前的有效业务盘;
获取所述有效业务盘的标识信息、所述有效业务盘的槽位信息和预置哈希值,生成第三映射表。
在一个实施例中,所述处理器实现所述通过交叉盘将接收到的数据报文广播至建立组播关系的多个业务盘之前时,用于实现:
预先将所述交叉盘与多个业务盘建立联系,以使建立联系的各个业务盘为所述交叉盘的组播成员;
所述业务盘的数量至少为2个,且所述业务盘至少处于2个不同的槽位。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机可读存储介质(或非暂时性介质)和通信介质(或暂时性介质)。
如本领域普通技术人员公知的,术语计算机可读存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机可读存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
示例性的,计算机可读存储介质可以是前述实施例的电子设备的内部存储单元,例如电子设备的硬盘或内存。计算机可读存储介质也可以是电子设备的外部存储设备,例如电子设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。
以上仅为本发明实施例的具体实施方式,但本发明实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明实施例的保护范围之内。因此,本发明实施例的保护范围应以权利要求的保护范围为准。