一种实现跨设备聚合的方法和设备
技术领域
本申请涉及通信技术领域,特别涉及一种实现跨设备聚合的方法和设备。
背景技术
在接入网络中,基于可靠性以及增加链路带宽的需求,服务器或者工作站需要多条链路接入到网络设备,而且需要多条链路都处于激活(Active)状态,能够同时使用。
满足该需求的常用方法就是链路聚合。在实际应用中,完成链路聚合的方法上,既有完全依赖配置的静态聚合,还有链路聚合控制(LinkAggregationControlProtocol,LACP)协议管理的动态聚合。服务器通过多链路聚合接入到接入设备,增加了单个服务器的网络接入带宽。多链路之间互为备份,增加纯链路级的可靠性。
参见图1,图1为服务器通过普通链路聚合多归属到一个接入设备的组网示意图。图1中服务器通过聚合链路接入到接入设备A,接入设备A和接入设备B是两个相互独立的设备。如果接入设备A故障,那么服务器就会完全失去网络连接,不能提供网络设备级的接入链路可靠性。
参见图2,图2为服务器通过普通链路聚合多归属到堆叠接入设备组网示意图。图2中,接入设备A和接入设备B进行横向堆叠,服务器通过多链路聚合接入到A、B组成的堆叠,增加了单个服务器的网络接入带宽,并且多链路之间互为备份,增强了设备级的链路可靠性。然而,接入设备A和接入设备B之间需要特殊的堆叠链路来完成堆叠,因此,接入设备A和接入设备B需要具有堆叠能力,进行链路堆叠,堆叠链路上数据封装一般为芯片厂家的特殊私有封装,接入设备之间的堆叠链路增加了设备成本以及维护成本。
由上可见,现有还未提出一种在节省设备成本和维护成本的情况下,提供网络设备级的接入链路的可靠性的方法。
发明内容
有鉴于此,本申请提供一种实现跨设备聚合的方法和设备,在节省设备成本和维护成本的情况下,提供网络设备级的接入链路的可靠性。
为解决上述技术问题,本发明的技术方案是这样实现的:
一种实现跨设备聚合的方法,该方法应用于包含多台接入设备的组网中的任一接入设备上,该组网中同级接入设备横向无连接,所述方法包括:
该接入设备将本接入设备以及其他同级接入设备上需要聚合的,且与下一级设备相连的端口,配置到同一聚合组中,使所述下一级设备通过聚合链路多归属到所述聚合组中的各端口所在的接入设备;
该接入设备接收到下一级设备发送的报文时,对该报文进行源媒体访问控制MAC地址学习,若接收该报文的端口为本地配置的聚合组中的端口,将学习到的下一级设备的MAC地址通过上行设备同步给该聚合组中的非本地端口所在的其他接入设备,使所述其他接入设备将所述同步的下一级设备的MAC地址学习到所述聚合组中的所述其他接入设备的端口上。
一种设备,可应用为包含多台接入设备的组网中的任一接入设备,该组网中同级接入设备横向无连接,该设备包括:配置单元、收发单元和学习单元;
所述配置单元,用于将本设备以及其他同级接入设备上需要聚合的,且与下一级设备相连的端口,配置到同一聚合组中,使所述下一级设备通过聚合链路多归属到所述聚合组中的各端口所在的接入设备;
所述收发单元,用于接收下一级设备发送的报文;若接收该报文的端口为所述配置单元本地配置的聚合组中的端口,将所述学习单元学习到的下一级设备的MAC地址通过上行设备同步给该聚合组中的非本地端口所在的其他接入设备,使所述其他接入设备将所述同步的下一级设备的MAC地址学习到所述聚合组中的所述其他接入设备的端口上;
所述学习单元,用于当所述收发单元接收到下一级设备发送的报文时,对该报文进行源媒体访问控制MAC地址学习。
综上所述,本申请通过接入设备获得本接入设备以及其他同级接入设备上需要聚合的,且与所述下一级设备相连的端口,并配置到同一聚合组中,使所述下一级设备通过聚合链路多归属到所述聚合组中的各端口所在的接入设备。在节省设备成本和维护成本的情况下,提供网络设备级的接入链路的可靠性。
附图说明
图1为服务器通过普通链路聚合多归属到一个接入设备的组网示意图;
图2为服务器通过普通链路聚合多归属到堆叠接入设备组网示意图;
图3文本发明具体实施例一中跨设备聚合方法流程示意图;
图4为本发明具体实施例中服务器通过跨设备的聚合链路聚合多归属到多台接入设备的组网示意图;
图5为本发明具体实施例三中对下行非单播报文的处理流程示意图;
图6为本发明具体实施例中应用于上述技术的设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明实施例中提出一种实现跨设备聚合的方法,该方法应用于包含多台接入设备的组网中的任一接入设备上,该组网中同级接入设备横向无连接。该接入设备获得本接入设备以及其他同级接入设备上需要聚合的,且与下一级设备相连的端口,并配置到同一聚合组中,使所述下一级设备通过聚合链路多归属到所述聚合组中的各端口所在的独立接入设备。在节省设备成本和维护成本的情况下,提供网络设备级的接入链路的可靠性。
该组网中同级接入设备横向无连接,即同级的接入设备之间不能直接通信,只能通过上行设备进行通信,上行设备可以是接入设备,也可以是汇聚设备。本发明具体实施例中,下一级设备通过聚合链路多归属到的多个接入设备,是各自独立的,即多归属到同一级接入设备。所述下一级设备可以为接入设备,也可以为服务器。
实施例一
参见图3,图3文本发明具体实施例一中跨设备聚合方法流程示意图。具体步骤为:
步骤301,组网中任一接入设备将本接入设备以及其他同级接入设备上需要聚合的,且与下一级设备相连的端口,配置到同一聚合组中,使所述下一级设备通过聚合链路多归属到所述聚合组中的各端口所在的接入设备。
下一级设备多归属到多台独立的即横向无连接的接入设备,而且多归属链路是聚合链路。该下一级设备同普通的单一设备上多链路聚合相同,该聚合链路可以是静态聚合,也可以是运行LACP协议形成的动态聚合。
如果是静态聚合,在各接入设备上配置聚合组,将需要聚合的、与所述下一级设备相连的端口配置到聚合组中,在下一级设备上的静态配置同现有实现。静态的下一级设备的网卡端口聚合,下一级设备按照通用的端口聚合处理,完成从下一级设备到网络的流量在聚合的网卡端口之间哈希选路,与接入设备不相关。
如果是运行LACP协议形成的动态聚合,则在下一级设备上的需要聚合的各端口上运行LACP协议,下一级设备的在需要聚合的各端口上分别向各接入设备发送LACP报文,各接入设备回应选中的端口,与下一级设备进行协商,完成链路的聚合。
步骤302,该接入设备接收到所述下一级设备发送的报文时,对该报文进行源MAC地址学习。
在对报文进行源MAC地址学习时,将该报文的源MAC地址,即下一级设备的MAC地址学习到接收该报文的端口上。若接收该报文的端口为配置的聚合组中的端口,且该聚合组中存在多个本地端口时,将该报文的源MAC地址学习到所述聚合组中的所有本地端口上。
如果一个聚合组中存在多个本地端口,说明该下一级设备通过多条聚合链路多归属到本接入设备,需将通过其中一个端口接收到的报文的源MAC地址,学习到同一个聚合组中的本地所有端口。
下一级设备的端口聚合,按照通用的端口聚合处理,需要向上行设备发送报文时,在聚合端口之间哈希选路,不受与接入设备的聚合方式的影响,如跨接入设备的聚合,与同一接入设备进行的多条链路的聚合。
步骤303,若接收该报文的端口为本地配置的聚合组中的端口,将学习到的下一级设备的MAC地址通过上行设备同步给,该聚合组中的非本地端口所在的其他接入设备,使所述其他接入设备将所述同步的下一级设备的MAC地址学习到所述聚合组中的所述其他接入设备的端口上。
其中,不管是静态聚合、还是运行LACP协议,需要聚合的各端口所在的接入设备之间需要控制协商,控制协商需要建立控制通道,通过上行设备完成各接入设备之间学习到的下一级设备的MAC地址的同步。这里的上行设备可以是接入设备,也可以是汇聚设备。
该聚合组中的各端口需要同时学习到下一级设备的MAC地址。各接入设备之间运行MAC地址同步协议,通过建立的控制通道相互同步在聚合口上学习到的下一级设备的MAC地址。
在具体实现时,并不是所有进行源MAC地址学习到的下一级设备的MAC地址都需要同步,只有学习到的下一级设备的MAC地址对应的出端口被配置到聚合组中,且该聚合组中存在属于其他接入设备的端口,即存在非本地端口的端口,才将该学习到的下一级设备的MAC地址同步给这些非本地端口所属的接入设备,同时,为了使其他接入设备对同步的下一级设备的MAC地址进行学习,同时,将该聚合组的聚合组标识通知给对应的其他接入设备。
假设,该接入设备接收到其他接入设备同步的下一级设备的MAC地址,以及聚合组标识时,根据同步的聚合组标识在本地查找到对应的聚合组,将所述同步的下一级设备的MAC地址学习到所述查找到的聚合组中的所有本地端口上。
由上可见,无论是通过源MAC地址学习,还是通过其他接入设备同步的MAC地址进行MAC地址学习,如果在同一接入设备上,某个聚合组中存在该接入设备的多个端口,即该下一级设备通过多条链路聚合本接入设备上时,进行源MAC地址学习时,将源MAC地址学习到该聚合组中的本地所有端口上。
该接入设备接收到上行设备发送的单播报文时,若在本地查找到该单播报文的目的MAC地址,通过该单播报文的目的MAC地址对应的出端口转发该单播报文;其中,若该单播报文的目的MAC地址对应多个出端口,根据负载均衡算法选择一个出端口转发该单播报文。
在具体实现时,一般MAC地址同步过程要慢于数据报文转发过程,因此,要在MAC地址同步完成后,再转发接收到的报文。以免下一级设备发送的报文通过一个接入设备进入,又通过另外一个接入设备返回下一级设备。
在具体实现时,可以通过报文响应,或者预设时间确定MAC地址同步过程是否完成。
实施例二
该接入设备将本接入设备以及其他同级接入设备上需要聚合的,且与所述下一级设备相连的端口,配置到同一聚合组中,即在聚合组创建完成时,所述方法进一步包括:
该接入设备为本接入设备上属于该聚合组的端口配置非单播报文的聚合表项,该聚合表项包括与该聚合组中端口个数相同的聚合索引号,其中,与本地端口个数相同个数的聚合索引号对应的内容分别为该聚合组中本接入设备的端口的端口号,其他聚合索引号对应的内容为空,且该聚合组中各端口所在的接入设备上配置的聚合表项中,对应内容不为空的索引号各不相同。
参见图4,图4为本发明具体实施例中服务器通过跨设备的聚合链路聚合多归属到多台接入设备的组网示意图。在图4中的下一级设备以服务器为例。图4中以双归属为例,即服务器通过聚合链路与两个接入设备相连,且这两个接入设备不进行堆叠,互相独立。服务器通过链路L1和链路L2聚合双归属到接入设备A和接入设备B。接入设备A的端口a和接入设备B的端口b加入聚合组,该聚合组的聚合组标识为1。
在接入设备上学习到服务器的MAC地址,包括通过接收报文进行源MAC地址学习到的,也包括接收到其他接入设备同步的服务器的MAC地址学习到的。
参见表1,表1为接入设备A上为端口a配置的聚合组1的非单播报文的聚合表项包含的内容。
表1
参见表2,表2为接入设备B上为端口b配置的聚合组1的非单播报文的聚合表项包含的内容。
表2
由表1和表2可见对应的内容不为空的聚合索引号在各接入设备上均不相同,在接入设备A上聚合索引号2对应的内容为空,在接入设备B上聚合索引号1对应的内容为空。这样通过哈希算法保证同一广播报文通过一个接入设备发送给服务器。
如图4中的虚线表示,假设将端口c也加入该聚合组中,为各接入设备配置的非单播报文的聚合表项具体如下:
参见表3,表3为接入设备A上为端口a和端口c配置的聚合组1的非单播报文的聚合表项包含的内容。
表3
参见表4,表4为接入设备B上为端口b配置的聚合组1的非单播报文的聚合表项包含的内容。
聚合索引号 |
端口号 |
1 |
null |
2 |
null |
3 |
b |
表4
由表3和表4可见对应的内容不为空的聚合索引号在各接入设备上均不相同,在接入设备A上聚合索引号3对应的内容为空,在接入设备B上聚合索引号1和2对应的内容为空。这样通过哈希算法保证同一广播报文通过一个接入设备一个端口发送给服务器。
参见图5,图5为本发明具体实施例三中对下行非单播报文的处理流程示意图。具体步骤为:
步骤501,该接入设备接收到上行设备发送的非单播报文,进行源MAC地址学习。
该接入设备接收到上行设备发送的非单播报文时,也进行源MAC地址学习,但是学习到的源MAC地址不向其他接入设备同步。
步骤502,该接入设备若确定该非单播报文的源MAC地址为所述下一级设备的MAC地址,不向该下一级设备发送该非单播报文,结束本流程。
该接入设备确定该非单播报文的源MAC地址是否为下一级设备的MAC地址,是为了防止该下一级设备通过其中一个接入设备进行该非单播报文,又经由上行设备广播给该聚合组中端口所在的其他接入设备,再由该接入设备返回给所述下一级设备,即不向本接入设备与下一级设备相连的端口广播该非单播报文。
具体实现时,可以为该下一级设备的MAC地址配置阻塞端口表项来实现。
步骤503,该接入设备若确定该非单播报文的源MAC地址不为所述下一级设备的MAC地址,且该非单播报文所属的虚拟局域网(VirtualLocalAreaNetwork,VLAN)内的端口配置了聚合表项。
该接入设备接收到非单播报文时,会在该非单播报文所属的VLAN内的所有端口广播,但是若存在某一个端口加入到聚合组,则需要进行步骤604的处理。因为聚合组中存在多个端口,不需要通过所有端口都广播该非单播报文,选择一个发送给所述下一级设备即可。
步骤504,该接入设备根据配置的哈希算法对该非单播报文进行哈希计算,并根据哈希计算结果在聚合表项中匹配索引号;若匹配到的索引号对应的内容为端口号,则通过该端口号对应的端口发送该非单播报文;若匹配到的索引号对应的内容为空,不从该配置了聚合表项的端口发送该非单播报文。
本发明具体实施例中给出一种通过哈希算法选择端口的方法,本接入设备上配置的哈希算法,与需要与本接入设备聚合的同级接入设备上配置的哈希算法相同。具体实现时,可以通过报文的元素信息,如源MAC地址、目的IP地址、源IP地址、目的IP地址等信息。同一非单播报文的元素信息相同,必然会计算出相同的哈希结果。并根据配置的聚合表项的特点,在该聚合组中的多个端口中,通过一个端口将该非单播报文发送给下一级设备。
至于通过什么样的哈希算法,以及非单播报文的元素信息选择几个都可以根据实际使用情况进行选择,本发明具体实施例中不对此做限制。
仍然以图4为例,接入设备A和接入设备B都会接收到汇聚设备发送的非单播报文,以设备A接收到该非单播报文处理为例。
接入设备A确定该非单播报文的源MAC地址为下一级设备的MAC地址,不将该非单播报文通过端口a发送给下一级设备。
接入设备A确定该非单播报文的源MAC地址不为下一级设备的MAC地址时,且确定该单播报文所属的VLAN内的端口包括端口a,且端口a配置了聚合表项。则根据该单播报文的元素信息进行哈希计算,若哈希计算结果为1,则匹配到表1中的聚合索引号1,聚合索引号1对应的内容为a,则通过a对应的端口发送该非单播报文给所述下一级设备。若哈希计算结果为2,则匹配到表1中的聚合索引号2,聚合索引号2对应的内容为空,则不通过端口a发送该非单播报文给所述下一级设备。
本发明具体实施例中基于同样的发明构思,还提出一种设备。可应用为包含多台接入设备的组网中的任一接入设备,该组网中同级接入设备横向无连接。参见图6,图6为本发明具体实施例中应用于上述技术的设备的结构示意图。该设备包括:配置单元601、收发单元602和学习单元603。
配置单元601,用于将本设备以及其他同级接入设备上需要聚合的,且与下一级设备相连的端口,配置到同一聚合组中,使所述下一级设备通过聚合链路多归属到所述聚合组中的各端口所在的接入设备。
收发单元602,用于接收下一级设备发送的报文;若接收该报文的端口为配置单元601本地配置的聚合组中的端口,将学习单元603学习到的下一级设备的MAC地址通过上行设备同步给该聚合组中的非本地端口所在的其他接入设备,使所述其他接入设备将所述同步的下一级设备的MAC地址学习到所述聚合组中的所述其他接入设备的端口上。
学习单元603,用于当收发单元602接收到下一级设备发送的报文时,对该报文进行源媒体访问控制MAC地址学习。
较佳地,
学习单元603,进一步用于在对该报文进行源MAC地址学习时,若接收该报文的端口为配置到聚合组中的端口,且该聚合组中存在多个本地端口时,将该报文的源MAC地址学习到所述聚合组中的所有本地端口上。
收发单元602,进一步用于在将所述学习到的下一级设备的MAC地址同步完成后,转发所述接收到的报文。
较佳地,
收发单元602,进一步用于接收其他接入设备同步的下一级设备的MAC地址,以及聚合组标识。
学习单元603,进一步用于当收发单元602接收到其他接入设备同步的下一级设备的MAC地址,以及聚合组标识时,根据同步的聚合组标识在本地查找到对应的聚合组,将所述同步的下一级设备的MAC地址学习到所述查找到的聚合组中的所有本地端口上。
较佳地,
收发单元602,进一步用于接收到上行设备发送的单播报文时,若在本地查找到该单播报文的目的MAC地址,通过该单播报文的目的MAC地址对应的出端口转发该单播报文;其中,若该单播报文的目的MAC地址对应多个出端口,根据负载均衡算法选择一个出端口转发该单播报文。
较佳地,
配置单元601,进一步用于为本设备上属于该聚合组的端口配置非单播报文的聚合表项,该聚合表项包括与该聚合组中端口个数相同的聚合索引号,其中,与本地端口个数相同个数的聚合索引号对应的内容分别为该聚合组中本接入设备的端口的端口号,其他聚合索引号对应的内容为空,且该聚合组中各端口所在的接入设备上配置的聚合表项中,对应内容不为空的索引号各不相同。
较佳地,
收发单元602,进一步用于接收到上行设备发送的非单播报文时,若确定该非单播报文的源MAC地址为所述下一级设备的MAC地址,不向该下一级设备发送该非单播报文;若确定该非单播报文的源MAC地址不为所述下一级设备的MAC地址,且该非单播报文所属的虚拟局域网VLAN内的端口配置了非单播报文的聚合表项时,根据配置的哈希算法对该非单播报文进行哈希计算,并根据哈希计算结果在非单播报文的聚合表项中匹配索引号;若匹配到的索引号对应的内容为端口号,则通过该端口号对应的端口发送该非单播报文;若匹配到的索引号对应的内容为空,不通过该配置了聚合表项的端口转发该非单播报文,其中,本接入设备上配置的哈希算法,与需要与本接入设备聚合的同级接入设备上配置的哈希算法相同。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
综上所述,本发明具体实施例中通过接入设备获得本接入设备以及其他同级接入设备上需要聚合的,且与所述下一级设备相连的端口,并配置到同一聚合组中,使所述下一级设备通过聚合链路多归属到所述聚合组中的各端口所在的接入设备。在节省设备成本和维护成本的情况下,提供网络设备级的接入链路的可靠性,同时为接入设备和汇聚设备配合组建大二层网络提供保障。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。