首页> 中国专利> 防止堆叠系统产生环路的方法和堆叠系统中的成员设备

防止堆叠系统产生环路的方法和堆叠系统中的成员设备

摘要

本发明公开了一种防止堆叠系统产生环路的方法和一种堆叠系统中的成员设备,所述方法包括:堆叠系统中的成员设备通过堆叠口接收报文;判断所接收报文是否为已知单播报文;如果是,则对所接收报文进行转发处理;否则,对所接收报文进行环路检查,如果检测到产生环路,则丢弃所接收报文,如果未检测到产生环路,则对所接收报文进行转发处理。使用本发明能够避免经重定向处理的报文在接受环路检查时被错误丢弃,且不影响环路检查效果。

著录项

  • 公开/公告号CN101594304A

    专利类型发明专利

  • 公开/公告日2009-12-02

    原文格式PDF

  • 申请/专利权人 杭州华三通信技术有限公司;

    申请/专利号CN200910088485.3

  • 发明设计人 王明辉;张世林;程荣;

    申请日2009-07-02

  • 分类号H04L12/56(20060101);H04L12/26(20060101);

  • 代理机构11018 北京德琦知识产权代理有限公司;

  • 代理人王一斌;王琦

  • 地址 310053 浙江省杭州市高新技术产业开发区之江科技工业园六和路310号华为杭州生产基地

  • 入库时间 2023-12-17 23:10:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-05-03

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L12/56 变更前: 变更后: 申请日:20090702

    专利权人的姓名或者名称、地址的变更

  • 2012-02-08

    授权

    授权

  • 2010-03-10

    实质审查的生效

    实质审查的生效

  • 2009-12-02

    公开

    公开

说明书

技术领域

本发明涉及数据通信网络领域中的堆叠技术,具体涉及一种防止堆叠系统产生环路的方法和一种堆叠系统中的成员设备。

背景技术

随着网络规模的急剧增加,堆叠技术应运而生。堆叠技术是指将两台或多台网络设备通过堆叠口连接起来,组成堆叠系统。从逻辑上来说,堆叠在一起的网络设备相当于同一设备,用户管理堆叠系统就像管理一台设备。

图1为现有技术中一种4台设备堆叠的堆叠系统结构示意图。如图1所示,堆叠系统包括多个通过堆叠电缆连接在一起的多台网络设备,这些网络设备称为成员设备。每个成员设备最多设置两个堆叠口,分别称为堆叠口1和堆叠口2。每一个堆叠口由多个成员端口聚合而成。对于相邻的两台设备A和B,A的堆叠口1和B的堆叠口2相连。

在堆叠系统中,当堆叠系统的拓扑发生变化时,每个成员设备根据当前拓扑的连接情况,计算本设备到其它成员设备之间的最短路径,从而获得从本设备到其它成员设备的报文从本设备的哪个堆叠口转发出去。然后,根据计算得到的最短路径生成转发路径表。

以图1中的拓扑连接情况为例,假设设备1计算本设备到其它成员设备之间的最短路径具体为:设备1到设备2之间的最短路径为路径12,那么报文从设备1到设备2走堆叠口1;设备1到设备3之间的最短路径为路径12加路径23,那么报文从设备1到设备3走堆叠口1;设备1到设备4之间的最短路径为路径41,那么报文从设备1到设备4走堆叠口2。设备1到自身不必走堆叠口。根据该最短路径的计算结果生成如表1所示的设备1的转发路径表。然后再根据转发路径表设置硬件转发表项,保证报文可以经由正确的堆叠口转发出去。

  目的设备 设备1 设备2 设备3 设备4  选择的堆叠口 -- 堆叠口1 堆叠口1 堆叠口2

表1

当报文从堆叠系统外部进入堆叠系统后,由报文入接口所在设备查找硬件转发表,确定报文在堆叠系统中的目的设备和出接口,进而确定转发该报文的堆叠口,然后将报文通过确定的堆叠口向目的设备发送。在发送之前,还需要在报文上添加堆叠报文头,该堆叠报文头包括源设备信息、入接口信息、目的设备信息和出接口信息。

当成员设备通过堆叠口接收到来自堆叠系统中其它成员设备的报文时,根据报文携带的目的设备信息,判断自身是否为报文的目的设备;如果是,则将报文从出接口发送到堆叠系统外部;如果不是,则根据报文携带的目的设备信息查找自身硬件转发表并继续向报文目的设备转发。

