背景技术
IRF(Intelligent Resilient Framework,智能弹性架构)技术可以将多台交换设备组合成一个高性能的整体,目的是以尽可能少的开销,获得尽可能高的网络性能和网络可用性。支持IRF技术的设备都具备三个重要特性:分布式设备管理(DDM)、分布式链路聚合(Distributed Link Aggregation,DLA;或Distributed Trunking,DT)和分布式弹性路由(DRR)。这三项技术是完成IRF技术目标不可缺少的环节。其中,DT用于提高传输链路的可用性和容量。
普通的链路聚合技术中,只有位于同一设备的端口才能加入同一聚合组中。与普通的链路聚合技术不同,分布式链路聚合技术通过使用私有协议可以实现将两台设备上的端口加入到同一分布式聚合组中,即跨设备聚合。相对于普通的链路聚合所提供的链路级故障保护,分布式链路聚合提供了设备级冗余保护。
如图1所示,是一种采用了分布式链路聚合的网络的组网示意图,为了描述方便,可以将该种网络称为分布式链路聚合网络。图1中,交换机SW2上的端口Port1和Port2,以及SW3上的端口Port4和Port5加入到了同一个分布式聚合组中;SW2上的端口Port3和SW3上的端口Port6加入到了同一个分布式聚合组中。分布式聚合的两台设备(即,用于实现分布式链路聚合的两台设备),例如,SW2和SW3,或,SW4和SW5之间需要提供以下两个专用链路:
a、数据同步链路(ISC链路):用于设备间交互控制报文,同时还用于跨设备数据流的转发;两台设备之间只能配置一条ISC链路;ISC链路两端的端口称为ISC端口,ISC端口可以是普通端口,也可以是聚合组。
b、保活链路(Layer3peer-keepalive链路):用于在ISC链路发生故障时,通过发送保活消息来判断故障类型是ISC链路故障还是对端设备故障。
分布式链路聚合网络的二层转发模型是将分布式聚合的两台设备看作同一台设备,共享MAC(Media Access Control,媒体访问控制)转发表和影响转发的数据(例如,DHCP Snooping(Dynamic Host Configuration Protocol Snooping,动态主机配置协议窥探)表项等)。对于出接口是一个分布式聚合组的DT端口的数据流,优先从本地DT端口转发,只有当本地没有属于该分布式聚合组的UP(可用)的DT端口时,才通过ISC端口转发给对端设备实现跨设备转发。分布式链路聚合网络中禁止运行STP(Spanning Tree Protocol,生成树协议)协议,保证无环路,同时通过私有的环路检测协议来检测网络中的环路。
其中,分布式聚合组中的每一个成员端口称为DT端口。对于分布式聚合的两台设备中的任意一台设备而言,若该设备上属于某一个分布式聚合组的DT端口有多个,则会将这多个DT端口加入到一个聚合组中,为了区别于分布式聚合组,可以称该聚合组为本地聚合组,该本地聚合组的ID与该分布式聚合组的ID无关。
在分布式链路聚合技术中,非单播数据流的转发所遵循的原则是:从ISC端口收到的非单播数据报文禁止在DT端口转发,避免出现一份报文被复制多份转发的情况。而,单播数据流的转发所遵循的原则是:
a、分布式聚合的两台设备互相同步学习到的MAC地址信息;
具体的,设备1从分布式聚合组中的一个DT端口(记为DT端口1)上学习到一个MAC地址信息(记为MAC1)后,在MAC转发表中添加一个包含有MAC1及其对应的出接口的表项,其中,当本设备上属于该分布式聚合组的DT端口只有DT端口1这一个时,该出接口即为DT端口1(具体为DT端口1的端口ID),当本设备上属于该分布式聚合组的DT端口有多个时,该出接口即为这多个DT端口组成的本地聚合组(具体为这多个DT端口所属的本地聚合组的ID);然后,将MAC1携带在MAC同步消息中通过保活链路发送给设备2,其中,该MAC同步消息中还携带有分布式聚合组1的ID:1。
设备2收到该MAC同步消息后,根据该消息中的分布式聚合组的ID:1,确定出本设备上属于分布式聚合组1的DT端口;在MAC转发表中添加一个包含有MAC1及其对应的出接口的表项,其中,当本设备上属于分布式聚合组1的DT端口只有一个时,该出接口即为该DT端口,当本设备上属于分布式聚合组1的DT端口有多个时,该出接口即为这多个DT端口组成的本地聚合组。如果设备2发现本设备上属于分布式聚合组1的所有DT端口均处于DOWN(不可用)状态,则将MAC1学习到ISC端口上。
b、出接口是一个分布式聚合组的DT端口的数据流,优先从本地DT端口转发,只有当本地没有属于该分布式聚合组的UP的DT端口时,才从ISC端口发送给对端设备,由对端设备转发出去。
例如,SW2接收到单播数据报文后,根据该单播数据报文的目的MAC地址,在MAC转发表中查找对应的出接口,假设查找到的出接口为分布式聚合组1的DT端口Port3,那么,若Port3处于UP状态,则优先通过Port3转发该单播数据报文,若Port3处于DOWN状态,且本设备上属于分布式聚合组1的端口只有Port3这一个,则将该单播数据报文通过ISC端口转发给SW3,由SW3查表转发该单播数据报文。
在现有技术中,当分布式聚合的两台设备中的一台设备(为了便于描述,记为设备1)上的属于某一个分布式聚合组的所有DT端口均变为DOWN状态时,即,若本设备上属于该分布式聚合组的DT端口只有一个,且该DT端口处于DOWN状态,或,本设备上属于该分布式聚合组的DT端口有多个,且这多个DT端口均处于DOWN状态,此时,需要执行以下操作流程:
步骤S102,设备1将MAC转发表中包含有该故障的DT端口的表项删除,然后,通过ISC端口向对端设备(为了便于描述,记为设备2)发送携带有该故障的DT端口所属的分布式链路聚合组ID(为了便于描述,记为分布式链路聚合组1)的通知消息;
步骤S104,设备2收到该通知消息后,确定出本设备上属于分布式链路聚合组1的DT端口(为了便于描述,记为DT端口1),将MAC转发表中包含有该DT端口1的表项中的MAC地址信息携带在MAC同步消息中并通过ISC端口发送给设备1;
步骤S106,设备1收到该MAC同步消息后,将该消息中的MAC地址信息添加到MAC转发表中,并且,将这些MAC地址信息对应的出接口均设置为ISC端口。
经过以上流程后,设备1才能够将原本应该从故障的DT端口转发的数据流,通过ISC端口转发给设备2,由设备2转发出去。
上述流程存在以下几个问题:
(1)设备1需要删除MAC转发表中包含有该故障的DT端口的所有表项,删除表项的过程比较耗费时间,影响数据流切换性能;
(2)在删除了MAC转发表中包含有该故障的DT端口的所有表项之后,以及在收到设备2同步过来的MAC同步消息之前的这段时间内,由于在MAC转发表中查找不到匹配表项,设备1会将单播报文做广播处理,浪费了网络带宽资源;
(3)如果DT端口在UP状态和DOMN状态之间多次切换,则会导致MAC转发表项来回震荡,影响CPU(Central Processing Unit,中央处理器)的处理性能和数据的正常转发。
具体实施方式
为了解决现有技术中存在的比较耗费时间,影响数据流切换性能,浪费网络带宽资源,影响CPU的处理性能和数据的正常转发的问题,本申请以下实施例中提供了一种分布式链路聚合网络中的数据流处理方法,以及一种可以应用该方法的装置。
本申请以下实施例的分布式链路聚合网络中分布式聚合的两个网络设备通过ISC链路相连,例如,这两个网络设备可以是图1中的SW2和SW3,或者是SW4和SW5,且这两个网络设备中的每一个网络设备上至少有一个端口加入到同一个分布式聚合组中。
并且,以下实施例中以这两个网络设备中的任一个网络设备上的一个分布式聚合组为例进行说明,显然,当存在多个分布式聚合组时,这多个分布式聚合组中的每一个均按照以下实施例的方法来执行即可。
实施例一
本申请实施例一的分布式链路聚合网络中的数据流处理方法可以应用于分布式聚合的两台设备中的任一个。如图2所示,该方法包括以下步骤:
步骤S202,接收到单播报文之后,根据MAC转发表确定该单播报文的出接口;
在步骤S202中,当接收到单播报文之后,可以根据该单播报文的目的MAC地址等信息,在MAC转发表中查找对应的出接口。该步骤为现有技术,这里不再赘述。
步骤S204,若确定出该单播报文的出接口为特定端口,则按照预设的ACL(访问控制列表)规则将该单播报文重定向至预设的特定二层组播组表项,根据特定二层组播组表项的出接口列表转发该单播报文;
在实际实施过程中,针对该分布式聚合组,预先设置ACL规则,该ACL规则中包括:匹配条件和执行动作,其中,该匹配条件为出接口为特定端口的单播报文,执行动作为将该单播报文重定向(或指向)索引号为N的特定二层组播组表项。N的值可以根据实际情况进行设置,本申请对此不做限定。
在实际实施过程中,对于一个分布式聚合组,网络设备上属于该分布式聚合组的DT端口可能只有一个(该种情况称为情况一),也可能有多个(该种情况称为情况二),当有多个时,这多个DT端口又加入到了一个本地聚合组中,该本地聚合组的聚合组ID与该分布式聚合组的聚合组ID无关。
这样,在情况一中,特定端口为第一DT端口,特定二层组播组表项的出接口列表为第一DT端口;在实际实施时,第一DT端口以端口ID标识。在情况一中,由于特定二层组播组表项的出接口列表为第一DT端口,因此,在步骤S204中根据特定二层组播组表项的出接口列表转发该单播报文的方式是:通过第一DT端口转发该单播报文。
在情况二中,特定端口为该至少两个DT端口组成的本地聚合组,特定二层组播组表项的出接口列表为该至少两个DT端口;在实际实施时,本地聚合组以聚合组ID标识。在情况二中,由于特定二层组播组表项的出接口列表为本地聚合组中的该至少两个DT端口,因此,在步骤S204中根据特定二层组播组表项的出接口列表转发该单播报文的方式是:根据预定算法从该至少两个DT端口中选择一个DT端口,通过选中的DT端口转发该单播报文。该方式为现有技术,这里不再赘述。
步骤S206,当特定端口变为DOWN(不可用)状态时,将特定二层组播组表项的出接口列表修改为本设备上连接ISC链路的ISC端口。
在步骤S206中,当为情况一时,由于特定端口就是一个DT端口:第一DT端口,因此,特定端口变为DOWN状态,即为第一DT端口变为DOWN状态;当为情况二时,由于特定端口为该至少两个DT端口组成的本地聚合组,因此,特定端口变为DOWN状态,即为该至少两个DT端口全部变为DOWN状态。
下面分别情况一和情况二加以详细地介绍。
(1)情况一
当本设备上属于该分布式聚合组的DT端口只有一个第一DT端口时,特定端口为第一DT端口,特定二层组播组表项的出接口列表为第一DT端口;在实际实施时,第一DT端口以端口ID标识。
这样,分布式链路聚合网络中的数据流处理方法包括以下步骤:
步骤S302,同步骤S202;
步骤S304,若确定出该单播报文的出接口为第一DT端口,则按照预设的ACL规则将该单播报文重定向至预设的特定二层组播组表项,根据特定二层组播组表项的出接口列表,即第一DT端口转发该单播报文;
该步骤S304对应于步骤S204。
例如,该ACL规则的内容可以是:匹配条件为出接口为第一DT端口的单播报文,执行动作为重定向至索引号为N的特定二层组播组表项,该特定二层组播组表项可以如表1-1所示:
表1-1
表1-1中,N的值可以根据实际情况进行设置,本申请对此不做限定。
在步骤S304中,若确定出单播报文的出接口为第一DT端口,则将该单播报文重定向至如表1-1所示的索引号为N的特定二层组播组表项,然后,通过该特定二层组播组表项的出接口列表中的第一DT端口转发该单播报文。
步骤S306,当第一DT端口变为DOWN状态时,将特定二层组播组表项的出接口列表修改为本设备上连接ISC链路的ISC端口。
该步骤S306对应于步骤S206。
例如,当第一DT端口变为DOWN状态时,将如表1-1所示的特定二层组播组表项的出接口列表修改为本设备上连接ISC链路的ISC端口之后,该特定二层组播组表项更新为如表1-2所示:
表1-2
此时,在接收到单播报文之后,仍然按照步骤S302-S304执行,其中,在步骤S304中会根据如表1-2所示的特定二层组播组表项的出接口列表转发该单播报文,即,通过本设备上连接ISC链路的ISC端口转发该单播报文,从而可以通过ISC链路转发给对端设备,由对端设备对该单播报文进行查表转发,实现了跨设备转发。这样,当本地DT端口DOWN时,可以将数据流切换到ISC链路,避免了数据流的中断。
另外,在步骤S306之后,当第一DT端口从DOWN状态变为UP(可用)状态时,将如表1-2所示的特定二层组播组表项的出接口列表修改为第一DT端口,此时,特定二层组播组表项恢复为如表1-1所示。之后,在接收到单播报文后,仍然按照步骤S302-S304进行转发,其中,在步骤S304中会根据如表1-1所示的特定二层组播组表项的出接口列表转发该单播报文,即,通过第一DT端口转发该单播报文,实现本地转发。这样数据流就从ISC链路切换回了本地DT端口。
(2)情况二
当本设备上属于该分布式聚合组的DT端口有至少两个时,特定端口为该至少两个DT端口组成的本地聚合组,特定二层组播组表项的出接口列表为该至少两个DT端口;在实际实施时,本地聚合组以聚合组ID标识。
这样,分布式链路聚合网络中的数据流处理方法包括以下步骤:
步骤S402,同步骤S202;
步骤S404,若确定出该单播报文的出接口为本地聚合组时,按照预设的ACL规则将该单播报文重定向至预设的特定二层组播组表项,根据特定二层组播组表项的出接口列表转发该单播报文,即,根据预定算法从该至少两个DT端口中选择一个DT端口,通过选中的DT端口转发该单播报文;
该步骤对应于步骤S204。
例如,本设备上属于该分布式聚合组的DT端口有M(M≥2)个,记为:Port1,Port2,Port3,…,PortM,这M个DT端口加入到了一个本地聚合组(该本地聚合组的聚合组ID记为1)中,则,该ACL规则的内容可以是:匹配条件为出接口为聚合组ID1的单播报文,执行动作为重定向至索引号为N的特定二层组播组表项,如表2-1所示:
表2-1
索引号 |
出接口列表 |
N |
Port1,Port2,Port3,…,PortM |
表2-1中,N的值可以根据实际情况进行设置,本申请对此不做限定。
根据如表2-1所示的特定二层组播组表项的出接口列表转发该单播报文的方式具体为:对该单播报文的报文头中的相关信息进行Hash(哈希)运算得到一个运算值(记为KEY),然后,计算S=KEY%M(%表示求模运算符)的值,根据S的值(S=0,1,…(M-1))从M个DT端口中选择一个DT端口,通过选择的DT端口转发该单播报文。例如,当S=0时,选择出接口列表中的第一个DT端口,当S=1时,选择出接口列表中的第二个DT端口,以此类推,即,S的值决定了所选的DT端口在出接口列表中的相对位置。其中,相关信息可以是以下一种或多种的组合:源MAC地址、目的MAC地址、VLAN等。
在步骤S404中,若确定出单播报文的出接口为聚合组ID1所标识的本地聚合组,则将该单播报文重定向至如表2-1所示的索引号为N的特定二层组播组表项,然后,按照以上转发方式从Port1,Port2,Port3,…,PortM中选择一个DT端口,通过选中的DT端口转发该单播报文。
步骤S406,当本设备上属于该分布式聚合组的一个DT端口变为DOWN状态时,即,本地聚合组中的一个DT端口变为DOWN状态时,判断本设备上属于该分布式聚合组的DT端口中是否还有处于UP状态的其他DT端口,即,判断本地聚合组中是否还有处于UP状态的其他DT端口,若有,则执行步骤S408,否则,执行步骤S410;
步骤S408,从特定二层组播组表项的出接口列表中删除该变为DOWN状态的DT端口;
假设,在步骤S406中变为DOWN状态的DT端口记为Port2,在Port2变为DOWN状态时的特定二层组播组表项如表2-1所示,则,从Port1,Port2,Port3,…,PortM中删除Port2。此时,特定二层组播组表项更新为如表2-2所示:
表2-2
索引号 |
出接口列表 |
N |
Port1,Port3,…,PortM |
在接收到单播报文后,仍然按照步骤S402-S404进行转发,其中,在步骤S404中会根据如表2-2所示的特定二层组播组表项的出接口列表转发该单播报文,即,按照以上转发方式从Port1,Port3,…,PortM中选择一个DT端口,通过选中的DT端口转发该单播报文。这样,数据流会自动从DOWN状态的DT端口移除,转移到UP状态的DT端口上。
步骤S410,说明本设备上属于该分布式聚合组中的所有DT端口(即本地聚合组中的所有DT端口)都变为DOWN状态了,假设,本地聚合组中的Port2在变为DOWN状态之前,只有Port2处于UP状态,而在步骤S406中,Port2也变为DOWN状态,在Port2变为DOWN状态时的特定二层组播组表项如表2-3所示,则,将如表2-3所示的特定二层组播组表项的出接口列表修改为本设备上连接ISC链路的ISC端口,此时,该特定二层组播组表项更新为如表2-4所示:
表2-3
表2-4
步骤S406和步骤S410对应于步骤S206。
此时,在接收到单播报文之后,仍然按照步骤S402-S404执行,其中,在步骤S404中会根据如表2-4所示的特定二层组播组表项的出接口列表转发该单播报文,即,通过本设备上连接ISC链路的ISC端口转发该单播报文,从而可以通过ISC链路转发给对端设备,由对端设备对该单播报文进行查表转发,实现了跨设备转发。这样,当本地全部DT端口均DOWN时,可以将数据流切换到ISC链路,避免了数据流的中断。
另外,在上述方法中还包括以下步骤:
步骤S502,当本设备上属于该分布式聚合组的一个DT端口从DOWN状态变为UP状态(为了描述方便,将该变为UP状态的DT端口记为PortM)时,即,本地聚合组中的一个DT端口从DOWN状态变为UP状态时,判断本设备上属于该分布式聚合组的DT端口中是否还有处于UP状态的其他DT端口,即,判断本地聚合组中是否还有处于UP状态的其他DT端口,若没有,则执行步骤S504,否则,执行步骤S506;
步骤S504,说明在PortM从DOWN状态变为UP状态之前,Port1,Port2,Port3,…,PortM全部变为了DOWN状态,此时的特定二层组播组表项如表2-4所示;PortM是第一个变为UP状态的DT端口,则,将如表2-4所示的特定二层组播组表项的出接口列表修改为PortM,该特定二层组播组表项更新为如表2-5所示:
表2-5
此时,在接收到单播报文之后,仍然按照步骤S402-S404执行,其中,在步骤S404中会根据如表2-5所示的特定二层组播组表项的出接口列表转发该单播报文,即,通过唯一处于UP状态的PortM转发该单播报文,从而数据流就从ISC链路切换回了本地DT端口。
步骤S506,说明在PortM从DOWN状态变为UP状态之前,已经有一些DT端口变为了UP状态或一直保持UP状态,假设,此时的特定二层组播组表项如表2-6所示,则,在特定二层组播组表项的出接口列表中添加PortM后,该特定二层组播组表项更新为如表2-7所示:
表2-6
索引号 |
出接口列表 |
N |
Port1,Port2,Port3,Port4 |
表2-7
索引号 |
出接口列表 |
N |
Port1,Port2,Port3,Port4,PortM |
此时,在接收到单播报文之后,仍然按照步骤S402-S404执行,其中,在步骤S404中会根据如表2-7所示的特定二层组播组表项的出接口列表转发该单播报文,即,按照以上转发方式从本地聚合组中所有处于UP状态的DT端口Port1,Port2,Port3,Port4,PortM中选择一个DT端口,通过选中的DT端口转发该单播报文。
本申请以上实施例的方法中,对于报文的源MAC地址的学习没有进行任何改变,即,在情况一中,从第一DT端口上接收到的报文,报文的源MAC地址仍然学习到该第一DT端口上,即,在MAC转发表中添加的表项仍然是该源MAC地址和第一DT端口的端口ID;在情况二中,从一个DT端口上接收到的报文,报文的源MAC地址仍然学习到本地聚合组(即,本设备上属于该分布式聚合组的多个DT端口组成的本地聚合组)上,即,在MAC转发表中添加的表项仍然是该源MAC地址和该本地聚合组的聚合组ID。
在本申请以上实施例的技术方案中,在分布式聚合的两台网络设备中的任意一台上预先针对分布式聚合组设置ACL规则,在接收到单播报文,并确定出该单播报文的出接口为特定端口后,按照该ACL规则将该单播报文重定向至预设的特定二层组播组表项,根据该特定二层组播组表项的出接口列表转发该单播报文,其中,当本设备上属于该分布式聚合组的DT端口只有一个第一DT端口时,特定端口为第一DT端口,出接口列表为第一DT端口,当本设备上属于该分布式聚合组的DT端口有至少两个时,特定端口为该至少两个DT端口组成的本地聚合组,出接口列表为该至少两个DT端口;这样,对于出接口为特定端口的单播报文,将匹配该ACL规则,重定向至该特定二层组播组表项,并按照该表项的出接口列表进行转发,由于该表项的出接口列表就是该特定端口,所以,接收到的单播报文仍然会从该特定端口转发出去。另外,当特定端口变为DOWN状态时,即,第一DT端口DOWN或本地聚合组中的全部DT端口DOWN,将该特定二层组播组表项的出接口列表修改为本设备上连接ISC链路的ISC端口,这样,在接收到单播报文,并确定出该单播报文的出接口为特定端口后,匹配该ACL规则,将该单播报文重定向至该特定二层组播组表项,并按照该表项的出接口列表进行转发,由于出接口列表已经修改为ISC端口,从而可以将该单播报文通过ISC端口转发给对端设备,实现了数据流切换到ISC链路的跨设备转发。通过以上技术方案,由于接收到的单播报文确定出出接口是特定端口后,还需要匹配ACL规则,按照ACL规则所指向的特定二层组播组表项中的出接口列表转发,在本设备上属于该分布式聚合组的全部DT端口都DOWN后,无需删除包含该特定端口的MAC转发表项,也无需等待对端设备同步MAC地址信息,而且,DT端口的状态改变也无需影响到MAC转发表项,只需将特定二层组播组表项中的出接口列表修改为ISC端口就可以实现单播报文的出接口的变更,从而节约了时间和网络带宽资源,提高了设备故障时的切换性能,满足了设备高可靠性的需求;另外,该方法设置简单,可以满足10ms的链路快速切换性能。
在以上实施例中,当本设备上属于该分布式聚合组的DT端口有至少两个,这至少两个DT端口均变为DOWN状态时,这至少两个DT端口组成的本地聚合组才变为DOWN状态;当这至少两个DT端口中有至少一个DT端口处于UP状态时,该本地聚合组仍为UP状态。
实施例二
以图1所示的分布式链路聚合网络中的SW2为例,说明以上实施例一中的方法。在图1中,交换机SW2上的端口Port1和Port2,以及SW3上的端口Port4和Port5加入到了同一个分布式聚合组1中;SW2上的端口Port3和SW3上的端口Port6加入到了同一个分布式聚合组2中。SW2与SW3之间连接有ISC链路,SW2上连接该ISC链路的ISC端口为ISCPort1,SW3上连接该ISC链路的ISC端口为ISCPort2。
针对分布式聚合组1,SW2执行的方法包括:
步骤S602,设置ACL规则,该ACL规则的匹配条件为出接口为以聚合组ID3标识的本地聚合组的单播报文,执行动作为重定向至索引号为N1的特定二层组播组表项,如表3-1所示;
SW2上属于分布式聚合组1的DT端口Port1和Port2加入到了一个本地聚合组中,该本地聚合组的ID记为3。
表3-1
步骤S604,在接收到单播报文,并确定出该单播报文的出接口为以聚合组ID3标识的本地聚合组后,匹配该ACL规则,将该单播报文重定向至如表3-1所示的特定二层组播组表项,从该特定二层组播组表项的出接口列表中的Port1,Port2中选择一个,将该单播报文通过选中的DT端口转发出去。
步骤S606,当Port1变为DOWN状态后,由于此时Port2仍然为UP状态,则将如表3-1所示的特定二层组播组表项更新为如表3-2所示:
表3-2
此时,若接收到为以聚合组ID3标识的本地聚合组的单播报文,该单播报文就只能通过Port2转发出去。
之后,若是Port2也变为了DOWN状态,则,将如表3-2所示的特定二层组播组表项更新为如表3-3所示:
表3-3
此时,若接收到出接口为以聚合组ID3标识的本地聚合组的单播报文,该单播报文就会通过ISCPort1转发给SW3,由SW3转发出去。
步骤S608,当Port1变为UP状态后,如果此时Port2处于DOWN状态,则将如表3-3所示的特定二层组播组表项更新为如表3-4所示:
表3-4
此时,若接收到出接口为以聚合组ID3标识的本地聚合组的单播报文,该单播报文就会通过Port1转发出去。
之后,当Port2也变为UP状态时,将如表3-4所示的特定二层组播组表项更新为如表3-1所示。
此时,若接收到出接口为以聚合组ID3标识的本地聚合组的单播报文,就会从Port1和Port2中选择一个DT端口,该单播报文会通过选中的DT端口转发出去。
针对分布式聚合组2,SW2执行的方法包括:
步骤S702,设置ACL规则,该ACL规则的匹配条件为出接口为Port3的单播报文,执行动作为重定向至索引号为N2的特定二层组播组表项,如表4-1所示;
表4-1
步骤S704,在接收到单播报文,并确定出该单播报文的出接口为Port3后,匹配该ACL规则,将该单播报文重定向至如表4-1所示的特定二层组播组表项,将该单播报文通过Port3转发出去。
步骤S706,当Port3变为DOWN状态后,由于本设备上属于分布式聚合组2的DT端口只有Port3这一个,因此,将如表4-1所示的特定二层组播组表项更新为如表4-2所示:
表4-2
此时,若接收到出接口为Port3的单播报文,该单播报文就会通过ISCPort1转发给SW3,由SW3转发出去。
步骤S708,当Port3变为UP状态后,将如表4-2所示的特定二层组播组表项更新为如表4-1所示。
此时,接收到出接口为Port3的单播报文,该单播报文就会通过Port3转发出去。
实施例三
本申请实施例提出一种数据流处理方案,来实现本设备上属于一个分布式聚合组的所有DT端口DOWN时的数据流快速切换,并且,解决现有技术中存在的比较耗费时间,影响数据流切换性能,浪费网络带宽资源,影响CPU的处理性能和数据的正常转发的问题。
以软件实现为例,在一种优选的实施方式中,本申请实施例提供了一种可应用于分布式链路聚合网络中分布式聚合的两个网络设备中的任一个网络设备上的数据流处理装置。
如图3所示,该数据流处理装置10中包括以下模块:接收模块101、出接口确定模块102、执行模块103和修改模块104,其中:
接收模块101,用于接收单播报文;
出接口确定模块102,用于在接收模块101接收到单播报文之后,根据MAC转发表确定该单播报文的出接口;
执行模块103,用于若出接口确定模块102确定出该单播报文的出接口为特定端口,则按照预设的ACL规则将该单播报文重定向至预设的特定二层组播组表项,根据特定二层组播组表项的出接口列表转发该单播报文;其中,当本设备上属于该分布式聚合组的DT端口只有一个第一DT端口时,特定端口为第一DT端口,出接口列表为第一DT端口;当本设备上属于该分布式聚合组的DT端口有至少两个时,特定端口为该至少两个DT端口组成的本地聚合组,出接口列表为该至少两个DT端口;
修改模块104,用于当特定端口变为DOWN状态时,将特定二层组播组表项的出接口列表修改为本设备上连接ISC链路的ISC端口。
其中,本设备上属于该分布式聚合组的DT端口有至少两个,则,当该至少两个DT端口均变为DOWN状态时,该至少两个DT端口组成的本地聚合组变为DOWN状态。
若本设备上属于该分布式聚合组的DT端口只有一个第一DT端口,则,修改模块,还用于当第一DT端口从DOWN状态变为UP状态时,将特定二层组播组表项的出接口列表修改为第一DT端口。
若本设备上属于该分布式聚合组的DT端口有至少两个,则,该装置还包括:判断模块和删除模块,其中:
判断模块,用于当本地聚合组中的一个DT端口变为DOWN状态时,判断本地聚合组中是否还有处于UP状态的其他DT端口;
删除模块,用于若判断模块在本地聚合组中的一个DT端口变为DOWN状态时,判断出本地聚合组中还有处于UP状态的其他DT端口,则从特定二层组播组表项的出接口列表中删除该变为DOWN状态的DT端口。
若本设备上属于该分布式聚合组的DT端口有至少两个,则,装置还包括:添加模块,其中:
判断模块,还用于当本地聚合组中的一个DT端口从DOWN状态变为UP状态时,判断本地聚合组中是否还有处于UP状态的其他DT端口;
修改模块,还用于若判断模块在本地聚合组中的一个DT端口从DOWN状态变为UP状态时,判断出本地聚合组中没有处于UP状态的其他DT端口,则将特定二层组播组表项的出接口列表修改为该变为UP状态的DT端口;
添加模块,用于若判断模块在本地聚合组中的一个DT端口从DOWN状态变为UP状态时,判断出本地聚合组中还有处于UP状态的其他DT端口,则在特定二层组播组表项的出接口列表中添加该变为UP状态的DT端口。
本申请实施例并不排除硬件或者软硬件结合的实施方式。请参考图3所示,该数据流处理装置作为一个逻辑意义上的装置,其是通过所述网络设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了CPU、内存以及非易失性存储器之外,该网络设备通常还包括一些负责处理报文处理的硬件,比如转发芯片等等;从硬件结构上来讲,该网络设备还可能是分布式的设备,其可能包括多个接口卡以在硬件层面进行报文处理的扩展。
综上,本申请以上实施例可以达到以下技术效果:
在本申请以上实施例的技术方案中,在分布式聚合的两台网络设备中的任意一台上预先针对分布式聚合组设置ACL规则,在接收到单播报文,并确定出该单播报文的出接口为特定端口后,按照该ACL规则将该单播报文重定向至预设的特定二层组播组表项,根据该特定二层组播组表项的出接口列表转发该单播报文,其中,当本设备上属于该分布式聚合组的DT端口只有一个第一DT端口时,特定端口为第一DT端口,出接口列表为第一DT端口,当本设备上属于该分布式聚合组的DT端口有至少两个时,特定端口为该至少两个DT端口组成的本地聚合组,出接口列表为该至少两个DT端口;这样,对于出接口为特定端口的单播报文,将匹配该ACL规则,重定向至该特定二层组播组表项,并按照该表项的出接口列表进行转发,由于该表项的出接口列表就是该特定端口,所以,接收到的单播报文仍然会从该特定端口转发出去。另外,当特定端口变为DOWN状态时,即,第一DT端口DOWN或本地聚合组中的全部DT端口DOWN,将该特定二层组播组表项的出接口列表修改为本设备上连接ISC链路的ISC端口,这样,在接收到单播报文,并确定出该单播报文的出接口为特定端口后,匹配该ACL规则,将该单播报文重定向至该特定二层组播组表项,并按照该表项的出接口列表进行转发,由于出接口列表已经修改为ISC端口,从而可以将该单播报文通过ISC端口转发给对端设备,实现了数据流切换到ISC链路的跨设备转发。通过以上技术方案,由于接收到的单播报文确定出出接口是特定端口后,还需要匹配ACL规则,按照ACL规则所指向的特定二层组播组表项中的出接口列表转发,在本设备上属于该分布式聚合组的全部DT端口都DOWN后,无需删除包含该特定端口的MAC转发表项,也无需等待对端设备同步MAC地址信息,而且,DT端口的状态改变也无需影响到MAC转发表项,只需将特定二层组播组表项中的出接口列表修改为ISC端口就可以实现单播报文的出接口的变更,从而节约了时间和网络带宽资源,提高了设备故障时的切换性能,满足了设备高可靠性的需求;另外,该方法设置简单,可以满足10ms的链路快速切换性能。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。