公开/公告号CN104601461A
专利类型发明专利
公开/公告日2015-05-06
原文格式PDF
申请/专利权人 杭州华三通信技术有限公司;
申请/专利号CN201310528372.7
发明设计人 王明辉;
申请日2013-10-30
分类号H04L12/705(20130101);H04L12/803(20130101);H04L12/761(20130101);
代理机构11018 北京德琦知识产权代理有限公司;
代理人郑红娟;宋志强
地址 310053 浙江省杭州市高新技术产业开发区之江科技工业园六和路310号华为杭州生产基地
入库时间 2023-12-18 08:35:15
法律状态公告日
法律状态信息
法律状态
2018-02-09
授权
授权
2017-05-10
著录事项变更 IPC(主分类):H04L12/705 变更前: 变更后: 申请日:20131030
著录事项变更
2015-06-24
实质审查的生效 IPC(主分类):H04L12/705 申请日:20131030
实质审查的生效
2015-05-06
公开
公开
技术领域
本申请涉及网络通信技术领域,特别涉及一种VIRF(Vertical Intelligent Resilient Framework,纵向智能弹性架构)系统中的报文转发方法及装置。
背景技术
IRF(Intelligent Resilient Framework,智能弹性架构)是一种将多台设备虚拟成一 台设备来管理和使用的技术。IRF技术可以将多台设备通过IRF端口连接起来形成一 台虚拟的逻辑设备,如图1所示。为了描述方便,可以将该逻辑设备称为IRF系统。 用户对这台虚拟设备进行管理,来实现对虚拟设备中的所有物理设备的管理。这种虚 拟设备既具有盒式设备的低成本优点,又具有框式分布式设备的扩展性以及高可靠性 优点。
在IRF系统中的每一台设备(可以称为堆叠成员设备)上,最多可以设置两个堆 叠端口,分别称为堆叠端口1(在图1中,用Port1表示)和堆叠端口2(在图1中, 用Port2表示),每一个堆叠端口又可以由多个成员端口聚合而成。在IRF系统中,堆 叠端口的正确配置至关重要,连接相邻两台设备的IRF链路两端的堆叠端口,必须一 个是堆叠端口1,另一个是堆叠端口2。
在设置转发表项时,每一个设备计算从本设备到其他设备的转发路径,并将最佳 路径(例如,最短转发路径)对应的转发表项配置到单播转发表中。例如,图1中的 设备1上的单播转发表可以如表1所示:
表1
表1中的内容表明:设备1要将报文转发到各个其他设备时,报文的出接口是什 么。例如,设备1要将报文转发到设备2时,报文的出接口是Port1;要将报文转发到 设备3时,报文的出接口是Port1;要将报文转发到设备4时,报文的出接口是Port2; 而要将报文转发到本设备时,就不需要通过堆叠端口转发了。
此外,在IRF系统为环形拓扑时,为了防止报文形成转发环路,例如,设备从堆 叠端口1发出报文后,又从堆叠端口2接收到了该报文,并且再次从堆叠端口1发出 该报文,或者,设备从堆叠端口1发出报文后,又从堆叠端口1接收到了该报文,每 一个设备还需要设置源丢弃表项,本设备在收到匹配某一源丢弃表项的报文时,丢弃 该报文。例如,图1中的设备1上的源丢弃表可以如表2所示:
表2
表2中的内容表明:对于设备1,在对从堆叠端口接收到的报文进行转发时,要 对该报文进行源丢弃检测。具体的,当该报文是从Port1接收到的时,若检测出该报 文的源设备为设备1或设备4,则丢弃该报文;当该报文是从Port2接收到的时,若检 测出该报文的源设备为设备1、设备2、或设备3,则,丢弃该报文。在实际实施时, CB设备对单播报文和非单播报文都可以进行如上的源丢弃检测。其中的非单播报文 可以是组播报文、广播报文、或目的地址未知的单播报文。
其中,报文的源设备指的是该报文从用户端口进入IRF系统时首次接收到该报文 的堆叠成员设备,其中,用户端口是与IRF系统以外的设备连接的端口,该用户端口 不是堆叠端口。
也就是说,在一个设备上设置源丢弃表项时需要遵循以下两个原则:
(1)对于从堆叠端口1或堆叠端口2上接收到的源设备为本设备的报文,需要丢 弃;
(2)如果本设备在从本设备到某一个其他设备的最佳路径上的堆叠端口是第一堆 叠端口,则,对于从第二堆叠端口上接收到的源设备为该其他设备的报文,需要丢弃, 其中,当第一堆叠端口是堆叠端口1时,第二堆叠端口是堆叠端口2,当第一堆叠端 口是堆叠端口2时,第二堆叠端口是堆叠端口1。即,对于从本设备到该其他设备的 非最佳路径上接收到的、源设备为该其他设备的报文,进行丢弃。
当前,数据中心的ToR(Top of Rack,机柜顶端)接入设备众多,而万兆服务器 的部署是一个逐步过程,千兆/万兆混合接入是当前组网的必然方式,如何简化网络结 构、简化管理就成为迫在眉睫的问题。通过虚拟化接入网的方式实现单一管理域,减 少网络层次以及管理扁平化等功能,是当前数据中心技术的一个重要发展趋势。其中, 二级堆叠的CB-PE组网方式就是一种能够满足数据中心的上述需求的一种典型组网 方式。
发明内容
本申请提供了一种VIRF系统中的报文转发方法及装置,以解决现有技术中存在 的在VIRF系统中无法通过设置源丢弃表项的方式,防止非单播报文形成转发环路的 问题。
本申请的技术方案如下:
一方面,提供了一种VIRF系统中的报文转发方法,VIRF系统中包括:CB设备 及其连接的PE设备,CB设备之间通过横向堆叠端口连接,CB设备通过纵向堆叠端 口连接PE设备,至少两个CB设备连接同一个PE设备,该方法应用于VIRF系统中 任一CB设备,该方法包括:
针对VIRF系统中的每一个PE设备,根据该PE设备的ID,为该PE设备的数据 流选择一条CB设备间的阻断链路,其中,不同CB设备针对同一PE设备选择的阻断 链路相同;
判断选中的阻断链路是否与本设备相连;
若与本设备相连,则设置禁止通过本设备上的对应横向堆叠端口转发源设备为该 PE设备的非单播报文,其中,对应横向堆叠端口为本设备上与选中的阻断链路相连的 横向堆叠端口;
在接收到源设备为该PE设备的非单播报文后,对该非单播报文进行转发,其中, 在转发时,禁止通过对应横向堆叠端口转发该非单播报文。
另一方面,还提供了一种VIRF系统中的报文转发装置,VIRF系统中包括:CB 设备及其连接的PE设备,CB设备之间通过横向堆叠端口连接,CB设备通过纵向堆 叠端口连接PE设备,至少两个CB设备连接同一个PE设备,该装置应用于VIRF系 统中任一CB设备,该装置包括:
选择模块,用于针对VIRF系统中的每一个PE设备,为该PE设备的数据流选择 一条CB设备间的阻断链路,其中,不同CB设备针对同一PE设备选择的阻断链路相 同;
判断模块,用于判断选择模块选中的阻断链路是否与本设备相连;
设置模块,用于若判断模块的判断结果是与本设备相连,则设置禁止通过本设备 上的对应横向堆叠端口转发源设备为该PE设备的非单播报文,其中,对应横向堆叠 端口为本设备上与选中的阻断链路相连的横向堆叠端口;
接收模块,用于接收非单播报文;
发送模块,用于在接收模块接收到源设备为该PE设备的非单播报文后,对该非 单播报文进行转发,其中,在转发时,禁止通过对应横向堆叠端口转发该非单播报文。
通过本申请的以上的技术方案,针对VIRF系统中的每一个PE设备,CB设备根 据该PE设备的ID,为该PE设备的数据流选择一条CB设备间的阻断链路,其中,不 同CB设备针对同一PE设备选择的阻断链路相同,然后,判断选中的阻断链路是否与 本设备相连,若与本设备相连,则设置禁止通过本设备上的与该选中的阻断链路相连 的对应横向堆叠端口转发源设备为该PE设备的非单播报文,这样,CB设备在接收到 源设备为该PE设备的非单播报文,并对该非单播报文进行转发时,就可以禁止通过 该对应横向堆叠端口转发该非单播报文。从而,对于源设备为某一PE设备的非单播 报文,可以在该PE设备的数据流的阻断链路上进行阻断,实现了防止源设备为PE设 备的非单播报文形成转发环路的目的;另外,在选择阻断链路时,各个CB设备根据 PE设备的ID进行选择,各个CB设备针对同一个PE设备选择的阻断链路是相同的, 而且,由于不同PE设备的ID不同,也保证了针对不同PE设备选择的阻断链路也不 同,使得源设备为不同PE设备的非单播报文,在不同堆叠链路(即CB之间的链路) 上被阻断,实现了源设备为不同PE设备的非单播报文的负载分担。
附图说明
图1是IRF系统的架构示意图;
图2是VIRF系统的架构示意图;
图3是本申请实施例的设置单播转发表和源丢弃表以及转发源设备为CB设备 的报文的流程图;
图4是本申请实施例的VIRF系统中的报文转发方法的流程图;
图5是本申请实施例的从VIRF系统中的CB设备中选择一个CB设备的流程 图;
图6是本申请实施例的CB设备将非单播报文转发给PE设备的流程图;
图7是本申请实施例的VIRF系统中的报文转发装置的结构示意图。
具体实施方式
图2是二级堆叠的一种组网模型图。在如图2所示的组网中,CB(Core Backbone, 核心骨干)设备之间形成一级堆叠,CB设备与PE(Port Extender,端口扩展)设备之 间形成二级堆叠,也称为纵向堆叠,即VIRF(Vertical Intelligent Resilient Framework, 纵向智能弹性架构)。为了描述方便,可以将CB-PE组成的系统称为VIRF系统,将 CB设备组成的系统称为CB系统。在VIRF系统中,对纵向堆叠进行了如下限定:纵 向只支持一级,并且,纵向的PE设备之间不能有直接的堆叠链路连接。
在如图2所示的VIRF系统中,PE设备在逻辑上作为CB设备的远程接口板,提 供端口扩展的作用,基本的查表转发均在CB设备上完成。从PE设备进入VIRF系统 的报文,需要先由PE设备上送给CB设备进行代理转发,所以,VIRF系统内的报文 转发,本质上是CB设备之间的报文转发。
在IRF系统中,来自于一个CB设备所连的用户的非单播报文,只能通过同一个 CB设备进入IRF系统。对于IRF系统中的任意一个CB设备而言,可以通过设置源丢 弃表项的方式,对于从本设备到某一其他CB设备的非最佳路径(例如,具体为堆叠 端口1)上接收到的、源设备为该其他CB设备的非单播报文,进行丢弃,从而,确 保只对从最佳路径(例如,具体为堆叠端口2)上接收到的、源设备为该其他CB设 备的非单播报文进行转发,实现防止非单播报文形成转发环路的目的。
然而,在VIRF系统中,一个PE设备可以连接多个CB设备,这样,来自于该PE 设备所连的用户的非单播报文,可以由该PE设备转发给这多个CB设备,从而进入 CB系统。对于CB系统中的任意一个CB设备而言,某一个堆叠端口可能是本设备在 从本设备到该PE设备连接的一个CB设备的最佳路径上的堆叠端口,也可能是本设备 在从本设备到该PE设备连接的另一个CB设备的非最佳路径上的堆叠端口,因此,无 法通过设置源丢弃表项的方式,实现防止非单播报文形成转发环路的目的。
例如,在如图2所示的VIRF系统中,PE设备PE2连接CB设备CB1、CB3和 CB4,PE2每次接收到一个非单播报文后,会根据预定选路方法从本设备连接CB1、 CB3和CB4的链路中选择一条链路发送该非单播报文,这样,源设备为PE2的非单 播报文可以转发给CB1、CB3和CB4。假设,对于CB2来说,CB2上的转发表如表3 所示,如果仍然采用设置源丢弃表项的方式防止非单播报文形成转发环路,那么,就 会设置用于丢弃从Port1上接收到的源设备为PE2的非单播报文的源丢弃表项(为了 描述方便,称为表项1),以及,用于丢弃从Port2上接收到的源设备为PE2的非单播 报文的源丢弃表项(为了描述方便,称为表项2)。但是,这样,使用表项1会错误地 丢弃掉经由CB3转发来的源设备为PE2的非单播报文,使用表项2会错误地丢弃掉经 由CB1或CB4转发来的源设备为PE2的非单播报文。
表3
为了解决在VIRF系统中无法通过设置源丢弃表项的方式,防止非单播报文形 成转发环路的问题,本申请以下实施例中提供了一种VIRF系统中的报文转发方 法,以及一种可以应用该方法的装置。
在本申请以下实施例中,如图2所示,VIRF系统中包括:CB设备及其连接 的PE设备,CB设备之间通过横向堆叠端口连接,CB设备通过纵向堆叠端口连接 PE设备,至少两个CB设备连接同一个PE设备,例如,图2中的CB设备CB2 和CB3连接同一个PE设备PE1,CB1、CB3和CB4连接同一个PE设备PE2,CB3 和CB4连接同一个PE设备PE3。其中,PE设备连接多个CB设备的端口可以聚 合,也可以不聚合;多个CB设备连接同一个PE设备的端口可以聚合,也可以不 聚合。
另外,每一个CB设备上最多设置有两个横向堆叠端口,分别称为堆叠端口1 和堆叠端口2。
本申请实施例的VIRF系统中的报文转发方法应用于VIRF系统中的任一CB 设备,该方法包括以下几个部分的内容:
1、设置单播转发表和源丢弃表以及转发源设备为CB设备的报文
如图3所示,该过程包括以下步骤:
步骤S102,针对每一个CB设备,计算从本设备到该其他CB设备的转发路 径,将最短转发路径对应的转发表项添加到单播转发表中;
具体的,从本设备上的每一个横向堆叠端口出发,计算从本设备到同一个其 他CB设备的转发路径,选择距离最短的一条路径,作为从本设备到该其他CB设 备的最短转发路径;如果有多条转发路径的距离相等,则可以按照一定的路径选 择方法从这多条转发路径中选择一条作为最短转发路径。其中,各个CB设备上的 路径选择方法相同。
其中,该路径选择方法例如可以是,若本设备的ID小于该其他CB设备的ID, 则选择从堆叠端口1出发得到的转发路径,若本设备的ID大于该其他CB设备的 ID,则选择从堆叠端口2出发得到的转发路径。
假设,VIRF系统中的CB设备的总数为N,N为大于2的自然数。
表4
表4中的第三行的表项表明:本设备在从本设备到其他CB设备1的最短转发 路径上的横向堆叠端口是堆叠端口1。
在实际实施过程中,表4中的本设备、其他CB设备1、…、其他CB设备(N-1) 具体可以使用各个设备上的转发芯片的芯片ID来标识,具体可以是芯片ID范围。
步骤S104,设置源丢弃表,如表5所示;
表5
表5中的第5行的源丢弃表项表明:当本设备在从本设备到其他CB设备1 的最短转发路径上的横向堆叠端口是堆叠端口1时,在另一个横向堆叠端口:堆 叠端口2上丢弃从该端口接收到的、源设备为其他CB设备1的报文,即,源设备 为其他CB设备1的报文只能从该最短转发路径上到达本设备。
其中,报文通过一个CB设备的用户端口首次进入到VIRF系统之后,该CB 设备会在该报文的内部头中携带上源端口信息,其中,该源端口信息具体可以包 括:该CB设备上接收到该报文的交换芯片的芯片ID和该报文的入端口的端口ID。 之后,该报文在VIRF系统中进行转发时,该报文的源端口信息不会发生改变,因 此,该报文所经过的任意一个CB设备接收到该报文后,可以根据该报文的源端口 信息判断出该报文是从哪一个CB设备进入VIRF系统的,即判断出该报文的源设 备是哪一个CB设备。
同样,报文通过一个PE设备的用户端口首次进入到VIRF系统之后,该PE 设备也会在该报文的内部头中携带上源端口信息。之后,该报文在VIRF系统中进 行转发时,该报文的源端口信息不会发生改变,因此,该报文所经过的任意一个 CB设备接收到该报文后,可以根据该报文的源端口信息判断出该报文是从哪一个 PE设备进入VIRF系统的,即判断出该报文的源设备是哪一个PE设备。
步骤S106,在接收到源设备为某一个其他CB设备的单播报文或非单播报文 后,对该报文进行转发,其中,在转发时,根据接收到该报文的横向堆叠端口和 该报文的源设备在如表5所示的源丢弃表中查找匹配表项,若查找到的匹配表项 指示丢弃,则将该报文丢弃。
2、转发源设备为PE设备的非单播报文
如图4所示,当一个PE设备加入到VIRF系统中时,每一个CB设备会执行 以下过程:
步骤S202,针对VIRF系统中的每一个PE设备,根据该PE设备的ID(Identity, 标识),为该PE设备的数据流选择一条CB设备间的阻断链路,其中,不同CB 设备针对同一PE设备选择的阻断链路相同;
具体的,可以按照PE设备非单播报文的流量均衡原则来为各个PE设备的数 据流选择阻断链路,使得不同PE设备的数据流能够在不同的阻断链路上被阻断。
因此,如图5所示,步骤S202中根据该PE设备的ID,为该PE设备的数据流选 择一条CB设备间的阻断链路的方法可以包括以下步骤:
步骤S302,按照预设算法对该PE设备的ID进行计算,得到一个计算值M,其 中,不同CB设备上的预设算法相同;
在实际实施过程中,PE设备的ID具体可以是PE设备的槽号。另外,该预设算法 可以是随机数生成算法或Hash(哈希)算法等,本申请对此不做限定。
由于同一PE设备的ID是相同的,各个CB设备上的预设算法也是相同的,因此, 各个CB设备对同一PE设备的ID计算得到的M值也是相同的。
步骤S304,计算S=M%N,其中,N表示VIRF系统中的CB设备的总数,%表示 求模运算符;
由于各个CB设备针对同一个PE设备,在步骤S302中计算得到的M值相同,因 此,在步骤S304中计算出的S值也相同。
步骤S306,根据S的值,从VIRF系统中的N个CB设备中选择一个CB设备;
例如,在步骤S306中,当S=0时,选择设备号为1的CB设备,当S=1时,选择 设备号为2的CB设备,以此类推。
由于各个CB设备针对同一个PE设备,在步骤S304中计算得到的S值相同,因 此,在步骤S306中选择的CB设备也是相同的。
步骤S308,将选中的CB设备上的预定横向堆叠端口所连接的链路,作为该PE 设备的数据流的阻断链路。
其中,预定横向堆叠端口是堆叠端口1或堆叠端口2。
步骤S204,判断选中的阻断链路是否与本设备相连,若与本设备相连,则执行步 骤S206,否则,执行步骤S208;
步骤S206,设置禁止通过本设备上的对应横向堆叠端口转发源设备为该PE设备 的非单播报文,其中,该对应横向堆叠端口为本设备上与该选中的阻断链路相连的横 向堆叠端口;然后,执行步骤S210;
其中,若选中的阻断链路与本设备相连,则当步骤S202中选中的CB设备是本设 备时,该对应横向堆叠端口就是本设备上的预定横向堆叠端口;当步骤S202中选中的 CB设备不是本设备时,该对应横向堆叠端口就是本设备上与该选中的阻断链路相连 的横向堆叠端口。
另外,步骤S206中设置禁止通过本设备上的对应横向堆叠端口转发源设备为该 PE设备的非单播报文的方法可以采用以下方法中的任意一种:
方法一:在本设备上的该对应横向堆叠端口上设置ACL(Access Control List,访 问控制列表)规则,该ACL规则中包括:匹配条件和执行动作,其中,匹配条件是 源设备为该PE设备的非单播报文,执行动作是禁止通过该对应横向堆叠端口转发;
通常PE设备中具有1或2个转发芯片,CB设备上保存有每一个PE设备的槽号 与该PE设备上的转发芯片的芯片ID之间的对应关系,因此,该ACL规则中的匹配 条件具体可以是:内部头的源端口信息中包括该PE设备上的转发芯片的芯片ID的 非单播报文。
方法二:在本地的禁止转发表中添加一表项,该表项中包含有特定ID和该对应横 向堆叠端口的端口ID,其中,该特定ID是该PE设备的ID或该PE设备上的转发芯 片的芯片ID。
步骤S208,不设置禁止通过本设备上的对应横向堆叠端口转发源设备为该PE设 备的非单播报文;然后,执行步骤S212;
步骤S210,在接收到源设备为该PE设备的非单播报文后,对该非单播报文进行 转发,其中,转发该非单播报文时,禁止通过该对应横向堆叠端口转发该非单播报文;
在实际实施步骤S210的过程中,在接收到广播报文或目的地址未知的单播报文 后,会根据与该报文中的VLAN(Virtual Local Area Network,虚拟局域网)ID对应 的广播转发表中的出端口列表转发该报文;在接收到组播报文后,会根据组播转发表 的匹配表项中的出端口列表转发该组播报文。
步骤S212,在接收到源设备为该PE设备的非单播报文后,对该非单播报文进行 转发;其中,转发该非单播报文时,允许通过该对应横向堆叠端口转发该非单播报文。
本实施例中,针对VIRF系统中的每一个PE设备,CB设备根据该PE设备的ID, 为该PE设备的数据流选择一条CB设备间的阻断链路,其中,不同CB设备针对同一 PE设备选择的阻断链路相同,然后,判断选中的阻断链路是否与本设备相连,若与本 设备相连,则设置禁止通过本设备上的与该选中的阻断链路相连的对应横向堆叠端口 转发源设备为该PE设备的非单播报文,这样,CB设备在接收到源设备为该PE设备 的非单播报文,并对该非单播报文进行转发时,就可以禁止通过该对应横向堆叠端口 转发该非单播报文。从而,对于源设备为某一PE设备的非单播报文,可以在该PE设 备的数据流的阻断链路上进行阻断,实现了防止源设备为PE设备的非单播报文形成 转发环路的目的;另外,在选择阻断链路时,各个CB设备根据PE设备的ID进行选 择,各个CB设备针对同一个PE设备选择的阻断链路是相同的,而且,由于不同PE 设备的ID不同,也保证了针对不同PE设备选择的阻断链路也不同,使得源设备为不 同PE设备的非单播报文,在不同堆叠链路(即CB之间的链路)上被阻断,实现了源 设备为不同PE设备的非单播报文的负载分担。
3、CB设备将非单播报文转发给PE设备
如图6所示,该过程包括以下步骤:
步骤S402,当本设备是连接同一个PE设备的至少两个CB设备中的一个CB设备 时,判断本设备连接该PE设备的纵向堆叠端口是否符合预设条件,若符合预设条件, 则执行步骤S404,否则,执行步骤S406;
其中,该预设条件可以是在该至少两个CB设备连接该PE设备的纵向堆叠端口中, 端口ID最大或最小。即,在该至少两个CB设备连接该PE设备的纵向堆叠端口中, 选择端口ID最大或最小的纵向堆叠端口作为该PE设备对应的主端口。
步骤S404,设置本设备连接该PE设备的纵向堆叠端口为该PE设备对应的主端口, 并将该纵向堆叠端口添加到本地的广播转发表和组播转发表的出端口列表中;然后, 执行步骤S408;
为了描述方便,可以将本设备连接该PE设备的纵向堆叠端口称为第一纵向堆叠 端口。
在实际实施步骤S404的过程中,可以将该PE设备的槽号与第一纵向堆叠端口的 对应关系记录到全局数据中,然后,将第一纵向堆叠端口的端口ID添加到各个广播表 或组播转发表的出端口列表中。
步骤S406,不设置本设备连接该PE设备的纵向堆叠端口为该PE设备对应的主端 口;然后,执行步骤S410;
步骤S408,在接收到非单播报文后,根据对应转发表的匹配表项中的出端口列表 转发该非单播报文,其中,转发该非单播报文时,由于对应转发表的匹配表项中的出 端口列表中包含有第一纵向堆叠端口,因此,会通过第一纵向堆叠端口转发该非单播 报文给该PE设备;
其中,该非单播报文可以是源设备为CB设备的非单播报文,也可以是源设备为 PE设备的非单播报文。
步骤S408中根据对应转发表的匹配表项中的出端口列表转发该非单播报文的方 法包括:当接收到的非单播报文是广播报文或目的地址未知的单播报文时,根据与该 报文中的VLAN ID对应的广播转发表中的出端口列表转发该报文;当接收到的非单 播报文是组播报文时,根据组播转发表的匹配表项中的出端口列表转发该组播报文。
步骤S410,在接收到非单播报文后,根据对应转发表的匹配表项中的出端口列表 转发该非单播报文,其中,转发该非单播报文时,由于对应转发表的匹配表项中的出 端口列表中没有第一纵向堆叠端口,因此,不会通过第一纵向堆叠端口转发该非单播 报文给该PE设备。
这样,当一个PE设备与多个CB设备相连时,可以确保只有主端口所在的CB设 备才会将非单播报文转发给该PE设备,其他CB设备不会将非单播报文转发给该PE 设备,该PE设备只会接收到一份报文,从而,防止PE设备收到多份报文。
以图2所示的VIRF系统为例,详细说明上述实施例中的方法。在图2中,CB设 备CB1-CB4组成一个环形拓扑,PE设备PE1连接CB2和CB3,PE2连接CB设备 CB1、CB3和CB4,PE3连接CB3和CB4,以CB2为例,CB2会执行以下操作:
CB2根据PE1的槽号,从CB1-CB4中选择一个CB设备,假设,选中的是CB1, 将CB1上的Port1所连接的链路(即,CB1-CB2之间的链路)作为PE1的数据流的阻 断链路;判断该阻断链路是否与本设备相连,此时,判断结果是与本设备相连,则, 在本设备上与该阻断链路相连的Port2上设置ACL规则,该ACL规则为:禁止通过 Port2转发源设备为PE1的非单播报文;
同样,根据PE2的槽号,从CB1-CB4中选择一个CB设备,假设,选中的是CB4, 将CB4上的Port1所连接的链路(即,CB4-CB1之间的链路)作为PE2的数据流的阻 断链路;判断该阻断链路是否与本设备相连,此时,判断结果是不与本设备相连,则, 退出本流程;
同样,根据PE3的槽号,从CB1-CB4中选择一个CB设备,假设,选中的是CB2, 将CB2上的Port1所连接的链路(即,CB2-CB3之间的链路)作为PE3的数据流的阻 断链路;判断该阻断链路是否与本设备相连,此时,判断结果是与本设备相连,则, 在本设备上与该阻断链路相连的Port1上设置ACL规则,该ACL规则为:禁止通过 Port1转发源设备为PE3的非单播报文;
由于CB2与CB3连接同一个PE设备PE1,则CB2比较本设备连接PE1的纵向 堆叠端口与CB3连接PE1的纵向堆叠端口的端口ID,若比较出本设备连接PE1的纵 向堆叠端口的端口ID最大,则在全局数据中记录PE1对应的主端口为本设备连接PE1 的纵向堆叠端口,为了描述方便,将本设备连接PE1的纵向堆叠端口记为P1,并将 P1添加到本地的广播转发表和组播转发表的出端口列表中;
CB2在接收到非单播报文后,根据对应转发表的匹配表项中的出端口列表转发该 非单播报文;
其中,若该非单播报文的源设备为PE1,则在转发时,不会通过Port2转发该非单 播报文,从而,将源设备为PE1的非单播报文阻断在CB2与CB1之间的链路上;
若该非单播报文的源设备为PE2,则在转发时,会通过除接收到该非单播报文以 外的另一个横向堆叠端口转发该非单播报文;
若该非单播报文的源设备为PE3,则在转发时,不会通过Port1转发该非单播报文, 从而,将源设备为PE3的非单播报文阻断在CB2与CB3之间的链路上;
若该非单播报文的源设备为PE1-PE3、CB1-CB4中的任一个,则在转发时,会通 过P1转发给PE1,从而,只会由CB2向PE1发送非单播报文。
以PE1为例,说明PE设备对非单播报文的转发过程:
PE1从连接CB2的上行端口上接收到非单播报文后,对该非单播报文进行转发时, 禁止通过本PE设备上的所有上行端口转发该非单播报文,从而,该非单播报文不会 转发给CB2和CB3。
另外,PE1从用户端口上接收到非单播报文后,如果PE1上连接CB2的上行端口 和连接CB3的上行端口聚合,则PE1根据该非单播报文的报头中的相关信息,从这两 个上行端口中选择一个上行端口转发该非单播报文;若PE1上连接CB2的上行端口和 连接CB3的上行端口没有聚合,则PE1根据预设的用户端口与上行端口的对应关系, 通过与接收到该非单播报文的用户端口对应的上行端口转发该非单播报文。从而,从 用户端口上接收到的非单播报文只会发送给一个直连的CB设备。
针对上述实施例中的方法,本申请实施例中还提供了一种可以应用该方法的装置, 该装置应用于VIRF系统中任一CB设备中。
如图7所示,该装置中包括以下模块:选择模块10、判断模块20、设置模块30、 接收模块40和发送模块50,其中:
选择模块10,用于针对VIRF系统中的每一个PE设备,为该PE设备的数据流选 择一条CB设备间的阻断链路,其中,不同CB设备针对同一PE设备选择的阻断链路 相同;
判断模块20,用于判断选择模块10选中的阻断链路是否与本设备相连;
设置模块30,用于若判断模块20的判断结果是与本设备相连,则设置禁止通过 本设备上的对应横向堆叠端口转发源设备为该PE设备的非单播报文,其中,对应横 向堆叠端口为本设备上与选中的阻断链路相连的横向堆叠端口;
接收模块40,用于接收非单播报文;
发送模块50,用于在接收模块40接收到源设备为该PE设备的非单播报文后,对 该非单播报文进行转发,其中,在转发时,禁止通过对应横向堆叠端口转发该非单播 报文。
其中,选择模块包括:计算单元和CB选择单元,其中:
计算单元,用于按照预设算法对该PE设备的ID进行计算,得到一个计算值M, 其中,不同CB设备上的预设算法相同;还用于计算S=M%N,其中,N表示VIRF系 统中的CB设备的总数,%表示求模运算符;
CB选择单元,用于根据计算单元计算出的S的值,从VIRF系统中的N个CB设 备中选择一个CB设备,将选中的CB设备上的预定横向堆叠端口所连接的链路,作 为该PE设备的数据流的阻断链路,其中,所述预定横向堆叠端口是堆叠端口1或堆 叠端口2。
其中,设置模块设置禁止通过本设备上的对应横向堆叠端口转发源设备为该PE 设备的非单播报文的方式包括:
在本设备上的对应横向堆叠端口上设置ACL规则,ACL规则中包括:匹配条件 和执行动作,其中,匹配条件是源设备为该PE设备的非单播报文,执行动作是禁止 通过对应横向堆叠端口转发;
或者,在本地的禁止转发表中添加一表项,该表项中包含有特定ID和该对应横向 堆叠端口的端口ID,其中,该特定ID是该PE设备的ID或该PE设备上的转发芯片 的ID。
另外,该装置中还包括:添加模块,其中:
判断模块,还用于当本设备是连接同一个PE设备的至少两个CB设备中的一个 CB设备时,判断本设备连接该PE设备的纵向堆叠端口是否符合预设条件;
设置模块,还用于若判断模块的判断结果是符合预设条件,则设置本设备连接该 PE设备的纵向堆叠端口为该PE设备对应的主端口;
添加模块,用于若判断模块的判断结果是符合预设条件,则将本设备连接该PE 设备的纵向堆叠端口添加到本地的广播转发表和组播转发表的出端口列表中;
发送模块,还用于在接收模块接收到非单播报文后,根据对应转发表的匹配表项 中的出端口列表转发该非单播报文。
其中,预设条件为在该至少两个CB设备连接该PE设备的纵向堆叠端口中,端口 ID最大或最小。
其中,发送模块根据对应转发表的匹配表项中的出端口列表转发该非单播报文的 方式包括:
当接收到的非单播报文是特定报文时,根据与该特定报文中的VLAN ID对应的广 播转发表中的出端口列表转发该特定报文,其中,该特定报文是广播报文或目的地址 未知的单播报文;
当接收到的非单播报文是组播报文时,根据组播转发表的匹配表项中的出端 口列表转发该组播报文。
综上,本申请以上实施例可以达到以下技术效果:
(1)针对VIRF系统中的每一个PE设备,CB设备根据该PE设备的ID,为 该PE设备的数据流选择一条CB设备间的阻断链路,其中,不同CB设备针对同 一PE设备选择的阻断链路相同,然后,判断选中的阻断链路是否与本设备相连, 若与本设备相连,则设置禁止通过本设备上的与该选中的阻断链路相连的对应横 向堆叠端口转发源设备为该PE设备的非单播报文,这样,CB设备在接收到源设 备为该PE设备的非单播报文,并对该非单播报文进行转发时,就可以禁止通过该 对应横向堆叠端口转发该非单播报文。从而,对于源设备为某一PE设备的非单播 报文,可以在该PE设备的数据流的阻断链路上进行阻断,实现了防止源设备为 PE设备的非单播报文形成转发环路的目的;另外,在选择阻断链路时,各个CB 设备根据PE设备的ID进行选择,各个CB设备针对同一个PE设备选择的阻断链 路是相同的,而且,由于不同PE设备的ID不同,也保证了针对不同PE设备选择 的阻断链路也不同,使得源设备为不同PE设备的非单播报文,在不同堆叠链路(即 CB之间的链路)上被阻断,实现了源设备为不同PE设备的非单播报文的负载分 担。
(2)从多个CB设备连接同一个PE设备的纵向堆叠端口中选择一个作为该 PE设备对应的主端口,只有该主端口所在的CB设备才会将该主端口添加到广播 转发表和组播转发表中的出端口列表中,这样,保证了只有该主端口所在的CB设 备才会向该PE设备发送非单播报文,从而,防止了该PE设备收到多份报文。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请 的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保 护的范围之内。
机译: 报文转发装置,报文转发系统及报文转发方法
机译: 智能转发组播报文的方法及系统
机译: 智能转发组播报文的方法及系统