在堆叠系统中,报文需要沿着源和目的之间的最短路径转发,如果某成员设备通过堆叠口1发出的报文,又从自己的堆叠口2接收到,并再次从堆叠口1发出,则形成环路;或者某成员设备通过堆叠口1发出的报文,在堆叠系统中绕了一圈之后,又从自己的堆叠口1收到,则也形成环路。这种报文成环的现象会造成广播风暴,从而将系统中可用带宽耗尽,使得整个系统不可用。

为了防止报文成环,可以在堆叠系统中设置环路检查,以防止堆叠系统产生环路。例如,一种环路检查方式是各成员设备接收到来自其它成员设备的报文时,根据报文携带的源设备信息,判断所接收报文的源设备是否为自身,如果是,则丢弃报文,否则进行正常转发。

但是这种环路检查方式并不适用于挂接有应用子卡的堆叠系统。图2为应用子卡挂接在图1所示堆叠系统设备3上的示意图。该应用子卡可以为应用控制网关(ACG,Application Control Gateway)子卡,诸如入侵防御系统(IPS,Intrusion Prevention System)子卡的安全子卡,等等。应用子卡为整个堆叠系统中的各个成员设备服务。当某个成员设备需要应用子卡处理报文,当应用子卡不在本成员设备上,则该成员设备通过重定向的方式将报文重定向到应用子卡所在成员设备。应用子卡处理报文后,应用子卡所在成员设备为报文确定目的设备和出接口并进行转发。

参见图2,假设应用子卡挂接在设备3上,流量从设备2进入,且需要应用子卡的处理,经处理后再转发到设备1。在这种情况下,设备2接收到报文后,在为报文添加的堆叠报头中填入自身设备信息作为源设备信息,将报文被重定向到设备3上接收应用子卡的处理,经应用子卡处理后,设备3为报文查找目的设备和出接口并进行转发。假设从设备3到设备1走设备3的堆叠口2,那么报文通过堆叠口2转发回设备2上。由于转发过程中报文的源设备信息通常不变,此时设备2从堆叠口1上收到了源设备为自身的报文,设备2将会丢弃该报文,从而导致错误发生。

可见,上述防止堆叠系统产生环路方案,可能造成经重定向到业务子卡处理的报文在接受环路检查时被错误丢弃,因此不适用于具有业务子卡的堆叠系统。

发明内容

有鉴于此,本发明提供了一种防止堆叠系统产生环路的方法,能够避免经重定向到业务子卡处理的报文在接受环路检查时被错误丢弃。

堆叠系统中的成员设备通过堆叠口接收报文,判断所接收报文是否为已知单播报文;如果是,则对所接收报文进行转发处理;否则,对所接收报文进行环路检查,如果检测到产生环路,则丢弃所接收报文,如果未检测到产生环路,则对所接收报文进行转发处理。

该方法进一步包括:为报文查找目的设备和出接口的成员设备,在未查找到单播报文的目的设备和出接口时,确定该单播报文为未知单播报文,为未知单播报文打上未知单播标识;

在这种情况下,所述判断所接收报文是否为已知单播报文为:如果所接收报文未携带未知单播标识,且不是广播报文,也不是组播报文,则判定所接收报文为已知单播报文。

该方法进一步包括:报文Q的入接口所在成员设备为报文Q添加堆叠报文头,在所述堆叠报文头中记录源设备信息;

在这种情况下,所述对所接收报文进行环路检查包括:

成员设备根据所接收报文携带的源设备信息,判断所接收报文的源设备是否为自身,如果是,则确定产生环路;

判断实际接收该所接收报文的堆叠口是否为该所接收报文的源设备到自身之间的最短路径对应的堆叠口,如果不是,则确定产生环路。

该方法进一步包括:成员设备在堆叠系统的拓扑确定后,根据当前拓扑连接情况计算自身到堆叠系统中其它各成员设备的最短路径;根据最短路径计算结果,分别向自身各堆叠口下发相应ACL规则;

向堆叠口x下发的ACL规则包括以下4类ACL规则:

第一类ACL规则的匹配条件为:所接收报文的目的MAC地址的最高位为1,且所接收报文的源设备为堆叠口x所在设备;

第二类ACL规则的匹配条件为:所接收报文的目的MAC地址的最高位为1,且所接收报文的源设备为堆叠口x通过非最短路径连接的各成员设备;

第三类ACL规则的匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备为堆叠口x所在设备;

第四类ACL规则的匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备为堆叠口x通过非最短路径连接的各成员设备;

