链路聚合的实现方法及装置与流程

文档序号:12477945阅读:968来源:国知局
链路聚合的实现方法及装置与流程

本申请涉及网络通信技术领域,特别涉及一种链路聚合的实现方法及装置。



背景技术:

链路聚合(Link Aggregation)是指将网络设备上的多个物理端口捆绑在一起,成为一个逻辑端口,以实现出/入流量在各个物理端口中的负荷分担。具体的,将1个或多个物理端口添加到一个聚合组中,该聚合组由聚合组ID(即Trunk ID)唯一标识,该聚合组中的物理端口称为该聚合组的成员端口。

网络设备中支持链路聚合的芯片硬件资源是有限的,一般情况下,芯片支持的成员端口总数是一定的,支持的聚合组总数与每个聚合组可容纳的最大成员端口数的关系如下:

成员端口总数=聚合组总数*每个聚合组可容纳的最大成员端口数

例如,芯片支持的成员端口总数是16K,这样,聚合组总数与每个聚合组可容纳的最大成员端口数可以为:聚合组总数为2K,每个聚合组可容纳的成员端口数为8;或者,聚合组总数为1K,每个聚合组可容纳的成员端口数为16。

在实际应用中,由于大部分的聚合组实际包含的成员端口数较少,例如,聚合组中仅包含6个、4个、甚至更少的成员端口,这样,为了节省成员端口资源,此时通常会增大聚合组总数,从而减少每个聚合组可容纳的成员端口数,例如,网络设备的缺省配置为聚合组总数为1K,每个聚合组可容纳的成员端口数为16,修改配置为聚合组总数为2K,每个聚合组可容纳的成员端口数为8。但是,这样就无法满足某些聚合组需要包含较多的成员端口的需求。



技术实现要素:

有鉴于此,本申请提供一种链路聚合的实现方法及装置。

具体地,本申请是通过如下技术方案实现的:

一方面,提供了一种链路聚合的实现方法,该方法包括:

确定用户聚合组的成员端口数M,当M大于N时,确定需要创建的硬件聚合组的数量z,其中,N表示硬件聚合组可容纳的最大成员端口数,z为正整数、且

将用户聚合组中的M个成员端口的标识ID循环排列,得到z*N个端口ID;

创建z个硬件聚合组,将z*N个端口ID平均的划分到z个硬件聚合组中;

若与用户聚合组相对应的是第一硬件聚合组,则创建包含z个硬件聚合组的一个FEC,解除用户聚合组与第一硬件聚合组的对应关系,建立用户聚合组与FEC的对应关系,将转发表项中包含的第一硬件聚合组的ID更新为FEC的ID。

另一方面,还提供了一种链路聚合的实现装置,该装置包括:

判断单元,用于确定用户聚合组的成员端口数M,判断M是否大于N,其中,N表示硬件聚合组可容纳的最大成员端口数;

计算单元,用于当判断单元的判断结果是M大于N时,确定需要创建的硬件聚合组的数量z,其中,z为正整数、且

排列单元,用于将用户聚合组中的M个成员端口的标识ID循环排列,得到z*N个端口ID;

划分单元,用于创建z个硬件聚合组,将z*N个端口ID平均的划分到z个硬件聚合组中;

处理单元,用于若与用户聚合组相对应的是第一硬件聚合组,则创建包含z个硬件聚合组的一个FEC,解除用户聚合组与第一硬件聚合组的对应关系,建立用户聚合组与FEC的对应关系,将转发表项中包含的第一硬件聚合组的ID更新为FEC的ID。

通过本申请的以上技术方案,通过为需要包含较多成员端口的用户聚合组构建FEC+Trunk(Trunk指的是硬件聚合组)的二级Hash结构,即,与用户聚合组对应的一个FEC指向多个硬件聚合组,每个硬件聚合组中又包含N个成员端口,从而,满足了某个用户聚合组能够包含更多成员端口的需求,通过这种方式可以任意扩展用户聚合组中包含的成员端口数量,对用户聚合组的设置更加灵活。

附图说明

图1是本申请一示例性实施例示出的向用户聚合组中添加2个成员端口时需要执行的处理流程图;

图2是本申请一示例性实施例示出的将17个成员端口port1~port17进行循环排列得到32个端口ID的示意图;

图3是将图2中的32个端口ID平均的划分到2个硬件聚合组中的示意图;

图4是按照图3所示的划分结果得到的FEC、Trunk、以及成员端口的关系示意图;

图5是本申请一示例性实施例示出的向用户聚合组中添加3个成员端口时需要执行的处理流程图;

图6是本申请一示例性实施例示出的将20个成员端口port1~port20进行循环排列得到32个端口ID的示意图;

