发明内容
本发明提供了一种控制器控制网桥学习MAC地址的方法,能够加快二层交换网络学习MAC地址的速度。
本发明还提供了一种网桥学习MAC地址的方法,能够加快二层交换网络学习MAC地址的速度。
本发明还提供了一种控制器和网桥,能够加快二层交换网络学习MAC地址的速度。
本发明的技术方案是这样实现的:
一种控制器控制网桥学习MAC地址的方法,该方法应用于包括控制器和多个网桥的二层交换网络,包括:
所述控制器通过控制通道接收域内各个网桥发送的自身链路层拓扑信息以及学习到的邻居的链路层拓扑信息;所述控制器接收网桥通过控制通道发送来的携带有其学习到的MAC地址信息的报文,所述控制器根据域内各个网桥上报的自身的和邻居的链路层拓扑信息进行二层管理协议计算,得到所述MAC地址对应报文的传输路径,根据传输路径确定需要学习所述MAC地址的网桥的端口,将所述MAC地址与需要学习所述MAC地址的端口的对应关系通过控制通道下发至相应的所述网桥;
所述网桥为不具有利用所述二层交换网络的链路层拓扑信息进行协议计算能力的网桥,所述域为由所述网桥构成的域,所述控制通道为在网桥和控制器之间设置的通道。
一种网桥学习MAC地址的方法,该方法应用于包括控制器和多个网桥的二层交换网络,包括:
网桥将自身的链路层拓扑信息通过控制通道上报至控制器,并学习域内邻居网桥的链路层拓扑信息,将域内邻居网桥的链路层拓扑信息通过控制通道上报至控制器;网桥接收域外链路发送的报文后进行MAC地址学习,并将学习到的MAC地址通过控制通道发送到所述控制器;网桥接收控制器通过控制通道下发的MAC地址与需要学习所述MAC地址的端口的对应关系,网桥保存接收到的对应关系,所述控制器下发的对应关系中的MAC地址是其他网桥学习到的MAC地址,所述端口是该网桥上的端口,所述对应关系是所述控制器根据域内各个网桥上报的自身的和邻居的链路层拓扑信息进行二层管理协议计算,得到所述报文的传输路径,根据传输路径确定需要学习所述MAC地址的网桥的端口所得出的对应关系;
所述网桥为不具有利用所述二层交换网络的链路层拓扑信息进行协议计算能力的网桥,所述域为由所述网桥构成的域,所述控制通道为在网桥和控制器之间设置的通道。
一种控制器,应用于包括控制器和多个网桥的二层交换网络,包括:
拓扑信息接收模块,用于通过控制通道接收域内各个网桥发送的自身链路层拓扑信息以及学习到的邻居的链路层拓扑信息;
MAC地址学习控制模块,用于接收网桥通过控制通道发送来的携带有其学习到的MAC地址信息的报文,根据所述拓扑信息接收模块接收的信息进行二层管理协议计算,得到所述MAC地址对应报文的传输路径,根据传输路径确定需要学习所述MAC地址的网桥的端口,将所述MAC地址与需要学习所述MAC地址的端口的对应关系通过控制通道下发至相应的所述网桥;
其中,所述网桥为不具有利用所述二层交换网络的链路层拓扑信息进行协议计算能力的网桥,所述域为由所述网桥构成的域,所述控制通道为在网桥和控制器之间设置的通道。
一种网桥,应用于包括控制器和多个网桥的二层交换网络,包括:
拓扑信息上报模块,用于将自身的链路层拓扑信息通过控制通道上报至控制器,并学习域内邻居网桥的链路层拓扑信息,将域内邻居网桥的链路层拓扑信息通过控制通道上报至控制器;
MAC地址学习模块,用于接收域外链路发送的报文后进行MAC地址学习,并将学习到的MAC地址通过控制通道发送到所述控制器;
MAC地址保存模块,用于接收控制器通过控制通道下发的MAC地址与需要学习所述MAC地址的端口的对应关系,网桥保存接收到的对应关系,所述控制器下发的对应关系中的MAC地址是其他网桥学习到的MAC地址,所述端口是该网桥上的端口,所述对应关系是所述控制器根据域内各个网桥上报的自身的和邻居的链路层拓扑信息进行二层管理协议计算,得到所述报文的传输路径,根据传输路径确定需要学习所述MAC地址的网桥的端口所得出的对应关系;
其中,所述网桥为不具有利用所述二层交换网络的链路层拓扑信息进行协议计算能力的网桥,所述域为由所述网桥构成的域,所述控制通道为在网桥和控制器之间设置的通道。
可见,本发明提出的学习MAC地址的方法和设备,将域内网桥的控制平面集中到控制器,由控制器集中控制整个二层交换网络中MAC地址的学习,从而加快二层交换网络学习MAC地址的速度。
具体实施方式
本发明提出一种控制器控制网桥学习MAC地址的方法,应用于包括控制器和多个网桥的二层交换网络,如图2为本发明提出的控制器控制网桥学习MAC地址的方法流程图,包括以下步骤:
步骤201:控制器通过控制通道接收域内各个网桥发送的自身链路层拓扑信息以及学习到的邻居的链路层拓扑信息;
步骤202:控制器接收网桥通过控制通道发送来的携带有其学习到的MAC地址信息的报文,根据域内各个网桥上报的自身的和邻居的链路层拓扑信息进行二层管理协议计算,得到所述MAC地址对应报文的传输路径,根据传输路径确定需要学习所述MAC地址的网桥的端口,将所述MAC地址与需要学习所述MAC地址的端口的对应关系通过控制通道下发至相应的所述网桥;
其中,所述网桥为不具有利用所述二层交换网络的链路层拓扑信息进行协议计算能力的网桥,所述域为由所述网桥构成的域,所述控制通道为在网桥和控制器之间设置的通道。
上述方法可以进一步包括:
步骤203:控制器通过控制通道接收所述域内某个网桥对MAC地址进行老化的信息,并在本地查询保存有所述老化MAC地址的其他网桥,并将删除MAC地址的信息通过控制通道下发至所述其他网桥。
本发明还提出一种网桥学习MAC地址的方法,应用于包括控制器和多个网桥的二层交换网络,如图3为本发明提出的网桥学习MAC地址的方法流程图,包括以下步骤:
步骤301:网桥将自身的链路层拓扑信息通过控制通道上报至控制器,并学习域内邻居网桥的链路层拓扑信息,将域内邻居网桥的链路层拓扑信息通过控制通道上报至控制器;
步骤302:网桥接收域外链路发送的报文后进行MAC地址学习,并将学习到的MAC地址通过控制通道发送到所述控制器;
步骤303:网桥接收控制器通过控制通道下发的MAC地址与需要学习所述MAC地址的端口的对应关系,网桥保存接收到的对应关系,所述控制器下发的对应关系中的MAC地址是其他网桥学习到的MAC地址,所述端口是该网桥上的端口,所述对应关系是所述控制器根据域内各个网桥上报的自身的和邻居的链路层拓扑信息进行二层管理协议计算,得到所述MAC地址对应报文的传输路径,根据传输路径确定需要学习所述MAC地址的网桥的端口所得出的对应关系。
其中,所述网桥为不具有利用所述二层交换网络的链路层拓扑信息进行协议计算能力的网桥,所述域为由所述网桥构成的域,所述控制通道为在网桥和控制器之间设置的通道。
上述方法可以进一步包括:
步骤304:网桥对MAC地址进行老化,并将老化信息上报至控制器。
以下举具体的实施例详细介绍。
本实施例将二层交换网络中的交换设备划分为域内网桥和域外网桥,其中,域内网桥为只包括转发平面的桥,域内网桥的控制平面被分离出来,统一运行在控制器上,而域内网桥上只运行代理进程,用于与控制器之间进行通信以及管理本地的物理信息(域内网桥即为上述方法中所述的网桥);域外网桥为包括控制平面和转发平面的桥。相应地,在二层交换网络中,两端均连接域内网桥的链路为域内链路,其余链路为域外链路;连接域内链路的端口称为域内链路端口,连接域内链路的端口称为域外链路端口。控制器可以是计算能力极强的服务器,控制器与域内网桥之间使用控制通道进行通信。如图4为本发明实施例所应用的系统结构示意图,在图4中,5个桥组成二层交换网络,其中,MAC地址分别为0000-0000-0001、0000-0000-0002、0000-0000-0003、0000-0000-0004的4个桥为域内网桥,MAC地址为0000-0000-0005的桥为域外网桥;链路11-21、12-31、22-32、23-41、42-33为域内链路,链路51-13、52-24为域外链路。所有域内网桥组成被控制器统一管理的域,控制器和域内网桥之间通过控制通道进行通信,如图4中虚线所示。在图4中,域外网桥未被改造。
进行上述配置之后,控制器可以控制图4所示二层交换网络中MAC地址的学习,具体包括:
步骤1:域内网桥管理本设备的各个端口链路层拓扑信息,包括设备的MAC地址、端口MAC地址、端口的索引编号、设备名称、设备描述信息等,并且将这些链路层拓扑信息经过控制通道统一上报到运行在控制器上的控制平面进行管理。
步骤2:在域内网桥的域内链路端口上运行邻居发现协议,例如链路层发现协议(LLDP)等,通过邻居发现协议交互各个设备的MAC地址、端口MAC地址、端口的索引编号、设备名称、设备描述信息等链路层拓扑信息,从而学习到邻居域内网桥的链路层拓扑信息,并将各个端口学习到的邻居域内网桥的链路层拓扑信息通过控制通道统一上报至控制器进行拓扑的分析和管理。
步骤3:控制器对各个域内网桥上报的链路层拓扑信息进行分析和重构,形成二层交换网络的完整的拓扑信息,并保存该信息。之后可以利用该二层交换网络的拓扑信息集中控制二层交换网络。二层交换网络的拓扑信息的具体内容如下表1所示:
设备 |
端口 |
对端设备 |
端口 |
0000-0000-0001 |
11 |
0000-0000-0002 |
21 |
0000-0000-0001 |
12 |
0000-0000-0003 |
31 |
0000-0000-0002 |
22 |
0000-0000-0003 |
32 |
0000-0000-0002 |
23 |
0000-0000-0004 |
41 |
0000-0000-0003 |
33 |
0000-0000-0004 |
42 |
0000-0000-0003 |
34 |
NULL |
NULL |
0000-0000-0004 |
43 |
NULL |
NULL |
表1
之后,对于MAC地址的学习和老化,域内网桥只在域外链路上进行,而域内链路上MAC地址的学习和老化集中由控制器进行,并由控制器将新的MAC地址下发到所有的域内设备。以下步骤4和步骤5分别介绍MAC地址的学习和老化过程。
步骤4:域内网桥通过域外链路端口接收到新的报文时,对该报文进行MAC地址学习,将学习到的MAC地址通过控制通道上报至控制器;控制器利用其保存的二层交换网络的拓扑信息进行协议计算,得到该报文的传输路径,根据传输路径计算出需要学习该MAC地址的端口,将该MAC地址与需要学习该MAC地址的端口的对应关系通过控制通道下发到相应的域内网桥的代理进程,代理进程保存该对应关系,并将该对应关系下发到转发平面用于指导报文转发。
以图4所示的系统为例,假设所有端口均在VLAN100内,且二层交换网络的生成树计算出端口11、12、21、22、23、31、33、34、41、43的状态为转发态,端口32、42的状态为阻塞态。如果域外链路端口34接收到源MAC地址为00E0-AAAA-0001的报文,则该报文需要沿着端口34、31、12、11、21、23、41、43端口进行转发。为实现按照上述路径进行报文转发,需要进行如下MAC地址学习过程:
当端口34接收到报文后,在该端口进行MAC地址学习,域内网桥0000-0000-0003将学习到的MAC地址,即00E0-AAAA-0001(用源MAC、VLAN表示)通过控制通道上报至控制器;控制器根据二层交换网络的拓扑信息计算出端口12、21、41需要学习该MAC地址,则:
通过控制通道将该MAC地址与端口12的对应关系下发至端口12所在的域内网桥,即网桥0000-0000-0001;
通过控制通道将该MAC地址与端口21的对应关系下发至端口21所在的域内网桥,即网桥0000-0000-0002;
通过控制通道将该MAC地址与端口41的对应关系下发至端口41所在的域内网桥,即网桥0000-0000-0004。
网桥0000-0000-0001、0000-0000-0002和0000-0000-0004的代理进程分别接收并保存该对应关系,将该对应关系下发到转发平面。端口43收到的返回报文沿端口43、41、23、21、11、12、31、34进行转发。
步骤5:域内网桥进行MAC地址的老化后,将老化信息通过控制通道上报至控制器;控制器查询已保存所述MAC地址与需要学习所述MAC地址的端口的对应关系的其他域内网桥,将删除所述对应关系的命令通过控制通道下发至该其他域内网桥;该其他域内网桥根据该命令删除自身保存的所述对应关系。
仍以上述报文为例,端口34所在的域内网桥0000-0000-0003进行MAC地址00E0-AAAA-0001的老化,老化后,该设备的代理进程将老化信息通过控制通道发送到控制器,控制器根据先前学习的结果查询已保存该MAC地址与需要学习该MAC地址的端口的对应关系的设备(即端口11、21、41所在的设备),将删除该对应关系的命令分别下发到相应的设备;这些设备收到删除对应关系的命令后,删除本地MAC表项中的该对应关系。
在本发明提出的方法中,对于域内网桥,将STP、GVRP等协议功能的计算可以集中到控制器上进行;具体地,对域内网桥的域内链路和域外链路的处理方式又有所不同,具体为以下步骤6和步骤7。
步骤6:对于域外链路,链路层协议如STP、GVRP的计算方式与现有的计算方式相同,但计算的主体为控制器。即,控制器利用上述二层交换网络的拓扑信息进行协议计算之后,可以进一步将计算出的协议信息构造成协议报文、通过控制通道下发到域内网桥的代理进程,代理进程再将协议信息通过域外链路端口从域外链路转发出去。当域内网桥从域外链路接收到包含协议信息的协议报文时,域内网桥的代理进程通过控制通道将该协议信息上报至控制器,由控制器对接收的协议信息进行处理。
步骤7:对于域内链路,链路层协议不收发任何协议报文,而是由控制器根据拓扑信息进行协议计算,将计算出的协议信息,如动态VLAN、端口实例的STP状态信息等通过控制通道下发至相应的域内网桥。
以上介绍了二层交换网络中MAC地址学习、协议计算等过程。当域内网桥检测到链路故障时,域内网桥的代理进程将链路故障信息通过控制通道上报至控制器,控制器重新进行STP拓扑等协议计算,并将计算出的协议信息通过控制通道发送至二层交换网络中的域内网桥。
本发明还提出一种控制器,应用于包括控制器和多个网桥的二层交换网络,如图5为本发明提出的控制器的结构示意图,该控制器包括:
拓扑信息接收模块501,用于通过控制通道接收域内各个网桥发送的自身链路层拓扑信息以及学习到的邻居的链路层拓扑信息;
MAC地址学习控制模块502,用于接收网桥通过控制通道发送来的携带有其学习到的MAC地址信息的报文,根据所述拓扑信息接收模块接收的信息进行二层管理协议计算,得到所述MAC地址对应报文的传输路径,根据传输路径确定需要学习所述MAC地址的网桥的端口,将所述MAC地址与需要学习所述MAC地址的端口的对应关系通过控制通道下发至相应的所述网桥;
其中,所述网桥为不具有利用所述二层交换网络的链路层拓扑信息进行协议计算能力的网桥,所述域为由所述网桥构成的域,所述控制通道为在网桥和控制器之间设置的通道。
上述控制器可以进一步包括:
MAC地址老化控制模块503,用于通过控制通道接收所述域内某个网桥对MAC地址进行老化的信息,并在本地查询保存有所述老化MAC地址的其他网桥,并将删除MAC地址的信息通过控制通道下发至所述其他网桥。
本发明还提出一种网桥,应用于包括控制器和多个网桥的二层交换网络,如图6为本发明提出的网桥的结构示意图,该网桥包括:
拓扑信息上报模块601,用于将自身的链路层拓扑信息通过控制通道上报至控制器,并学习域内邻居网桥的链路层拓扑信息,将域内邻居网桥的链路层拓扑信息通过控制通道上报至控制器;
MAC地址学习模块602,用于接收域外链路发送的报文后进行MAC地址学习,并将学习到的MAC地址通过控制通道发送到所述控制器;
MAC地址保存模块603,用于接收控制器通过控制通道下发的MAC地址与需要学习所述MAC地址的端口的对应关系,保存接收到的对应关系,所述控制器下发的对应关系中的MAC地址是其他网桥学习到的MAC地址,所述端口是该网桥上的端口,所述对应关系是所述控制器根据域内各个网桥上报的自身的和邻居的链路层拓扑信息进行二层管理协议计算,得到所述MAC地址对应报文的传输路径,根据传输路径确定需要学习所述MAC地址的网桥的端口所得出的对应关系。
其中,所述网桥为不具有利用所述二层交换网络的链路层拓扑信息进行协议计算能力的网桥,所述域由所述网桥构成,所述控制通道为在网桥和控制器之间设置的通道。
上述网桥可以进一步包括:
MAC地址老化上报模块604,用于对MAC地址进行老化,并将老化信息上报至控制器。
综上可见,本发明提出的学习MAC地址的方法和系统,根据集中控制的范围,将交换网络的设备划分为域内网桥和域外网桥,相应地,将链路划分为域内链路和域外链路。在域外链路上,协议计算、MAC地址学习和老化等具体方式与传统交换设备所采用的方式相同;而在域内链路上,不收发协议报文、不进行协议计算、不自主进行MAC地址的学习和老化,而是由控制器集中进行控制。通过这种方式,可以加快二层交换网络MAC地址的学习速度,并降低对交换设备CPU的要求。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。