所述判断所接收报文是否为已知单播报文的操作和所述对所接收报文进行环路检查的操作包括:根据为实际接收报文的堆叠口下发的ACL规则,判断所接收报文是否与其中任意一个ACL规则相匹配,如果是,则丢弃所接收报文;否则,对所接收报文进行转发处理。

该方法进一步包括:成员设备在初始化时,分别向自身各堆叠口下发所有相关ACL规则;向堆叠口x下发的ACL规则包括以下2类ACL规则:

a类ACL规则的匹配条件为:所接收报文的目的MAC地址的最高位为1,且所接收报文的源设备是预先为堆叠系统配置的各设备;

b类ACL规则的匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备是预先为堆叠系统配置的各设备。

每个成员设备在堆叠系统的拓扑确定后,根据当前拓扑连接情况计算自身到堆叠系统中其它各成员设备的最短路径;根据最短路径计算结果,使能第a类ACL规则中和第b类ACL规则中的有效ACL规则;

为堆叠口x使能的有效ACL规则包括:

a类ACL规则中,匹配条件为所接收报文的目的MAC地址的最高位为1、且所接收报文的源设备为堆叠口x所在设备的ACL规则;

a类ACL规则中,匹配条件为所接收报文的目的MAC地址的最高位为1、且所接收报文的源设备为堆叠口x通过非最短路径连接的各成员设备的ACL规则;

b类ACL规则中,匹配条件为所接收报文携带未知单播标识、且所接收报文的源设备为堆叠口x所在设备的ACL规则;

b类ACL规则中,匹配条件为所接收报文携带未知单播标识、且所接收报文的源设备为堆叠口x通过非最短路径连接的各成员设备的ACL规则;

所述判断所接收报文是否为已知单播报文的操作和所述对所接收报文进行环路检查的操作包括:根据为实际接收报文的堆叠口使能的有效ACL规则,判断所接收报文是否与其中任意一个有效ACL规则相匹配,如果是,则丢弃所接收报文;否则,对所接收报文进行转发处理。

本发明还提供了一种防止堆叠系统产生环路的堆叠成员设备,能够避免经重定向到业务子卡处理的报文在接受环路检查时被错误丢弃。

该成员设备包括:环路检查单元和转发单元;

所述环路检查单元,用于通过堆叠口接收报文,判断所接收报文是否为已知单播报文;如果是,则将所接收报文发送给所述转发单元;否则,对所接收报文进行环路检查,如果检测到产生环路,则丢弃所接收报文,如果未检测到产生环路,则将所接收报文发送给所述转发单元;

所述转发单元,用于对所接收的报文进行转发处理。

该成员设备进一步包括报文处理单元,用于为报文查找目的设备和出接口,如果未查找到单播报文的目的设备和出接口,则确定该单播报文为未知单播报文,为未知单播报文打上未知单播标识;

所述环路检查单元在判断通过堆叠口接收的报文是否为已知单播报文时,如果所接收报文未携带未知单播标识,且不是广播报文,也不是组播报文时,则判定所接收报文为已知单播报文。

所述报文处理单元进一步用于,为接收自堆叠系统外部的报文添加堆叠报文头,在所述堆叠报文头中记录源设备信息;

所述环路检查单元在进行环路检查时,根据所接收报文携带的源设备信息,判断所接收报文的源设备是否为所在成员设备,如果是,则确定产生环路;判断实际接收该所接收报文的堆叠口是否为所接收报文的源设备到所在成员设备之间的最短路径对应的堆叠口,如果不是,则确定产生环路。

所述环路检查单元包括堆叠拓扑模块、ACL下发模块、ACL设置模块和检查模块;

所述堆叠拓扑模块,用于在堆叠系统的拓扑确定后,根据当前拓扑连接情况计算所在成员设备到堆叠系统中其它各成员设备之间的最短路径,将最短路径计算结果发送给所述ACL下发模块;

所述ACL下发模块,用于根据最短路径计算结果,确定所在成员设备的各堆叠口对应的ACL规则,并下发给所述ACL设置模块;

堆叠口x对应的ACL规则包括如下4类ACL规则:

第一类ACL规则的匹配条件为:所接收报文的目的MAC地址的最高位为1,且所接收报文的源设备为堆叠口x所在设备;

第二类ACL规则的匹配条件为:所接收报文的目的MAC地址的最高位为1,且所接收报文的源设备为堆叠口x通过非最短路径连接的各成员设备;

第三类ACL规则的匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备为堆叠口x所在设备;

第四类ACL规则的匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备为堆叠口x通过非最短路径连接的各成员设备;