图7是将图6中的32个端口ID平均的划分到2个硬件聚合组中的示意图;

图8是本申请一示例性实施例示出的当出接口为FEC时的报文转发流程图;

图9是本申请一示例性实施例示出的链路聚合的实现装置所在网络设备的硬件结构示意图;

图10是本申请一示例性实施例示出的链路聚合的实现装置的一种结构示意图;

图11是本申请一示例性实施例示出的链路聚合的实现装置的另一种结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

为了能够满足某个用户聚合组中包含更多的成员端口的需求,本申请以下实施例中提供了一种链路聚合的实现方法,在该方法中,确定用户聚合组的成员端口数M,当M大于N时,确定需要创建的硬件聚合组的数量z,其中,N表示硬件聚合组可容纳的最大成员端口数,z为正整数、且将用户聚合组中的M个成员端口的ID循环排列,得到z*N个端口ID;然后,创建z个硬件聚合组,将上述z*N个端口ID平均的划分到这z个硬件聚合组中;若与用户聚合组相对应的是第一硬件聚合组,则创建包含上述z个硬件聚合组的一个FEC(Forwarding Equivalence Class,转发等价类),解除用户聚合组与第一硬件聚合组的对应关系,建立用户聚合组与该FEC的对应关系,将转发表项中包含的第一硬件聚合组的ID更新为该FEC的ID。从而,通过为需要包含较多成员端口的用户聚合组构建FEC+Trunk(Trunk指的是硬件聚合组)的二级Hash结构,即,与用户聚合组对应的一个FEC指向多个硬件聚合组,每个硬件聚合组中又包含N个成员端口,从而,满足了某个用户聚合组能够包含更多成员端口的需求,通过这种方式可以任意扩展用户聚合组中包含的成员端口数量,对用户聚合组的设置更加灵活。

下面通过以下实例来详细说明上述链路聚合的实现方法。假设,芯片支持的成员端口总数是16K,缺省配置为硬件聚合组总数为1K,每个硬件聚合组可容纳的最大成员端口数为16,即N=16。

当用户需要创建聚合组时,可以通过配置方式进行创建,具体的,网络设备在接收到用于创建聚合组的配置信息之后,在软件层面上创建用户聚合组Trunk31,并在硬件层面上创建硬件聚合组Trunk32,建立用户聚合组Trunk31与硬件聚合组Trunk32的对应关系。在硬件转发芯片上配置对应的转发表项时,会将出接口设置为硬件聚合组Trunk32。

开始时,在向该用户聚合组Trunk31中添加成员端口时,由于添加后的成员端口数小于16,因此会按照现有技术将需要添加的成员端口添加到硬件聚合组Trunk32中。

后续,随着该用户聚合组Trunk31中的成员端口数逐渐增多,假设,当前该用户聚合组Trunk31中包含15个成员端口port1~port15,则再次向该用户聚合组Trunk31中添加成员端口时,例如,需要添加2个成员端口port16和port17,此时,该用户聚合组Trunk31中的成员端口数会增加为M=15+2=17,由于17大于16,则如图1所示,需要执行以下步骤:

步骤S101,按照以下公式(1)计算出需要创建的硬件聚合组数z=2;

<mrow> <mfrac> <mi>M</mi> <mi>N</mi> </mfrac> <mo>&le;</mo> <mi>z</mi> <mo>&lt;</mo> <mfrac> <mi>M</mi> <mi>N</mi> </mfrac> <mo>+</mo> <mn>1</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

步骤S102,将用户聚合组Trunk31中的17个成员端口的ID port1~port17进行循环排列,得到z*N=2*16=32个端口ID;

在步骤S102中,可以先按照预定顺序对上述17个成员端口的ID port1~port17进行排序,然后,对这17个端口ID进行循环排列得到32个端口ID。其中的预定顺序可以是编号从小到大的顺序,或者编号从大到小的顺序,或者其它顺序。

例如,如图2所示,这32个端口ID分别为port1、port2、port3、…、port16、port17、port1、port2、…、port15。

步骤S103,创建z=2个硬件聚合组Trunk41和Trunk42,将如图2所示的32个端口ID平均的划分到这2个聚合组中,从而每个硬件聚合组中包含16个成员端口;

如图3所示,在步骤S103中,将连续的16个成员端口ID划分到一个硬件聚合组中,其中,硬件聚合组Trunk41中包括16个成员端口port1、port2、port3、…、port16,硬件聚合组Trunk42中包括16个成员端口port17、port1、port2、…、port15。

