一种堆叠系统中组播报文的传输方法和装置及设备与流程

文档序号:33713295发布日期:2023-04-01 01:28阅读:61来源:国知局
一种堆叠系统中组播报文的传输方法和装置及设备与流程

1.本技术涉及交换机技术领域,特别涉及一种堆叠系统中组播报文的传输方法和装置及设备。


背景技术:

2.随着信息技术的飞速发展,网络规模急剧扩大,以前网络规划的交换机接口数量不足以满足网络应用需求,这时交换机堆叠技术就应运而生了。
3.堆叠技术不同于交换机的简单级联,因为级联的设备在逻辑上是相互独立的,而多台交换机堆叠在一起,从逻辑上来说,它们相当于同一设备。因此,堆叠技术能够增加交换机的端口密度,并且,一个堆叠系统只需要一个管理入口,通过堆叠增加端口之后,可以无需改变原有的网络拓扑结构和配置,进而能够实现交换机间的高效互联和统一管理,对于实际的网络维护和管理意义重大。
4.现有技术中,堆叠系统由具备独立功能的多台堆叠交换机(堆叠成员)组成,在堆叠系统中需要有一台交换机充当堆叠系统中控制者和管理者的角色,称为主设备。同时,为了保证堆叠系统的稳定性,最大限度的避免主设备故障对整个堆叠系统的影响,需要有一台备设备,对堆叠系统的运行数据和配置数据进行实时备份,并在主设备失效或缺失时自动切换成备设备,其余的多台设备为从设备,各设备之间通过堆叠链路连接。而主设备、备设备、从设备均可以根据相应的选举策略确定,并且在本地具有相应的标识。
5.组播作为一种常见的数据传输方式,目前在堆叠系统中被广泛应用,现有技术的组播网络中通常使用igmp-snooping(internet group management protocol snooping,互联网组管理监听协议),侦听组播协议报文,建立组播转发表项,然后在堆叠系统中,依据组播转发表项进行组播业务报文的转发,但是组播转发表项的建立通常受到硬件容量的限制,且由于堆叠系统中各设备的角色不同,各设备硬件并不一定支持rcpu(remote cpu,远端cpu),因此经常导致各设备间建立完全同步的组播转发表项较为复杂,甚至不可行,这些都成了制约组播业务在堆叠系统中应用所需要解决的问题。


技术实现要素:

6.本技术的目的是提供一种堆叠系统中组播报文的传输方法和装置及设备,用于解决现有各设备的硬件不一定支持rcpu,导致各设备间建立完全同步的组播转发表项较为复杂,制约组播业务在堆叠系统中应用的问题。
7.第一方面,本技术实施例提供了一种堆叠系统中组播报文的传输方法,应用于所述堆叠系统中的主设备,所述方法包括:
8.通知堆叠系统中其他设备设置第一访问控制列表acl表项或者rcpu检查的范围,所述第一acl表项用于指示所述其他设备收到组管理协议报告igmp报告报文后通过重定向发送到所述主设备的cpu端口;
9.通过主设备cpu接收支持rcpu且在所述rcpu检查范围内的其他设备,通过rcpu发
送的igmp报告报文;
10.通过主设备cpu接收不支持rcpu的其他从设备根据所述第一acl表项筛选出igmp报告报文后,通过重定向方式发送的igmp报告报文;
11.接收到igmp报告报文且确定本设备为主设备,将igmp报告报文发送至主设备cpu;
12.根据主设备cpu接收的igmp报告报文建立组播转发逻辑并同步更新,对接收的组播业务报文按照所述组播转发逻辑进行转发,所述组播转发逻辑包括组播转发表项、端口列表,所述组播转发表项包括组播组地址及组播vlan的关系,且针对一个组播组设置一个端口列表索引index,所述index用于索引接收该组播组地址所发送的组播业务报文的端口列表。
13.所述第一acl表项通过关键字段key匹配igmp报告报文,动作设置为重定向,重定向端口为主设备的cpu端口,及将igmp协议报文设定为最高优先级。
14.在一些可能的实施例中,根据主设备cpu接收的igmp报告报文建立组播转发逻辑并同步更新,包括:
15.根据本地是否存在所述igmp报告报文中的组播组对应的组播转发表项,标记所述组播组的组播转发表项的状态标记为更新update或新建new;
16.根据端口列表库中的端口列表及加入首先接收到igmp报告报文的端口后的端口列表,标记所述组播组的端口列表的index的状态为新建new或共用share;
17.将组播转发表项的状态为update和new的组播转发表项,端口列表的index的状态为new和share的端口列表发送给堆叠系统内的其他设备。
18.在一些可能的实施例中,根据本地是否存在所述igmp报告报文中的组播组对应的组播转发表项,标记所述组播组的组播转发表项的状态标记为更新update或新建new,包括:
19.根据所述igmp报告报文中的组播组地址对应的组播组,确定本地存在所述组播组的组播转发表项时,标记所述组播组的组播转发表项的状态为update;
20.确定本地不存在所述组播组的组播转发表项,创建新的组播转发表项,将所述新的组播转发表项的状态标记为new。
21.在,根据端口列表库中的端口列表及加入首先接收到igmp报告报文的端口后的端口列表,标记所述组播组的端口列表的index的状态为新建new或共用share,包括:
22.确定本地存在所述组播组的组播转发表项时,根据所述组播组的index索引的端口列表,判断首先接收到igmp报告报文的端口是否为所述组播组的新端口;
23.若为所述组播组的新端口,判断所述组播组的index索引的端口列表增加所述新端口后,所得到的第一新端口列表是否在端口列表库中;
24.若在所述端口列表库中,将所述第一新端口列表对应的index标记为share,并将所述组播组的index更新为所述第一新端口列表对应的index;
25.若不在所述端口列表库中,在所述组播组的index索引的端口列表中增加所述新端口得到第二新端口列表,为所述组播组申请新的index并标记为new,并建立新的index与所述第二新端口列表的对应关系。
26.在一些可能的实施例中,根据端口列表库中的端口列表及加入首先接收到igmp报告报文的端口后的端口列表,标记所述组播组的端口列表的index的状态为新建new或共用
share,包括:
27.确定本地不存在所述组播组的组播转发表项,为所述组播组申请新的index;
28.判断端口列表库中是否存在仅包括首先接收到igmp报告报文的端口的第三端口列表;
29.若存在,建立新的index与所述第三端口列表的对应关系,将所述新的index的状态标记为share;
30.否则,在端口列表库中增加新的端口列表,建立所述新的端口列表与新的index的对应关系,将所述新的index的状态标记为new。
31.在一些可能的实施例中,所述组播转发逻辑还包括扩展acl,所述扩展acl采用如下方式创建:
32.通过协议层接收转发层返回的组播转发表项更新失败原因;
33.若失败原因为组播转发表项已满时,通过协议层指示转发层创建一个扩展acl,所述扩展acl包括匹配组播组地址dmac+vlan关键字字段key,动作设置为重定向,重定向端口为组播组所对应的端口列表;
34.对接收的组播业务报文按照所述组播转发逻辑进行转发,包括:
35.根据扩展acl规则,根据其重定向的端口列表将接收的组播业务报文进行转发。
36.在一些可能的实施例中,端口列表库中的端口列表的参数包括成员个数及引用次数,所述引用次数用于标识该端口列表对应的组播组的数量。
37.在一些可能的实施例中,对接收的组播业务报文按照所述组播转发逻辑进行转发,包括:
38.根据组播业务报文中携带的组播组地址+vlan查找组播转发表项;
39.根据查找到的组播转发表项确认所对应的索引index,根据确认的index查找端口列表确定本设备是否存在本地端口;
40.如果是,将该组播业务报文按照本地组播转发表项进行本地转发;否则,将该组播业务报文经由堆叠口转发至下一级设备,并在堆叠头中携带index。
41.在一些可能的实施例中,该方法还包括:
42.主设备cpu收到igmp离开报文后,根据所述igmp离开报文携带的组播组地址确定是否存在对应的组播转发表项;
43.若存在对应的组播转发表项,根据组播转发表项对应的端口列表的成员个数及引用次数,采用不同的方式更新组播转发表项及端口列表;
44.若不存在对应的组播转发表项,确定对应的组播业务报文是基于扩展acl进行转发的,删除该扩展acl的端口列表中igmp离开报文的上报端口。
45.第二方面,本技术实施例提供了一种堆叠系统中组播报文的传输方法,所述方法包括:
46.根据主设备的通知设置第一访问控制列表acl表项或者rcpu检查的范围,所述第一acl表项用于指示所述其他设备收到组管理协议报告igmp报告报文后通过重定向发送到所述主设备的cpu端口。
47.确定支持rcpu且在所述rcpu检查范围内时,通过rcpu向所述主设备cpu发送igmp报告报文;
48.确定不支持rcpu时,根据所述第一acl表项选出igmp报告报文后,通过重定向方式向所述主设备cpu发送igmp报告报文;
49.根据主设备的通知更新组播转发逻辑,及对接收的组播业务报文按照所述组播转发逻辑进行转发,所述组播转发逻辑包括组播转发表项、端口列表,所述组播转发表项包括组播组地址及组播vlan的关系,且针对一个组播组设置一个端口列表索引index,所述index用于索引接收该组播组地址所发送的组播业务报文的端口列表。
50.在一些可能的实施例中,根据主设备的通知更新组播转发逻辑,包括:
51.接收主设备通知的组播转发表项的状态为update和new的组播转发表项,index的状态为new和share的端口列表;
52.对本地组播转发表项以及端口列表进行更新。
53.在一些可能的实施例中,对本地组播转发表项及端口列表进行更新,包括:
54.若通知的组播转发表项的状态为new、index的状态为new,则在本地创建一条组播转发表项,以及和当前索引index对应的端口列表;
55.若通知的组播转发表项的状态是new、index的状态为share,在本地创建一条组播转发表项,并建立所述index和端口列表的对应关系;
56.若通知的组播转发表项的状态是update,index的状态为share,利用通知的组播转发表项更新本地的组播转发表项,并重新更新该组播转发表项的当前索引index;以及当前索引index与对应的端口列表的对应关系;
57.若接收到的组播转发表项的状态是update,index的状态为new,利用通知的组播转发表项更新本地的组播转发表项,并建立和所述index对应的端口列表。
58.在一些可能的实施例中,所述组播转发逻辑还包括扩展acl,所述扩展acl采用如下方式创建:
59.通过协议层接收转发层返回的组播转发表项更新失败原因;
60.若失败原因为组播转发表项已满时,通过协议层指示转发层创建一个扩展acl,所述扩展acl包括匹配组播组地址dmac+vlan关键字字段key,动作设置为重定向,重定向端口为组播组所对应的端口列表;
61.对接收的组播业务报文按照所述组播转发逻辑进行转发,包括:
62.根据扩展acl规则,根据其重定向的端口列表将接收的组播业务报文进行转发。
63.第三方面,本技术另一实施例还提供了一种堆叠系统中组播报文的传输设备,该设备为所述堆叠系统中的主设备,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本技术实施例第一方面提供的任一堆叠系统中组播报文的传输方法。
64.第四方面,本技术另一实施例还提供了一种堆叠系统中组播报文的传输设备,该设备为所述堆叠系统中的从设备或备设备,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本技术实施例第二方面提供的任一堆叠系统中组播报文的传输方法。
65.第五方面,本技术另一实施例还提供了一种计算机存储介质,所述计算机存储介
质存储有计算机程序,所述计算机程序用于使计算机执行本技术实施例提供的任一堆叠系统中组播报文的传输方法。
66.本技术实施例可以完成组播业务报文在堆叠系统中的传输,整个传输过程中,由于堆叠系统中的各个设备上的组播转发逻辑完全一致并且同步更新,对不支持rcpu的设备也可以实现报文上报,通过建立的组播转发逻辑可以在堆叠系统中实现组播业务报文传输。
67.本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
68.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
69.图1为本技术实施例应用于主设备的堆叠系统中组播报文的传输方法流程示意图;
70.图2为本技术实施例的主设备进行组播转发逻辑建立的流程示意图;
71.图3为本技术实施例应用于堆叠系统中其他设备的堆叠系统中组播报文的传输方法流程示意图;
72.图4为本技术实施例中组播转发表项及端口列表的更新过程示意图;
73.图5为本技术实施例中组播业务报文转发流程示意图;
74.图6为本技术实施例中组播转发逻辑维护的流程示意图;
75.图7为本技术实施例中一种堆叠系统中组播报文的传输装置结构示意图;
76.图8为本技术实施例中另一种堆叠系统中组播报文的传输装置结构示意图;
77.图9为本技术实施例中堆叠系统中组播报文的传输设备结构示意图。
具体实施方式
78.下面将结合附图对本技术实施例中的技术方案进行清楚、详尽地描述。在本技术实施例的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,另外,在本技术实施例的描述中,“多个”是指两个或多于两个。
79.在本技术实施例的描述中,除非另有说明,术语“多个”是指两个或两个以上,其它量词与之类似应当理解,此处所描述的优选实施例仅用于说明和解释本技术,并不用于限定本技术,并且在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。
80.为进一步说明本技术实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本技术实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上
不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本技术实施例提供的执行顺序。方法在实际的处理过程中或者控制设备执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。
81.鉴于相关技术中各设备的硬件不一定支持rcpu,导致各设备间建立完全同步的组播转发表项较为复杂,制约组播业务在堆叠系统中应用的问题。本技术提出一种堆叠系统中组播报文的传输方法和装置及设备。
82.下面结合附图对本技术实施例中的堆叠系统中组播报文的传输方法和装置及设备进行详细说明。
83.参见图1,为根据本技术一个实施例的堆叠系统中组播报文的传输方法,应用于所述堆叠系统中的主设备,所述方法包括:
84.步骤101,通知堆叠系统中其他设备设置第一acl(access control list,访问控制列表)表项或者rcpu检查的范围,所述第一acl表项用于指示所述其他设备收到组管理协议报告igmp(internet group management protocol,internet组管理协议)报告报文后通过重定向发送到所述主设备的cpu端口;
85.上述rcpu检查的范围为预先设定的范围。
86.igmp report报文为接收到该报文的设备的下连终端所发起的连接请求报文,用于表明该终端申请加入到某个组播组中;所述的组播组地址通过其中的组播组地址group address字段携带,通常为组播源的目的媒体接入控制mac(组播dmmac)。
87.步骤102,通过主设备cpu接收支持rcpu且在所述rcpu检查范围内的其他设备,通过rcpu发送的igmp报告报文;
88.主播设备的cpu接收支持rcpu且在所述rcpu检查范围内的其他设备,通过硬件rcpu发送的igmp报告报文。
89.支持rcpu指的是:在接收到协议报文时可以通过硬件转发表将该报文向主设备cpu进行转发。
90.步骤103,通过主设备cpu接收不支持rcpu的其他从设备根据所述第一acl表项筛选出igmp报告报文后,通过重定向方式发送的igmp报告报文;
91.可选地,所述第一acl表项通过关键字段key匹配igmp报告报文,动作设置为重定向,重定向端口为主设备的cpu端口,及将igmp协议报文设定为最高优先级。
92.步骤104,接收到igmp报告报文且确定本设备为主设备,将igmp报告报文发送至主设备cpu;
93.上述步骤102、步骤103和步骤104无先后执行顺序限定。
94.堆叠系统中的各设备根据本身标识可以确定自身在堆叠系统中的当前角色是否为主设备。
95.步骤105,根据主设备cpu接收的igmp报告报文建立组播转发逻辑并同步更新,对接收的组播业务报文按照所述组播转发逻辑进行转发,所述组播转发逻辑包括组播转发表项、端口列表,所述组播转发表项包括组播组地址及组播vlan的关系,且针对一个组播组设置一个端口列表索引index,所述index用于索引接收该组播组地址所发送的组播业务报文的端口列表。
96.基于以上设置,为了使得组播业务报文可以在堆叠系统中进行传输,还需要在堆
叠系统中各设备内维护组播转发逻辑,上述组播转发逻辑包括:组播转发表项、端口列表。
97.上述组播转发表项至少包括:组播组地址和组播vlan的对应关系;且针对一个组播组(组播组地址+组播vlan)设定一个当前索引index;索引index的值为软件按照策略生成;一个索引index对应一个用于接收该组播地址所发送的组播业务报文的端口列表,即:一个组播组对应一个端口列表,但一个端口列表可以同时对应多个组播组。
98.可选地,根据主设备cpu接收的igmp报告报文建立组播转发逻辑,包括:
99.根据本地是否存在所述igmp报告报文中的组播组对应的组播转发表项,标记所述组播组的组播转发表项的状态标记为更新update或新建new;
100.根据端口列表库中的端口列表及加入首先接收到igmp报告报文的端口后的端口列表,标记所述组播组的端口列表的index的状态为新建new或共用share;
101.将组播转发表项的状态为update和new的组播转发表项,端口列表的index的状态为new和share的端口列表发送给堆叠系统内的其他设备。
102.下面结合附图给出具体的根据本设备cpu接收的igmp报告报文建立组播转发逻辑的具体过程,如图2所示,包括:
103.步骤200,主设备cpu获取igmp report报文;
104.步骤201,判断本地是否存在对应的组播转发表项;
105.判断本地是否存在通过当前igmp report报文申请加入的组播组对应的组播转发表项,如果是,表明该组播组之前已存在,标记该组播转发表项的状态为update,执行步骤202,否则,执行步骤206;
106.在本步骤中,判断本地是否存在通过当前igmp report报文申请加入的组播组对应的组播转发表项具体为:根据igmp report报文中所携带的组播组地址确定是否存在对应的组播转发表项。
107.可选地,端口列表库中的端口列表的参数包括成员个数及引用次数,所述引用次数用于标识该端口列表对应的组播组的数量,即该端口列表与多少个组播转发表项对应;所述端口列表中的成员可能包括位于相同或和不同设备上的若干个端口。
108.步骤202,根据所述组播组的index索引的端口列表,判断首先接收到igmp report报文的端口是否为组播组的新端口,如果是,执行步骤203,否则,不做任何处理;其中所述首先接收到igmp report报文的端口指的是:igmp report报文对于堆叠系统中设备的上报端口,也就是整个堆叠系统中第一次接收到igmp report报文的端口。
109.在本步骤中,如果首先接收到igmp report报文的端口并未在与igmp report报文所表征的申请加入的组播组对应的端口列表中,则认为该端口为组播组的新端口。
110.步骤203,判断将所述组播组的index索引的端口列表增加所述新端口后,所得到的第一新端口列表是否在本地所存储的所有端口列表库中,即判断将该新端口增加到在该igmp report报文所表征的申请加入的组播组对应的当前索引index所对应的端口列表后,该新端口列表是否在本地所存储的所有端口列表库中,如果是,执行步骤204,否则执行步骤205;
111.步骤204,该新端口列表是否在本地所存储的所有端口列表库中,表明存在可共用端口资源,根据第一新端口列表确定对应的索引index作为可共用索引index,将可共用索引index状态标记为share,并将所述组播组的index更新为所述第一新端口列表对应的
index;同时将该端口列表的引用次数加1,执行步骤208。
112.在此步骤中,由于一个端口下连终端可以同时加入多个组播组,因此一个端口可以存在于多个不同的端口列表中,而本地存储的所有端口列表库可以包括对应所有组播组的索引index所对应的多个端口列表,因此如果新生成的端口列表在已有的端口列表库中,表明其也被其他组播组引用,此时认为存在可共享端口资源;不需要再生成新的端口列表,只需要直接关联原来已经存在的相应端口列表,并将该端口列表的引用次数加1即可;
113.在此步骤中,如果增加端口前的端口列表引用次数为1,则可以通过协议层释放该端口列表所占用的内存资源;
114.步骤205,在所述组播组的index索引的端口列表中增加所述新端口得到第二新端口列表,然后为所述组播组申请新的索引index并标记为new,并建立新的index与所述第二新端口列表的对应关系;记录该新的端口列表成员数加1,且将该新的端口列表的引用次数设为1;
115.在本步骤中,申请新的index按照预设置规则确定,例如,逐一增加等。第二新端口列表成员包括:与组播转发表项已经建立对应的端口列表成员+首先接收到igmp report报文的端口的新端口;
116.如果增加端口前的端口列表引用次数为1,则可以在新索引index与本地存储的新端口列表建立对应关系后,通过协议层释放该端口列表所占用的内存资源;以及索引index资源。
117.步骤206,创建新的组播转发表项,将该组播转发表项的状态标记为new,并为该组播转发表项设定新的索引index;
118.步骤207,判断是否在本地端口列表库中存在仅包括首先接收igmp report报文的端口的第三端口列表,如果是,建立新的index与所述第三端口列表的对应关系,将所述新的index的状态标记为share,将端口列表的引用次数加1;否则,在本地端口列表库中增加新的端口列表,建立所述新的端口列表与新的index的对应关系,将所述新的index的状态标记为new,所述新的端口列表包括:首先接收igmp report报文的端口,且将该端口列表与新申请的索引index建立对应关系,将该索引index状态标记为new;记录该新的端口列表成员数为:1,且将该新的端口列表的引用次数设为1;
119.步骤208,主设备将当前所更新的组播转发表项以及端口列表发送给堆叠系统内的其它设备;
120.在本步骤中,组播转发表项以及端口列表的发送方式可以采用现有技术中堆叠系统中数据传输方法来实现,本技术并不具体限定。
121.在本步骤中,当前所更新的组播转发表项包括:组播转发表项的状态为update和new的所有组播转发表项,当前所更新的端口列表包括:状态为new和share的所有索引index所对应的端口列表;
122.本技术实施例还提供一种堆叠系统中组播报文的传输方法,该方法应用与堆叠系统中的备设备或从设备,如图3所示,所述方法包括:
123.步骤301,根据主设备的通知设置第一访问控制列表acl表项或者rcpu检查的范围,所述第一acl表项用于指示所述其他设备收到组管理协议报告igmp报告报文后通过重定向发送到所述主设备的cpu端口。
124.步骤302,确定是否支持rcpu,若是,执行步骤303,否则执行步骤304;
125.步骤303,确定支持rcpu且在所述rcpu检查范围内时,通过rcpu向所述主设备发送igmp报告报文;
126.步骤304,确定不支持rcpu时,根据所述第一acl表项选出igmp报告报文后,通过重定向方式向所述主设备发送igmp报告报文;
127.从设备判断本设备支持rcpu时,设定igmp协议报文上送的dsa tag(级联标签)中携带的上交原因是否存在于rcpu检查的范围内,以便于将系统内非主设备收到的igmp协议报文通过硬件rcpu上交至主设备cpu;否则,在本地设置第一acl表项。将所述igmp report报文匹配第一acl表项后,通过重定向发送至主设备cpu。
128.所述第一acl表项通过关键字段key匹配igmp报告报文,动作设置为重定向,重定向端口为主设备的cpu端口,及将igmp协议报文设定为最高优先级。
129.步骤305,根据主设备的通知更新组播转发逻辑,及对接收的组播业务报文按照所述组播转发逻辑进行转发,所述组播转发逻辑包括组播转发表项、端口列表,所述组播转发表项包括组播组地址及组播vlan的关系,且针对一个组播组设置一个端口列表索引index,所述index用于索引接收该组播组地址所发送的组播业务报文的端口列表。
130.需要说明的是,从设备或者备设备无论是通过rcpu还是acl重定向向主设备cpu端口发送igmp report报文,都需要通过本地保存的堆叠拓扑路径查找指向主设备cpu的堆叠端口,按照现有技术对该igmp报文封装堆叠头,所述的堆叠头中包括:首先接收到该igmp报文的端口信息;然后向主设备逐跳转发。
131.上述组播转发逻辑参见主设备实施例部分的描述,这里不再详述。
132.可选地,根据主设备的通知更新组播转发逻辑,包括:
133.接收主设备通知的组播转发表项的状态为update和new的组播转发表项,index的状态为new和share的端口列表;
134.对本地组播转发表项以及端口列表进行更新。
135.本实施例接收到组播转发表项以及端口列表的设备根据接收到的组播转发表项的状态以及组播转发表项中索引index的状态对本地组播转发表项以及端口列表进行更新。
136.在本步骤中,如果接收到的组播转发表项的状态是new,索引index的状态为new,在本地之前不存在该组播转发表项也不存在对应的端口列表,则在本地创建一条组播转发表项,以及和当前索引index对应的端口列表;
137.在本步骤中,如果接收到的组播转发表项的状态是new,索引index的状态为share,表明在本地之前不存在该组播转发表项但端口列表已经存在;因此在本地创建一条组播转发表项,并且将当前索引index和对应的端口列表建立对应关系;
138.在本步骤中,如果接收到的组播转发表项的状态是update,索引index的状态为share,表明本地之前已存该组播转发表项,且端口列表已经存在;因此在本地以接收到的组播转发表项更新本地的组播转发表项,并重新更新该组播转发表项的当前索引index;以及当前索引index与对应的端口列表的对应关系;
139.在本步骤中,如果接收到的组播表项的状态是update,当前索引index的状态为new,表明本地之前已存该组播转发表项,但需要生成新的端口列表;因此,在本地以接收到
的组播转发表项更新本地的组播转发表项,并建立和当前索引index对应的端口列表。
140.在本步骤中,根据端口列表中携带的端口信息在本地创建端口列表时,可以判断端口列表中的端口是否为本设备的本地端口,如果是,则加入本地端口列表,否则当判断本设备为从设备时不处理;而为备设备时,也加入本地端口列表,以实时进行备份;由此对于从设备而言,上层协议层无需单独关注转发端口是否为本地,减少了上层协议层的工作;
141.在本步骤中,对于组播转发表项的操作均由转发层完成。
142.可选地,对于堆叠系统中的主设备或其他设备,所述组播转发逻辑还包括扩展acl,所述扩展acl采用如下方式创建:
143.通过协议层接收转发层返回的组播转发表项更新失败原因;
144.若失败原因为组播转发表项已满时,通过协议层指示转发层创建一个扩展acl,所述扩展acl包括匹配组播组地址dmac+vlan关键字字段key,动作设置为重定向,重定向端口为组播组所对应的端口列表;
145.对接收的组播业务报文按照所述组播转发逻辑进行转发,包括:
146.根据扩展acl规则,根据其重定向的端口列表将接收的组播业务报文进行转发。
147.具体地,如图4所示,主设备将当前所更新的组播转发表项以及端口列表发送给堆叠系统内的其它设备之后,还包括:
148.步骤400,接收到组播转发表以及端口列表的设备根据组播转发表中索引index的状态对组播转发表项以及端口列表进行更新;
149.步骤401,对于堆叠系统中主设备或其他设备,判断堆叠系统中各设备是否均更新成功,如果是,执行步骤402,否则,执行步骤403;
150.在本步骤中,各设备首先判断本地是否更新成功组播转发表项,并将更新结果通知堆叠系统中其他设备,每个设备在获知本地是否更新成功以及获得其它设备关于是否更新成功的通知后,即可获知堆叠系统中各设备是否均更新成功。
151.在本步骤中,如果组播转发表项的条目数达到硬件容量最大值,继续增加组播转发表项将导致组播转发表项更新失败,此时向其余设备通知组播表项更新失败,也就是说,在整个堆叠系统中如果有任意一个设备组播转发表项更新失败,则认为所有设备的此次组播表项更新均失败;
152.步骤402,各设备将组播转发表项更新结果通知协议层,则协议层将记录该组播组信息,包括:组播组地址、vlan、当前索引index以及标记索引index引用的次数,但不记录索引index的状态标识。
153.在本步骤中,各设备在本地组播表项更新成功后将通知其他设备,具体方式不做限定。
154.步骤403,各设备进入组播表项处理流程。
155.具体的,组播表项处理流程包括:如果更新失败的组播转发表项的索引index状态为new,则释放该新申请的索引index;如果索引index状态标记为share,则将端口引用次数减1。
156.进一步的,在本步骤中,协议层可以根据转发层返回的错误信息判断失败原因执行不同的处理,典型的,转发层返回的错误信息可以根据组播转发表项建立失败的错误值来指示,当返回的错误值指示当前组播转发表项已满时,协议层指示转发层创建一个扩展
acl规则:关键字字段key匹配组播租地址dmac+vlan,动作设置为重定向,其重定向端口为该组播组所对应的端口列表,并标记该组播组的扩充方式为acl;当返回的错误值指示为其他原因时,由协议层通知用户,本技术不涉及具体实现过程。
157.由此,通过上述步骤可以在堆叠系统中各设备上通过组播转发表、端口列表和扩展acl规则设置相同的组播报文转发逻辑。
158.如图5所示,当堆叠系统中的主设备或其他设备接收到组播业务报文时,对该组播业务报文的转发过程如下:
159.步骤501,根据组播业务报文中携带的组播组地址+vlan查找组播转发表项,查找组播转发表项,如果查找到对应的表项,则执行步骤502;否则,执行步骤506;
160.步骤502,根据查找到的组播转发表项确认所对应的索引index;
161.步骤503,根据确认的索引index查找端口列表确定其是否存在本地端口,如果是,执行步骤505,否则,执行步骤504;
162.步骤504,将该组播业务报文经由堆叠口转发至下一级设备,然后在下一设备继续执行步骤502和步骤503;
163.本步骤中,在堆叠口转发组播业务报文时,在堆叠头中携带出端口对应的索引index,以使得下一级设备接收到该组播业务报文时可以直接查找端口列表,而无需再次根据组播组地址+vlan查找组播转发表项;
164.步骤505,将该组播业务报文按照本地转发表进行本地转发;
165.步骤506,根据扩展acl规则,根据其重定向的端口列表将该组播业务报文进行转发。
166.此处特别说明一点,当接收到组播业务报文时根据组播转发表和扩展acl规则均无法实现转发时,按照现有技术处理,本技术不涉及。
167.基于以上步骤,可以完成组播业务报文在堆叠系统中的传输,整个传输过程中,由于堆叠系统中的各个设备上的组播转发逻辑完全一致并且同步更新,而无需区分系统角色,对于组播业务报文而言,只需要在第一台接受设备进行组播转发表项的查询,在存在组播转发表项时后续的设备间转发均不需要进行组播转发表项的查询而只是根据索引index确定出端口进行转发,而由于硬件容量问题导致组播转发表项不存在时通过扩展acl规则进行设备间的报文转发,使得整个过程实现简单且稳定可靠。
168.进一步的,在本技术的实施例中,对于组播转发逻辑还进行维护,如图6所示,还可以包括:
169.步骤601,在接收到igmp leave(internet group management protocol leave,internet组管理协议离开)报文时,判断本设备是否为主设备,如果是,将该报文直接发送至主设备cpu,然后执行步骤605,否则,执行步骤602;
170.在本步骤中,igmp leave报文为接收到该报文的设备的下连终端所发起的离开请求报文,用于表明该终端申请退出某个组播组中;所述的组播组地址通过其中的group address字段携带,通常为组播源的目的mac(组播dmmac);
171.所述的设备根据本身标识可以确定自身在堆叠系统中的当前角色是否为主设备;
172.步骤602,判断本设备是否支持rcpu,如果是,执行步骤604,如果否,执行步骤603;
173.步骤603,将所述igmp leave报文匹配第一acl表项后,通过重定向发送至主设备
cpu;
174.步骤604,将所述igmp leave报文通过rcpu发送到主设备cpu;
175.步骤605,主设备cpu获取所述igmp leave报文后,确定其中携带的组播组地址是否存在对应的组播转发表项,如果是,执行步骤606b,否则,表明之前的组播业务报文是基于扩展acl规则进行转发,执行步骤606a;
176.步骤606a,删除该扩展acl规则的端口列表中igmp leave报文的上报端口。
177.步骤606b,获取组播转发表项当前索引index所对应的端口列表中成员个数和引用次数,采用不同的方式更新组播转发表项及端口列表;具体的:
178.当该端口列表的成员个数为1且引用次数为1时,表明该端口列表中的成员端口仅被该组播转发表项对应的组播组引用,通知堆叠系统中所有设备的转发层直接删除该条组播转发表项以及该组播转发表项对应的索引index;
179.当该端口列表的成员个数为1且引用次数大于1,则表明该端口列表中的成员端口还存在其他组播组在引用,端口列表引用次数减1,并通知堆叠系统中所有设备的转发层仅删除该条组播转发表项;
180.当该端口列表的成员个数大于1,则表明该端口列表中的还存在成员端口被当前组播组或者其他组播组在引用,删除该端口列表中所确定的成员端口(接收所述igmp leave报文的设备端口),生成新的端口列表,并判断本地所有端口列表库中是否存在相同的端口列表,如果是,则将该组播转发表项的当前索引index更新为本地存在的该端口列表所对应的索引index;并将该端口列表引用次数加1,否则,针对该组播转发表项生成新的当前索引index,建立当前索引index和删除成员端口后的端口列表的对应关系,将当前组播转发表项的状态标识为update,当前索引index的状态标识为new;
181.在上述在步骤中,通知堆叠系统中所有设备的转发层直接删除该条组播转发表项可以由本领域普通技术人员按照现有技术实现,此处不赘述,只要各设备能识别出需要删除的组播转发表项及端口列表的信息即可,此处不赘述。
182.步骤607,主设备将当前所更新的组播转发表项以及端口列表发送给堆叠系统内的其它设备。
183.在组播转发表项以及端口列表的发送方式可以采用现有技术中堆叠系统中数据传输方法来实现,本技术并不具体限定。
184.在本步骤中,当前所更新的组播转发表项包括:组播转发表项的状态为update的所有组播转发表项,当前所更新的端口列表包括:状态为new和share的所有索引index所对应的端口列表;
185.步骤608,接收到组播转发表项以及端口列表的设备根据接收到的组播转发表项的状态以及组播转发表项中索引index的状态对本地组播转发表项以及端口列表进行更新。
186.在本步骤中,如果接收到的组播转发表项的状态是update,索引index的状态为share,在本地以接收到的组播转发表项更新本地的组播转发表项,并重新更新该组播转发表项的当前索引index;以及当前索引index与对应的端口列表的对应关系;
187.在本步骤中,如果接收到的组播表项的状态是update,当前索引index的状态为new,在本地以接收到的组播转发表项更新本地的组播转发表项,并建立和当前索引index
对应的端口列表。
188.在本步骤中,根据端口列表中携带的端口信息在本地创建端口列表时,可以判断端口列表中的端口是否为本设备的本地端口,如果是,则加入本地端口列表,否则当判断本设备为从设备时不处理;而为备设备时,也加入本地端口列表,以实时进行备份;由此对于从设备而言,上层协议层无需单独关注转发端口是否为本地,减少了上层协议层的工作;
189.在本步骤中,对于组播转发表项的操作均由转发层完成。
190.步骤609,各设备接收到主设备下发的通知堆叠系统中所有设备的转发层直接删除该条组播转发表项或者组播转发表项对应的索引index,按照通知在本地转发层进行删除操作,且在转发层完成删除后,协议层释放对应资源。
191.此处说明一点:上述步骤608和步骤609并不具有先后顺序,此处只是为了便于说明做先后处理。
192.基于相同的发明构思,本技术还提供一种堆叠系统中组播报文的传输装置700,如图7所示,该装置包括:
193.通知设置模块701,用于通知堆叠系统中其他设备设置第一访问控制列表acl表项或者rcpu检查的范围,所述第一acl表项用于指示所述其他设备收到组管理协议报告igmp报告报文后通过重定向发送到所述主设备的cpu端口;
194.第一接收模块702,用于通过主设备cpu接收支持rcpu且在所述rcpu检查范围内的其他设备,通过rcpu发送的igmp报告报文;
195.第二接收模块703,用于通过主设备cpu接收不支持rcpu的其他从设备根据所述第一acl表项筛选出igmp报告报文后,通过重定向方式发送的igmp报告报文;
196.第三接收模块704,用于接收到igmp报告报文且确定本设备为主设备,将igmp报告报文发送至主设备cpu;
197.更新转发模块705,用于根据主设备cpu接收的igmp报告报文建立组播转发逻辑并同步更新,对接收的组播业务报文按照所述组播转发逻辑进行转发,所述组播转发逻辑包括组播转发表项、端口列表,所述组播转发表项包括组播组地址及组播vlan的关系,且针对一个组播组设置一个端口列表索引index,所述index用于索引接收该组播组地址所发送的组播业务报文的端口列表。
198.所述第一acl表项通过关键字段key匹配igmp报告报文,动作设置为重定向,重定向端口为主设备的cpu端口,及将igmp协议报文设定为最高优先级。
199.可选地,更新转发模块根据主设备cpu接收的igmp报告报文建立组播转发逻辑并同步更新,包括:
200.根据本地是否存在所述igmp报告报文中的组播组对应的组播转发表项,标记所述组播组的组播转发表项的状态标记为更新update或新建new;
201.根据端口列表库中的端口列表及加入首先接收到igmp报告报文的端口后的端口列表,标记所述组播组的端口列表的index的状态为新建new或共用share;
202.将组播转发表项的状态为update和new的组播转发表项,端口列表的index的状态为new和share的端口列表发送给堆叠系统内的其他设备。
203.可选地,更新转发模块根据本地是否存在所述igmp报告报文中的组播组对应的组播转发表项,标记所述组播组的组播转发表项的状态标记为更新update或新建new,包括:
204.根据所述igmp报告报文中的组播组地址对应的组播组,确定本地存在所述组播组的组播转发表项时,标记所述组播组的组播转发表项的状态为update;
205.确定本地不存在所述组播组的组播转发表项,创建新的组播转发表项,将所述新的组播转发表项的状态标记为new。
206.可选地,更新转发模块根据端口列表库中的端口列表及加入首先接收到igmp报告报文的端口后的端口列表,标记所述组播组的端口列表的index的状态为新建new或共用share,包括:
207.确定本地存在所述组播组的组播转发表项时,根据所述组播组的index索引的端口列表,判断首先接收到igmp报告报文的端口是否为所述组播组的新端口;
208.若为所述组播组的新端口,判断所述组播组的index索引的端口列表增加所述新端口后,所得到的第一新端口列表是否在端口列表库中;
209.若在所述端口列表库中,将所述第一新端口列表对应的index标记为share,并将所述组播组的index更新为所述第一新端口列表对应的index;
210.若不在所述端口列表库中,在所述组播组的index索引的端口列表中增加所述新端口得到第二新端口列表,为所述组播组申请新的index并标记为new,并建立新的index与所述第二新端口列表的对应关系。
211.可选地,更新转发模块根据端口列表库中的端口列表及加入首先接收到igmp报告报文的端口后的端口列表,标记所述组播组的端口列表的index的状态为新建new或共用share,包括:
212.确定本地不存在所述组播组的组播转发表项,为所述组播组申请新的index;
213.判断端口列表库中是否存在仅包括首先接收到igmp报告报文的端口的第三端口列表;
214.若存在,建立新的index与所述第三端口列表的对应关系,将所述新的index的状态标记为share;
215.否则,在端口列表库中增加新的端口列表,建立所述新的端口列表与新的index的对应关系,将所述新的index的状态标记为new。
216.可选地,所述组播转发逻辑还包括扩展acl,所述扩展acl采用如下方式创建:
217.通过协议层接收转发层返回的组播转发表项更新失败原因;
218.若失败原因为组播转发表项已满时,通过协议层指示转发层创建一个扩展acl,所述扩展acl包括匹配组播组地址dmac+vlan关键字字段key,动作设置为重定向,重定向端口为组播组所对应的端口列表;
219.对接收的组播业务报文按照所述组播转发逻辑进行转发,包括:
220.根据扩展acl规则,根据其重定向的端口列表将接收的组播业务报文进行转发。
221.可选地,端口列表库中的端口列表的参数包括成员个数及引用次数,所述引用次数用于标识该端口列表对应的组播组的数量。
222.可选地,更新转发模块对接收的组播业务报文按照所述组播转发逻辑进行转发,包括:
223.根据组播业务报文中携带的组播组地址+vlan查找组播转发表项;
224.根据查找到的组播转发表项确认所对应的索引index,根据确认的index查找端口
列表确定本设备是否存在本地端口;
225.如果是,将该组播业务报文按照本地组播转发表项进行本地转发;否则,将该组播业务报文经由堆叠口转发至下一级设备,并在堆叠头中携带index。
226.可选地,更新转发模块还用于:
227.通过主设备cpu收到igmp离开报文后,根据所述igmp离开报文携带的组播组地址确定是否存在对应的组播转发表项;
228.若存在对应的组播转发表项,根据组播转发表项对应的端口列表的成员个数及引用次数,采用不同的方式更新组播转发表项及端口列表;
229.若不存在对应的组播转发表项,确定对应的组播业务报文是基于扩展acl进行转发的,删除该扩展acl的端口列表中igmp离开报文的上报端口。
230.利用本技术实施例提供的上述技术方案,具有以下技术效果:
231.本技术基于包括组播转发表项、端口列表和扩展acl规则的组播转发逻辑,堆叠系统中组播业务报文的传输稳定可靠;
232.在堆叠系统中,将进入到从设备的组播协议报文直接由acl或者rcpu送至主设备cpu,同时给组播协议报文设定为高优先级,能够保障在大量请求报文或者其他协议一起运行时,也能够快速学到组播转发表项;
233.本技术同时实现了在堆叠系统中组播转发表项因为资源所限制的创建失败的容错处理,使用acl对部分超过芯片资源的组播表项进行了扩容,保障了业务对组播容量的需求;
234.本技术实现了在协议层只需要在主设备cpu,备设备cpu保存一份完整的端口列表,无需根据不同设备来区分保存对应的转发列表的方法,大大降低了协议层的内存使用。
235.本技术实现了在组播表项用户列表更新的时候为了防止已存在的用户的业务情况,需要先创建列表再更新表项的方法。
236.本技术实施例还提供一种堆叠系统中组播报文的传输装置,如图8所示,包括:
237.通知设置模块801,用于根据主设备的通知设置第一访问控制列表acl表项或者rcpu检查的范围,所述第一acl表项用于指示所述其他设备收到组管理协议报告igmp报告报文后通过重定向发送到所述主设备的cpu端口。
238.第一发送模块802,用于确定支持rcpu且在所述rcpu检查范围内时,通过rcpu向所述主设备cpu发送igmp报告报文;
239.第二发送模块803,用于确定不支持rcpu时,根据所述第一acl表项选出igmp报告报文后,通过重定向方式向所述主设备cpu发送igmp报告报文;
240.更新转发模块804,用于根据主设备的通知更新组播转发逻辑,及对接收的组播业务报文按照所述组播转发逻辑进行转发,所述组播转发逻辑包括组播转发表项、端口列表,所述组播转发表项包括组播组地址及组播vlan的关系,且针对一个组播组设置一个端口列表索引index,所述index用于索引接收该组播组地址所发送的组播业务报文的端口列表。
241.可选地,更新转发模块根据主设备的通知更新组播转发逻辑,包括:
242.接收主设备通知的组播转发表项的状态为update和new的组播转发表项,index的状态为new和share的端口列表;
243.对本地组播转发表项以及端口列表进行更新。
244.可选地,更新转发模块对本地组播转发表项及端口列表进行更新,包括:
245.若通知的组播转发表项的状态为new、index的状态为new,则在本地创建一条组播转发表项,以及和当前索引index对应的端口列表;
246.若通知的组播转发表项的状态是new、index的状态为share,在本地创建一条组播转发表项,并建立所述index和端口列表的对应关系;
247.若通知的组播转发表项的状态是update,index的状态为share,利用通知的组播转发表项更新本地的组播转发表项,并重新更新该组播转发表项的当前索引index;以及当前索引index与对应的端口列表的对应关系;
248.若接收到的组播转发表项的状态是update,index的状态为new,利用通知的组播转发表项更新本地的组播转发表项,并建立和所述index对应的端口列表。
249.可选地,所述组播转发逻辑还包括扩展acl,所述扩展acl采用如下方式创建:
250.通过协议层接收转发层返回的组播转发表项更新失败原因;
251.若失败原因为组播转发表项已满时,通过协议层指示转发层创建一个扩展acl,所述扩展acl包括匹配组播组地址dmac+vlan关键字字段key,动作设置为重定向,重定向端口为组播组所对应的端口列表;
252.对接收的组播业务报文按照所述组播转发逻辑进行转发,包括:
253.根据扩展acl规则,根据其重定向的端口列表将接收的组播业务报文进行转发。
254.本技术实施例还提供堆叠系统中组播报文的传输设备,如图9所示,包括至少一个处理器902;以及与所述至少一个处理器通信连接的存储器901;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述实施例中主设备执行的堆叠系统中组播报文的传输方法,或者执行上述实施例中主设备以外其他设备执行的堆叠系统中组播报文的传输方法。
255.存储器901用于存储程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。存储器901可以为易失性存储器(volatile memory),例如随机存取存储器(random-access memory,简称ram);也可以为非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,简称hdd)或固态硬盘(solid-state drive,简称ssd);还可以为上述任一种或任多种易失性存储器和非易失性存储器的组合。
256.处理器902可以是中央处理器(central processing unit,简称cpu),网络处理器(network processor,简称np)或者cpu和np的组合。还可以是硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,简称asic),可编程逻辑器件(programmable logic device,简称pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,简称cpld),现场可编程逻辑门阵列(field-programmable gate array,简称fpga),通用阵列逻辑(generic array logic,简称gal)或其任意组合。
257.基于相同的发明构思,本实施例还提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行上述产业用地评价的方法。
258.上述存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
259.本公开实施例还提供一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行实现本公开实施例上述任意一项堆叠系统中组播报文的传输方法。
260.以上对本技术所提供的技术方案进行了详细介绍,本技术中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
261.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1