所述ACL设置模块,用于接收所述ACL下发模块下发的各堆叠口对应的ACL规则,并分别设置到相应堆叠口;

所述检查模块,用于通过堆叠口接收报文,根据为实际接收该报文的堆叠口设置的ACL规则,判断所接收报文是否与其中任意一个ACL规则相匹配,如果是,丢弃所接收报文;否则,将所接收报文发送给所述转发单元。

或者,所述环路检查单元包括ACL下发模块和ACL设置模块;

所述ACL下发模块,用于在初始化时,将所在成员设备中各堆叠口对应的所有相关ACL规则下发给所述ACL设置模块;堆叠口x对应的所有相关ACL规则包括以下2类ACL规则:

a类ACL规则的匹配条件为:所接收报文的目的MAC地址的最高位为1,且所接收报文的源设备是为堆叠系统配置的各设备;

b类ACL规则的匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备是为堆叠系统配置的各设备;

所述ACL设置模块用于接收所述ACL下发模块下发的各堆叠口对应的所有相关ACL规则,并分别设置到相应堆叠口。

所述环路检查单元还包括堆叠拓扑模块和检查模块;

所述堆叠拓扑模块,用于在堆叠系统的拓扑确定后,根据当前拓扑连接情况计算所在成员设备到堆叠系统中其它各成员设备之间的最短路径,将最短路径计算结果发送给所述ACL下发模块;

所述ACL下发模块进一步用于,在接收到所述最短路径计算结果时,根据最短路径计算结果,确定第a类ACL规则中和第b类ACL规则中的有效ACL规则,并通知所述ACL设置模块;

为堆叠口x确定的有效ACL规则包括:

a类ACL规则中,匹配条件为所接收报文的目的MAC地址的最高位为1、且所接收报文的源设备为堆叠口x所在成员设备的ACL规则;

a类ACL规则中,匹配条件为所接收报文的目的MAC地址的最高位为1、且所接收报文的源设备为堆叠口x通过非最短路径连接的各成员设备的ACL规则;

b类ACL规则中,匹配条件为所接收报文携带未知单播标识、且所接收报文的源设备为堆叠口x所在成员设备的ACL规则;

b类ACL规则中,匹配条件为所接收报文携带未知单播标识、且所接收报文的源设备为堆叠口x通过非最短路径连接的各成员设备的ACL规则;

所述ACL设置模块进一步用于,当接收到来自所述ACL下发模块的通知时,使能为各堆叠口设置的有效ACL规则;

所述检查模块,用于通过堆叠口接收报文,根据为实际接收该报文的堆叠口设置的有效ACL规则,判断所接收报文是否与其中任意一个有效ACL规则相匹配,如果是,丢弃所接收报文;否则,将所接收报文发送给所述转发单元。

根据以上技术方案可见,应用本发明通过对包含业务子卡,需要重定向处理的堆叠环境进行分析发现,重定向到业务子卡接受处理的报文均为已知单播报文,且已知单播报文在堆叠系统中的转发路径已经确定,不会造成环路,因此无需对已知单播报文进行环路检查。因此,本发明仅对广播报文、组播报文和未知单播报文进行环路检查,从而避免经重定向处理后的报文在接受环路检查时被丢弃,且不会影响环路检查效果。

附图说明

图1为一种4台设备堆叠的堆叠系统结构示意图。

图2为一种应用子卡挂接在图1所示堆叠系统的设备3上的示意图。

图3为本发明实施例中一种采用ACL规则实现防止堆叠系统产生环路的方法流程图。

图4为本发明实施例中另一种采用ACL规则实现防止堆叠系统产生环路的方法流程图。

图5为图2中拓扑变化后形成的链型拓扑。

图6为本发明实施例中成员设备的结构示意图。

图7为图6中环路检查单元62的结构示意图。

具体实施方式

下面结合附图并举实施例,对本发明进行详细描述。

对于具有业务子卡、且有重定向需求的堆叠系统,被重定向到业务子卡处理的流量是报文特征与预定规则相匹配的流量,这种流量具有已知报文特征。而且,在具有业务子卡的堆叠系统这种特定的环境下,被重定向到业务子卡的流量必定是单播报文。因此,在具有业务子卡的堆叠系统中,只有具备已知报文特征的单播报文即已知单播报文,会出现重定向到业务子卡接受处理的情况。