步骤S104,创建包含硬件聚合组Trunk41和Trunk42的FEC51,解除用户聚合组Trunk31与硬件聚合组Trunk32的对应关系,建立用户聚合组Trunk31与FEC51的对应关系,将转发表项中包含的Trunk32更新为FEC51。

具体的,FEC51中包含2个不同的下一跳信息,其中一个下一跳信息设置为硬件聚合组Trunk41,另一个下一跳信息设置为硬件聚合组Trunk42。这样,如图4所示,该用户聚合组Trunk31对应于FEC51,FEC51指向了2个硬件聚合组Trunk41和Trunk42,每个硬件聚合组中又包含了16个成员端口。

另外,在步骤S104中还可以删除硬件聚合组Trunk32,从而释放其占用的硬件资源。

由上述步骤S101~步骤S104所示的方法可知,通过为该用户聚合组Trunk31构建FEC+Trunk的二级Hash结构,满足了某些用户聚合组包含更多成员端口的需求。另外,在M首次大于N时,由于此时与用户聚合组Trunk31相对应的是硬件聚合组Trunk32,因此,会执行步骤S104将与用户聚合组Trunk31相对应的硬件聚合组Trunk32更新为FEC51,并刷新硬件转发表项,以便按照刷新的转发表项中的FEC51转发报文。

之后,又需要向该用户聚合组Trunk31中添加3个成员端口port18、port19和port20,此时,该用户聚合组Trunk31的成员端口数会增加为M=17+3=20,由于20大于16,则如图5所示,需要执行以下步骤:

步骤S201,按照上述公式(1)计算出需要创建的硬件聚合组数z=2;

步骤S202,将用户聚合组Trunk31中的20个成员端口的ID port1~port20进行循环排列,得到z*N=2*16=32个端口ID;

在步骤S202中,可以先按照预定顺序对上述20个成员端口的ID port1~port20进行排序,然后,对这20个端口ID进行循环排列得到32个端口ID。

例如,如图6所示,这32个端口ID分别为port1、…、port16、port17、port18、port19、port20、port1、…、port12。

步骤S203,创建z=2个硬件聚合组Trunk43和Trunk44,将如图6所示的32个端口ID平均的划分到这2个硬件聚合组中,从而每个硬件聚合组中包含16个成员端口;

如图7所示,在步骤S203中,将连续的16个成员端口ID划分到一个硬件聚合组中,其中,硬件聚合组Trunk43中包括16个成员端口port1、port2、port3、…、port16,硬件聚合组Trunk44中包括16个成员端口port17、port18、port19、port20、port1、port2、port3、…、port12。

步骤S204,将FEC51更新为包含如图7所示的2个硬件聚合组Trunk43和Trunk44。具体的,由于FEC中包含的下一跳的个数没有发生改变,此时只需更新下一跳所指向的硬件聚合组即可。

由上述步骤S201~步骤S204所示的方法可知,后续再次需要向用户聚合组Trunk31中添加成员端口时,由于与该用户聚合组Trunk31相对应的是FEC51,因此,只需执行步骤S204对FEC51进行更新即可。

后续再向该用户聚合组Trunk31中添加成员端口时,只需按照上述步骤S201~步骤S204执行即可。

另外,在实际实施过程中,也需要从用户聚合组Trunk31中删除成员端口,假设,当前该用户聚合组Trunk31中包含21个成员端口port1~port21,则在从该用户聚合组Trunk31中删除1个成员端口port21时,该用户聚合组Trunk31的成员端口数会减少为M=21-1=20,由于20大于16,则需要执行如图5所示的步骤,最终,该用户聚合组Trunk31更新为包含如图7所示的2个硬件聚合组Trunk43和Trunk44。

后续还可以再次从该用户聚合组Trunk31中删除成员端口,这样,随着该用户聚合组Trunk31中的成员端口数逐渐减少,假设,当前该用户聚合组Trunk31中包含17个成员端口port1~port17,若需要从该用户聚合组Trunk31中删除2个成员端口port16和port17,删除后的成员端口数减少为M=17-2=15,由于15小于16,因此,需要删除FEC51以及FEC51中包含的所有硬件聚合组,创建包含15个成员端口port1~port15的硬件聚合组Trunk33,解除用户聚合组Trunk31与FEC51的对应关系,建立用户聚合组Trunk31与硬件聚合组Trunk33的对应关系,并将转发表项中包含的FEC51更新为Trunk33,以便按照刷新后的转发表项中的Trunk33进行报文转发。

如果还需要从该用户聚合组Trunk31中删除成员端口,此时,由于删除后的用户聚合组Trunk31的成员端口数小于16,则只需直接从硬件聚合组Trunk33中删除需要删除的成员端口即可。