通过上述对具有应用子卡,且有重定向需求的堆叠环境进行分析发现,重定向到业务子卡处理的报文均为已知单播报文,因此,本发明只要不对已知单播报文进行环路检查,即可避免经重定向到业务子卡处理后的报文在接受环路检查时被丢弃。而且,由于在堆叠系统中,已知单播报文会沿着最短路径转发,该最短路径是堆叠系统拓扑建立时所确定的最优路径,因此已知单播报文在堆叠系统中的转发路径不会造成环路,那么不对已知单播报文进行环路检查也不会影响环路检查效果,同样能够达到防止堆叠系统产生环路的目的。

基于上述思想,本发明实施例提供的防止环路产生方案为:堆叠系统中的成员设备接收来自堆叠系统中其它成员设备的报文,判断所接收报文是否为已知单播报文;如果是,则对所接收报文进行转发处理;否则,对所接收报文进行环路检查,如果检测到产生环路,则丢弃所接收报文,如果未检测到产生环路,则对所接收报文进行转发处理。

该方案不仅适用于具有业务子卡的堆叠系统,而且适用于不具有业务子卡的堆叠系统。不仅适用于环形拓扑的堆叠系统,还适用于非环形拓扑的堆叠系统。

其中,上述成员设备判断所接收报文是否为已知单播报文的操作可以通过判断报文是否为广播报文、组播报文或未知单播报文实现。具体来说:

广播报文和组播报文比较容易识别,可以根据报文的目的介质访问控制(MAC)地址,判断报文是否为广播报文和组播报文。如果报文的目的MAC地址的最高位为1,则该报文为广播报文或组播报文。

未知单播报文也属于单播报文,与已知单播报文的区别在于,堆叠系统中的成员设备不能从转发表中查找到未知单播报文的目的设备和出接口。为了便于各成员设备识别未知单播报文,在本实施例中,为报文查找目的设备和出接口的成员设备,在未查找到某单播报文的目的设备和出接口时,则确定该单播报文为未知单播报文,为未知单播报文打上未知单播标识。该未知单播标识可以设置在堆叠系统为报文添加的堆叠报文头中。所述为报文查找目的设备和出接口的成员设备可能是报文入接口所在成员设备,也可能是业务子卡所在成员设备。

那么,当成员设备从堆叠口接收的报文未携带未知单播标识、且根据目的MAC地址判定所接收报文也不是广播报文或组播报文,则可以确定该报文为已知单播报文,不需要对其进行环路检查。而当所接收报文为广播报文、组播报文或未知单播报文中的任意一种时,都需要进行环路检查。

本实施例中,环路检查的操作可以通过检查报文的源设备信息实现,具体来说:

报文入接口所在成员设备会为报文添加堆叠报文头,并在堆叠报文头中记录源设备信息和入接口信息;如果报文入接口所在成员设备还为报文确定了目的设备和出接口,还会在堆叠报文头中记录目的设备信息和出接口信息。其中,源设备信息和目的设备信息均为设备在堆叠系统中的标识,称为设备Mod,源设备信息可以记为SrcMod,目的设备信息记为Destmod。

那么在环路检查时,成员设备根据所接收报文携带的SrcMod,判断所接收广播/组播/未知单播报文(“/”表示或)的源设备是否为自身,如果是,则确定产生环路。这一检查操作可以避免成员设备收到自己发出的报文。

在实际中,如果成员设备从堆叠口1和堆叠口2收到相同的广播/组播/未知单播报文,也产生了环路。为了防止这种情况的发生,本发明的环路检查操作进一步包括:成员设备判断实际接收广播/组播/未知单播报文的堆叠口是否为所接收报文的源设备到自身之间的最短路径对应的堆叠口,如果不是,则确定产生环路。

在实际实施时,可以通过在每个成员设备中设置源丢弃表项,来实现对广播/组播/未知单播报文的环路检查以及环路检查结果对应的操作。表2为图2中设备1的源丢弃表项设置示意。表2中的“Y”表示丢弃,“N”表示不丢弃。

 源设备 设备1 设备2 设备3 设备4 堆叠口1 Y N N Y 堆叠口2 Y Y Y N

表2

源丢弃表项中记录了成员设备的各堆叠口对源设备为自身的广播/组播/未知单播报文如何处理,对源设备为其它成员设备的广播/组播/未知单播报文如何处理。以表2为例,当设备1从堆叠口1接收到源设备为设备1的广播/组播/未知单播报文时,查找源丢弃表项,查找到对应的操作为“Y”,则丢弃所接收报文。再例如,当设备1从堆叠口1接收到源设备为设备4的广播/组播/未知单播报文,则丢弃所接收报文。

采用表2示出的源丢弃表项实现本发明需要先进行报文类别的识别,再采用源丢弃表项对广播/组播/未知单播报文进行环路检查。在实际中,已知单播报文的判断操作以及环路检查操作可以采用匹配ACL规则实现。

图3为本发明实施例中一种采用ACL规则实现防止堆叠系统产生环路的方法流程图。如图3所示,该流程包括以下步骤:

步骤301:各成员设备在堆叠系统拓扑确定时,例如堆叠系统上电启动,或堆叠系统拓扑发生变化时,根据当前拓扑连接情况计算自身到堆叠系统中其它各成员设备的最短路径。

步骤302:成员设备根据最短路径计算结果生成转发路径表,根据转发路径表设置硬件转发表项。

该硬件转发表项为报文在堆叠系统内部转发所遵循的转发规则。根据最短路径生成转发路径表的方式为已知技术手段,这里不详述。

步骤303:成员设备根据最短路径计算结果,分别向自身的堆叠口1和堆叠口2下发相应ACL规则。步骤302和303的执行顺序不分先后。

向堆叠口x(x为1或2)下发的ACL规则包括如下4类ACL规则,各类ACL规则的匹配处理操作为:丢弃。

所述4类ACL规则包括:

第一类ACL规则的匹配条件为:所接收报文的目的MAC地址的最高位为1,且所接收报文的源设备为堆叠口x所在设备;

第二类ACL规则的匹配条件为:所接收报文的目的MAC地址的最高位为1,且所接收报文的源设备为堆叠口x通过非最短路径连接的成员设备;该第二类ACL规则的数量可以为多个,具体数量与堆叠口x通过最短路径连接的成员设备以及堆叠系统中成员设备总数有关;

第三类ACL规则的匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备为堆叠口x所在设备;

第四类ACL规则的匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备为堆叠口x通过非最短路径连接的成员设备;该第四类ACL规则的数量可以为多个,具体数量与堆叠口x通过最短路径连接的成员设备以及堆叠系统中成员设备总数有关。

仍以图2中设备1为例,设备1向堆叠口1下发4条ACL,分别为:

ACL1,为第一类ACL规则,其匹配条件为:所接收报文的目的MAC的最高位为1,且所接收报文的源设备为设备1;

ACL2,为第二类ACL规则,其匹配条件为:所接收报文的目的MAC的最高位为1,且所接收报文的源设备为设备4;因为设备1到设备4的最短路径走设备1的堆叠口2,不走堆叠口1;

ACL3,为第三类ACL规则,其匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备为设备1;

ACL4,为第四类ACL规则,其匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备为设备4。

其中,每条ACL规则中的源设备匹配条件可能为一个Mod值。对于多芯片设备来说,其设备Mod值为多个,因此每条ACL规则中的源设备匹配条件可以是Mod值范围。各设备的Mod值范围是预先设定的。例如,预设设备1的Mod值范围为A~D,则ACL1的匹配条件为:目的MAC的最高位=1,且SrcMod=A~D。

步骤304:成员设备接收来自堆叠系统中其它成员设备的报文,根据为实际接收报文的堆叠口下发的ACL规则,判断所接收报文是否与其中任意一个ACL规则相匹配,如果是,则执行步骤305;否则,执行步骤306。

步骤305:丢弃所接收报文,本流程结束。

步骤306:成员设备根据自身硬件转发表项对所接收报文进行转发处理,本流程结束。

至此,本流程结束。

从图3示出的流程可见,该方案是在拓扑形成后,根据拓扑连接情况下发ACL规则,这些ACL规则都是有效的ACL规则。在这种情况下,每当拓扑变化时,都需要再次生成并下发适用于当前拓扑连接情况的有效ACL规则。为了进一步优化下发时间,充分利用较为充足的ACL资源,各成员设备可以在初始化时,向自身堆叠口x下发可能的所有ACL规则,当拓扑确定后根据当前拓扑连接情况,使能有效的ACL规则。具体流程参见图4。

图4为本发明实施例中另一种采用ACL规则实现防止堆叠系统产生环路的方法流程图。该流程示出了初始化时下发所有可能ACL的实施方式。如图4所示,该流程包括如下步骤:

步骤401:每个成员设备在初始化时,分别向自身各堆叠口下发所有相关ACL规则;向堆叠口x下发的ACL规则包括以下2类ACL规则,各ACL规则的匹配处理操作为:丢弃。

所述2类ACL规则包括:

a类ACL规则的匹配条件为:所接收报文的目的MAC地址的最高位为1,且所接收报文的源设备是预先为堆叠系统配置的各设备;其中,预先为堆叠系统配置的各设备是可能加入堆叠的设备,但在堆叠拓扑形成之前,这些设备还不能称为成员设备。该a类ACL规则的个数等于为堆叠系统配置的设备总数。