基于上述实施例的方法,在接收到报文并进行查表转发时,若根据该报文的目的地址查找到的转发表项中的出接口为如图4所示的FEC51时,此时,需要按照如图8所示的流程进行报文转发:

步骤S301,根据该报文的相关信息,从FEC51包含的z=2个硬件聚合组Trunk41和Trunk42中,选择一个硬件聚合组,假设,选中的硬件聚合组为Trunk42;

其中,报文的相关信息可以为源IP地址、目的IP地址、源MAC地址、目的MAC地址、源端口、目的端口、传输层协议号等信息中的一种或多种的组合。

具体的选择方法可以是,对该报文的相关信息进行Hash运算得到Hash值,将该Hash值对z取模(即,该Hash值mod z)得到的取模结果,根据该取模结果即可确定选中的硬件聚合组。

步骤S302,根据该报文的相关信息,从选中的硬件聚合组Trunk42包含的N=16个成员端口中,选择一个成员端口,假设,选中的成员端口为port5;

其中,步骤S302中的相关信息同上。

具体的选择方法可以是,对该报文的相关信息进行Hash运算得到Hash值,将该Hash值对N取模(即,该Hash值mod N)得到的取模结果,根据该取模结果即可确定选中的成员端口。

步骤S303,通过选中的成员端口port5转发该报文。

与前述链路聚合的实现方法的实施例相对应,本申请还提供了链路聚合的实现装置的实施例。

本申请链路聚合的实现装置60的实施例可以应用在交换机等网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在网络设备的处理器10将非易失性存储器50中对应的计算机程序指令读取到内存40中运行形成的。从硬件层面而言,如图9所示,为本申请链路聚合的实现装置所在网络设备的一种硬件结构图,除了图9所示的处理器10、内部总线20、网络接口30、内存40、以及非易失性存储器50之外,实施例中装置所在的网络设备通常根据该网络设备的实际功能,还可以包括其他硬件,对此不再赘述。

请参考图10,本申请实施例的链路聚合实现装置60中包括以下单元:判断单元601、计算单元602、排列单元603、划分单元604和处理单元605,其中:

判断单元601,用于确定用户聚合组的成员端口数M,判断M是否大于N,其中,N表示硬件聚合组可容纳的最大成员端口数;

计算单元602,用于当判断单元602的判断结果是M大于N时,确定需要创建的硬件聚合组的数量z,其中,z为正整数、且

排列单元603,用于将用户聚合组中的M个成员端口的ID循环排列,得到z*N个端口ID;

划分单元604,用于创建z个硬件聚合组,将排列单元603得到的z*N个端口ID平均的划分到这z个硬件聚合组中;

处理单元605,用于若与用户聚合组相对应的是第一硬件聚合组,则创建包含上述z个硬件聚合组的一个FEC,解除用户聚合组与第一硬件聚合组的对应关系,建立用户聚合组与该FEC的对应关系,将转发表项中包含的第一硬件聚合组的ID更新为该FEC的ID。

其中,处理单元605,还用于若与用户聚合组相对应的是该FEC,则将该FEC更新为包含上述z个硬件聚合组。

其中,如图11所示,上述装置60中还包括:添加单元606,用于在判断单元601的判断结果是M不大于N时,若与用户聚合组相对应的是第一硬件聚合组,则在第一硬件聚合组中添加需要添加的成员端口。

其中,如图11所示,上述装置60中还包括:删除单元607,其中:

处理单元605,还用于在判断单元601的判断结果是M不大于N时,若与用户聚合组相对应的是该FEC,则创建包含M个成员端口的第二硬件聚合组,解除用户聚合组与该FEC的对应关系,建立用户聚合组与第二硬件聚合组的对应关系,将转发表项中包含的该FEC的ID更新为第二硬件聚合组的ID。

删除单元607,用于在判断单元601的判断结果是M不大于N时,若与用户聚合组相对应的是第二硬件聚合组,则从第二硬件聚合组中删除需要删除的成员端口。

其中,处理单元605,还用于在接收到用于创建聚合组的配置信息之后,创建用户聚合组和第一硬件聚合组,建立用户聚合组与第一硬件聚合组的对应关系。

如图11所示,上述装置60中还包括:选择单元608和发送单元609,其中:

选择单元608,用于在通过查找转发表项确定需要转发的报文的出接口为该FEC时,根据该报文的相关信息,从该FEC包含的z个硬件聚合组中,选择一个硬件聚合组;还用于根据该报文的相关信息,从选中的硬件聚合组包含的N个成员端口中,选择一个成员端口;

发送单元609,用于通过选择单元608选中的成员端口转发报文。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1