b类ACL规则的匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备是预先为堆叠系统配置的各设备;该b类ACL规则的个数等于为堆叠系统配置的设备总数。

仍以图2中设备1为例,设备1向堆叠口1下发8条ACL,分别为:

ACL_a1,为a类ACL规则,其匹配条件为:所接收报文的目的MAC的最高位为1,且所接收报文的源设备为设备1;

ACL_a2,为a类ACL规则,其匹配条件为:所接收报文的目的MAC的最高位为1,且所接收报文的源设备为设备2;

ACL_a3,为a类ACL规则,其匹配条件为:所接收报文的目的MAC的最高位为1,且所接收报文的源设备为设备3;

ACL_a4,为a类ACL规则,其匹配条件为:所接收报文的目的MAC的最高位为1,且所接收报文的源设备为设备4;

ACL_b1,为b类ACL规则,其匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备为设备1;

ACL_b2,为b类ACL规则,其匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备为设备2;

ACL_b3,为b类ACL规则,其匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备为设备3;

ACL_b4,为b类ACL规则,其匹配条件为:所接收报文携带未知单播标识,且所接收报文的源设备为设备4。

步骤402:每个成员设备在堆叠系统的拓扑确定后,根据当前拓扑连接情况计算自身到堆叠系统中其它各成员设备的最短路径。

步骤403:成员设备根据最短路径计算结果生成转发路径表,根据转发路径表设置硬件转发表项。

步骤404:根据最短路径计算结果,使能第a类ACL规则中的有效ACL规则和第b类ACL规则中的有效ACL规则。步骤403和404的执行顺序不分先后。

为堆叠口x使能的有效ACL规则包括:

a类ACL规则中,匹配条件为所接收报文的目的MAC地址的最高位为1、且所接收报文的源设备为堆叠口x所在设备的ACL规则;

a类ACL规则中,匹配条件为所接收报文的目的MAC地址的最高位为1、且所接收报文的源设备为堆叠口x通过非最短路径连接的各成员设备的ACL规则;

b类ACL规则中,匹配条件为所接收报文携带未知单播标识、且所接收报文的源设备为堆叠口x所在设备的ACL规则;

b类ACL规则中,匹配条件为所接收报文携带未知单播标识、且所接收报文的源设备为堆叠口x通过非最短路径连接的各成员设备的ACL规则。

假设图2中的最短路径计算结果为,设备1到设备2和设备3都走堆叠口1,到设备4走堆叠口2。那么设备1为堆叠口1使能的有效ACL规则包括上述ACL_a1、ACL_a4、ACL_b1和ACL_b4,其它ACL规则不使能。设备1为堆叠口2使能的有效ACL规则包括上述ACL_a1、ACL_a2、ACL_a3、ACL_b1、ACL_b2和ACL_b3。

当拓扑连接情况变化时,根据变化后的拓扑连接情况使能有效的ACL规则,这样能够避免每次拓扑变化都重新下发ACL规则。

例如,当图2中的设备2与设备3之间的链路故障时,形成如图5所示的链型拓扑,则根据新的拓扑连接情况计算最短路径的计算结果为:设备1到设备2走堆叠口1,到设备4和设备3走堆叠口2。在这种情况下,设备1为堆叠口1使能ACL_a1、ACL_a3、ACL_a4、ACL_b1、ACL_a3和ACL_b4。

步骤405:成员设备接收来自堆叠系统中其它成员设备的报文,根据为实际接收报文的堆叠口使能的有效ACL规则,判断所接收报文是否与其中任意一个有效ACL规则相匹配,如果是,则执行步骤406;否则,执行步骤407。

步骤406:丢弃所接收报文,本流程结束。

步骤407:成员设备根据自身硬件转发表项对所接收报文进行转发处理,本流程结束。

至此,本流程结束。

为了实现上述防止堆叠系统产生环路的方法,本发明实施例还提供了一种堆叠系统中的成员设备。图6为本发明实施例中成员设备的结构示意图。如图6所示,该成员设备包括环路检查单元62和转发单元63。

其中,环路检查单元62,用于通过堆叠口接收报文,判断所接收报文是否为已知单播报文;如果是,则将所接收报文发送给转发单元63;否则,对所接收报文进行环路检查,如果检测到产生环路,则丢弃所接收报文,如果未检测到产生环路,则将所接收报文发送给转发单元63。

转发单元63,对环路检查单元62发来的报文进行转发处理。该转发单元63根据硬件转发表项实现转发。

该成员设备还包括报文处理单元64,用于为接收自堆叠系统外部的报文添加堆叠报文头,在所述堆叠报文头中记录源设备信息和入接口信息。如果该报文不需要重定向,则报文处理单元64为该报文查找目的设备和出接口,如果所接收报文为单播报文,且未查找到所接收报文的目的设备和出接口,则确定所接收的单播报文为未知单播报文,为未知单播报文打上未知单播标识,然后将报文发送给转发单元63进行转发处理。报文处理单元64在查找到报文的目的设备和出接口时,在报文的堆叠报文头中记录目的设备信息和出接口信息,然后将报文发送给转发单元63进行转发处理。如果报文处理单元64所在成员设备挂接有应用子卡,则该报文处理单元64还为经过应用子卡处理的报文查找目的设备和出接口,根据查找结果执行的操作与前述相同,这里不重复描述。

由于未知单播报文中携带未知单播标识,因此,环路检查单元62在判断通过堆叠口接收的报文是否为已知单播报文时,如果判定所接收报文未携带未知单播标识,且不是广播报文,也不是组播报文时,则可以判定所接收报文为已知单播报文。

环路检查单元62在进行环路检查时,可以根据所接收报文携带的源设备信息,判断所接收报文的源设备是否为所在成员设备,如果是,则确定产生环路;判断实际接收该所接收报文的堆叠口是否为所接收报文的源设备到所在成员设备之间的最短路径对应的堆叠口,如果不是,则确定产生环路。

环路检查单元62中判断所接收报文是否为已知单播报文的操作和对所接收报文进行环路检查的操作可以采用匹配ACL规则的方式实现。采用这种实现方式时,环路检查单元62具体包括如图7所示的几个模块:堆叠拓扑模块621、ACL下发模块622、ACL设置模块623和检查模块624。

其中,堆叠拓扑模块621,用于在堆叠系统的拓扑确定后,根据当前拓扑连接情况计算所在成员设备到堆叠系统中其它各成员设备的最短路径,将最短路径计算结果发送给ACL下发模块622。

ACL下发模块622,用于根据最短路径计算结果,确定所在成员设备的各堆叠口对应的ACL规则,并下发给ACL设置模块623。堆叠口x对应的4类ACL规则已经在前述对图3的描述中具体阐述,这里略。

ACL设置模块623,用于接收ACL下发模块622下发的各堆叠口对应的ACL规则,并分别设置到相应堆叠口。在实际设备中,ACL下发模块622为软件层面的模块,ACL设置模块623为硬件层面的模块。

检查模块624,通过堆叠口接收报文,根据为实际接收报文的堆叠口设置的ACL规则,判断所接收报文是否与其中任意一个ACL规则相匹配,如果是,丢弃所接收报文;否则,将所接收报文发送给转发单元63进行转发处理。

为了进一步优化下发时间,充分利用较为充足的ACL资源,可以在堆叠系统初始化时,各成员设备向自身堆叠口x下发与堆叠口x相关的所有ACL规则,根据当前拓扑连接情况,使能有效的ACL规则。采用这种实现方式时,环路检查单元62仍包括如图7所示的几个模块。堆叠拓扑模块621的功能与上文所述相同。

在本实施方式下,ACL下发模块622用于在初始化时,将所在成员设备各堆叠口对应的所有相关ACL规则下发给ACL设置模块623;堆叠口x对应的所有相关ACL规则包括2类ACL规则:a类ACL规则和b类ACL规则。这两类ACL规则的具体内容已经在前述对图4的描述中具体阐述,这里略。

该ACL下发模块622还在接收到堆叠拓扑模块621发来的最短路径计算结果时,根据最短路径计算结果,确定第a类ACL规则中的有效ACL规则和第b类ACL规则中的有效ACL规则,并通知ACL设置模块623。其中有效ACL规则的具体内容已经在前述对图4的描述中具体阐述,这里略。

ACL设置模块623用于接收ACL下发模块622下发的各堆叠口对应的所有相关ACL规则,并分别设置到相应堆叠口;当接收到来自ACL下发模块622的通知时,使能为各堆叠口设置的有效ACL规则。

检查模块624,用于通过堆叠口接收报文,根据为实际接收该报文的堆叠口设置的有效ACL规则,判断所接收报文是否与其中任意一个有效ACL规则相匹配,如果是,丢弃所接收报文;否则,将所接收报文发送给所述转发单元。

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号