介质访问控制MAC地址学习方法、控制器及交换设备
技术领域
本发明涉及通信技术,尤其涉及一种介质访问控制MAC地址学习方法、控制器及交换设备。
背景技术
随着网络技术的不断成熟和发展,开放流(Openflow,简称OF)网络为我们提供了一种基于流的新型网络模型,该网络主要包括两类设备:控制器和OF交换设备。其中,控制器用于对网络进行集中控制,并给OF交换设备下发流表,OF交换设备用于根据该流表对接收到的报文进行匹配和转发;其中,控制器是向用户开放的;流表中记录源介质访问控制(Media Access Control,简称MAC)地址、目的MAC地址以及输出端口标识。
现有技术中,当OF交换设备接收到用户边缘设备(Communication Edge,简称CE)发送的报文时,根据报文的目的MAC地址与该OF交换设备中已有的流表进行匹配,若匹配到,则从对应的输出端口进行转发;若没有匹配到流表,则将该报文上送控制器,由控制器指示OF交换设备进行广播,并且控制器对该报文的源MAC地址、目的MAC地址以及源端口进行学习,即更新MAC地址表,并以流表的形式下发到OF交换设备。
发明人在实现本发明实施例的过程中发现,采用现有技术会导致一些地址表项控制器学习不到,从而使得控制器不能对网络中的数据流进行有效控制。
发明内容
本发明实施例提供一种介质访问控制MAC地址学习方法、控制器及交换设备,用于解决控制器不能学习到OF网络中所有MAC地址表项的问题。
本发明实施例第一方面提供一种介质访问控制MAC地址学习方法,包括:
控制器接收开放流OF交换设备发送的第一报文和所述第一报文的入端口信息,其中第一报文的源地址为第一用户边缘设备CE的MAC地址,第一报文的目的地址为第二CE的MAC地址;第一报文的入端口为所述OF交换设备接收所述第一报文的端口;
控制器根据所述第一报文和所述第一报文的入端口信息生成第一MAC地址表项,其中,所述第一MAC地址表项的源地址为第二CE的MAC地址,所述第一MAC地址表项的目的地址为第一CE的MAC地址;所述第一MAC地址表项的出端口为所述第一报文的入端口;
控制器将所述第一MAC地址表项保存到所述OF交换设备的MAC地址表;
控制器判断所述OF交换设备的MAC地址表中是否存在第二MAC地址表项,其中,所述第二MAC地址表项的源地址为第一CE的MAC地址,所述第二MAC地址表项的目的地址为第二CE的MAC地址;
如果存在所述第二MAC地址表项,控制器向所述OF交换设备发送所述第一MAC地址表项和所述第二MAC地址表项。
结合第一方面,在第一方面的第一种可能的实施方式中,所述方法还包括:
如果不存在所述第二MAC地址表项,控制器接收所述OF交换设备发送的第二报文和所述第二报文的入端口信息,其中第二报文的源地址为第二CE的MAC地址,第二报文的目的地址为第一CE的MAC地址;第二报文的入端口为所述OF交换设备接收所述第二报文的端口;
控制器根据所述第二报文和所述第二报文的入端口信息生成所述第二MAC地址表项,其中,所述第二MAC地址表项的出端口为所述第二报文的入端口;
控制器将所述第二MAC地址表项保存到所述OF交换设备的MAC地址表;
控制器向所述OF交换设备发送所述第一MAC地址表项和所述第二MAC地址表项。
本发明实施例第二方面提供一种介质访问控制MAC地址学习方法,包括:
开放流OF交换设备接收用户边缘设备CE发送的报文,其中,所述报文源地址为第一用户边缘设备CE的MAC地址,所述报文的目的地址为第二CE的MAC地址;所述报文的入端口为所述OF交换设备接收所述报文的端口;
若所述报文未匹配到包含源地址为第一CE的MAC地址、目的地址为第二CE的MAC地址的MAC地址表项,则OF交换设备将所述报文和所述报文的入端口信息发送给控制器,以使控制器生成MAC地址表项,其中,所述MAC地址表项的源地址为第二CE的MAC地址,所述MAC地址表项的目的地址为第一CE的MAC地址;所述MAC地址表项的出端口为所述报文的入端口。
结合第二方面,在第二方面的第一种可能的实施方式中,所述将所述报文和所述报文的入端口信息发送给控制器之后,还包括:
接收控制器发送的MAC地址表项。
本发明实施例第三方面提供一种控制器,包括:
接收模块,用于接收开放流OF交换设备发送的第一报文和所述第一报文的入端口信息,其中第一报文的源地址为第一用户边缘设备CE的MAC地址,第一报文的目的地址为第二CE的MAC地址;第一报文的入端口为所述OF交换设备接收所述第一报文的端口;
生成模块,用于根据所述第一报文和所述第一报文的入端口信息生成第一MAC地址表项,其中,所述第一MAC地址表项的源地址为第二CE的MAC地址,所述第一MAC地址表项的目的地址为第一CE的MAC地址;所述第一MAC地址表项的出端口为所述第一报文的入端口;
保存模块,用于将所述第一MAC地址表项保存到所述OF交换设备的MAC地址表;
判断模块,用于判断所述OF交换设备的MAC地址表中是否存在第二MAC地址表项,其中,所述第二MAC地址表项的源地址为第一CE的MAC地址,所述第二MAC地址表项的目的地址为第二CE的MAC地址;
发送模块,用于如果存在所述第二MAC地址表项,控制器向所述OF交换设备发送所述第一MAC地址表项和所述第二MAC地址表项。
结合第三方面,在第三方面的第一种可能的实施方式中,所述接收模块,还用于如果不存在所述第二MAC地址表项,控制器接收所述OF交换设备发送的第二报文和所述第二报文的入端口信息,其中第二报文的源地址为第二CE的MAC地址,第二报文的目的地址为第一CE的MAC地址;第二报文的入端口为所述OF交换设备接收所述第二报文的端口;
所述生成模块,还用于根据所述第二报文和所述第二报文的入端口信息生成所述第二MAC地址表项,其中,所述第二MAC地址表项的出端口为所述第二报文的入端口;
所述保存模块,还用于将所述第二MAC地址表项保存到所述OF交换设备的MAC地址表;
所述发送模块,还用于向所述OF交换设备发送所述第一MAC地址表项和所述第二MAC地址表项。
本发明实施例第四方面提供一种交换设备,包括:
接收模块,用于接收用户边缘设备CE发送的报文,其中,所述报文源地址为第一用户边缘设备CE的MAC地址,所述报文的目的地址为第二CE的MAC地址;所述报文的入端口为所述OF交换设备接收所述报文的端口;
发送模块,用于若所述报文未匹配到包含源地址为第一CE的MAC地址、目的地址为第二CE的MAC地址的MAC地址表项,则OF交换设备将所述报文和所述报文的入端口信息发送给控制器,以使控制器生成MAC地址表项,其中,所述MAC地址表项的源地址为第二CE的MAC地址,所述MAC地址表项的目的地址为第一CE的MAC地址;所述MAC地址表项的出端口为所述报文的入端口。
结合第四方面,在第四方面的第一种可能的实施方式中,所述接收模块,还用于接收控制器发送的MAC地址表项。
本发明实施例第五方面提供一种控制器,包括:
接收器,用于接收开放流OF交换设备发送的第一报文和所述第一报文的入端口信息,其中第一报文的源地址为第一用户边缘设备CE的MAC地址,第一报文的目的地址为第二CE的MAC地址;第一报文的入端口为所述OF交换设备接收所述第一报文的端口;
处理器,用于根据所述第一报文和所述第一报文的入端口信息生成第一MAC地址表项,其中,所述第一MAC地址表项的源地址为第二CE的MAC地址,所述第一MAC地址表项的目的地址为第一CE的MAC地址;所述第一MAC地址表项的出端口为所述第一报文的入端口;
存储器,用于将所述第一MAC地址表项保存到所述OF交换设备的MAC地址表;
所述处理器,还用于判断所述OF交换设备的MAC地址表中是否存在第二MAC地址表项,其中,所述第二MAC地址表项的源地址为第一CE的MAC地址,所述第二MAC地址表项的目的地址为第二CE的MAC地址;
发送器,用于如果存在所述第二MAC地址表项,控制器向所述OF交换设备发送所述第一MAC地址表项和所述第二MAC地址表项。
结合第五方面,在第五方面的第一种可能的实施方式中,所述接收器,还用于如果不存在所述第二MAC地址表项,控制器接收所述OF交换设备发送的第二报文和所述第二报文的入端口信息,其中第二报文的源地址为第二CE的MAC地址,第二报文的目的地址为第一CE的MAC地址;第二报文的入端口为所述OF交换设备接收所述第二报文的端口;
所述处理器,还用于根据所述第二报文和所述第二报文的入端口信息生成所述第二MAC地址表项,其中,所述第二MAC地址表项的出端口为所述第二报文的入端口;
所述存储器,用于将所述第二MAC地址表项保存到所述OF交换设备的MAC地址表;
所述发送器,用于向所述OF交换设备发送所述第一MAC地址表项和所述第二MAC地址表项。
本发明实施例第六方面提供一种交换设备,包括:
接收器,用于接收用户边缘设备CE发送的报文,其中,所述报文源地址为第一用户边缘设备CE的MAC地址,所述报文的目的地址为第二CE的MAC地址;所述报文的入端口为所述OF交换设备接收所述报文的端口;
发送器,用于若所述报文未匹配到包含源地址为第一CE的MAC地址、目的地址为第二CE的MAC地址的MAC地址表项,则OF交换设备将所述报文和所述报文的入端口信息发送给控制器,以使控制器生成MAC地址表项,其中,所述MAC地址表项的源地址为第二CE的MAC地址,所述MAC地址表项的目的地址为第一CE的MAC地址;所述MAC地址表项的出端口为所述报文的入端口。
结合第六方面,在第六方面的第一种可能的实施方式中,所述接收器,还用于接收控制器发送的MAC地址表项。
本发明实施例中,OF网络中的控制器生成第一MAC地址表项后,要判断OF交换设备的MAC地址表中是否存在相对应的第二MAC地址表项,如果存在第二MAC地址表项,再将这一对MAC地址表项下发,这样可以使得控制器将往返的MAC地址表项都学习到,避免了控制器可能学习不到整个网络中的部分MAC地址表项的情况,使得控制器可以对整个网络中的数据流进行很好的控制。
本发明实施例第七方面提供一种介质访问控制MAC地址学习方法,包括:
开放流OF交换设备接收用户边缘设备CE发送的报文;
所述OF交换设备根据所述报文生成MAC地址表项,其中所述MAC地址表项的目的地址为所述报文的源地址;所述MAC地址表项的出端口为所述OF交换设备接收所述报文的端口;
所述OF交换设备保存所述MAC地址表项;
所述OF交换设备向控制器发送所述MAC地址表项。
结合第七方面,在第七方面的第一种可能的实施方式中,所述OF交换设备向控制器发送所述MAC地址表项具体包括:
所述OF交换设备通过OF消息向控制器发送所述MAC地址表项。
本发明实施例第八方面提供一种介质访问控制MAC地址学习方法,包括:
控制器接收OF交换设备发送的MAC地址表项;
控制器将所述MAC地址表项保存到所述OF交换设备对应的MAC地址表。
本发明第九方面提供一种交换设备,包括:
接收模块,用于接收用户边缘设备CE发送的报文;
生成模块,用于根据所述报文生成MAC地址表项,其中所述MAC地址表项的目的地址为所述报文的源地址;所述MAC地址表项的出端口为所述OF交换设备接收所述报文的端口;
保存模块,用于保存所述MAC地址表项;
发送模块,用于向控制器发送所述MAC地址表项。
结合第九方面,在第九方面的第一种可能的实施方式中,所述发送模块,具体用于通过OF消息向控制器发送所述MAC地址表项。
本发明实施例第十方面提供一种控制器,包括:
接收模块,用于接收OF交换设备发送的MAC地址表项;
保存模块,用于将所述MAC地址表项保存到所述OF交换设备对应的MAC地址表。
本发明实施例第十一方面提供一种交换设备,包括:
接收器,用于接收用户边缘设备CE发送的报文;
处理器,用于根据所述报文生成MAC地址表项,其中所述MAC地址表项的目的地址为所述报文的源地址;所述MAC地址表项的出端口为所述OF交换设备接收所述报文的端口;
存储器,用于保存所述MAC地址表项;
发送器,用于向控制器发送所述MAC地址表项。
结合第十一方面,在第十一方面的第一种可能的实施方式中,所述发送器,具体用于通过OF消息向控制器发送所述MAC地址表项。
本发明实施例第十二方面提供一种控制器,包括:
接收器,用于接收OF交换设备发送的MAC地址表项;
存储器,用于将所述MAC地址表项保存到所述OF交换设备对应的MAC地址表。
本发明实施例中,OF交换设备根据接收到的报文生成MAC地址表项并进行保存,这样可以学习到它通信过程中的所有地址表项,将学习生成的MAC地址表项通过OF消息上送给控制器,控制器将各OF交换设备上送的MAC地址表项进行维护,可以获取整个网络的MAC地址,以对整个网络的数据流进行控制。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的MAC地址学习方法实施例一的流程示意图;
图2为本发明提供的MAC地址学习方法实施例二的应用结构示意图;
图3为本发明提供的MAC地址学习方法实施例三的流程示意图;
图4为本发明提供的控制器实施例一的结构示意图;
图5为本发明提供的交换设备实施例一的结构示意图;
图6为本发明提供的控制器实施例二的结构示意图;
图7为本发明提供的交换设备实施例二的结构示意图;
图8为本发明提供的MAC地址学习方法实施例四的流程示意图;
图9为本发明提供的MAC地址学习方法实施例五的流程示意图;
图10为本发明提供的交换设备实施例三的结构示意图;
图11为本发明提供的控制器实施例三的结构示意图;
图12为本发明提供的交换设备实施例四的结构示意图;
图13为本发明提供的控制器实施例四的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的MAC地址学习方法实施例一的流程示意图,如图1所示,该方法包括:
S101、控制器接收OF交换设备发送的第一报文和该第一报文的入端口信息,其中第一报文的源地址为第一CE的MAC地址,第一报文的目的地址为第二CE的MAC地址;第一报文的入端口为所述OF交换设备接收所述第一报文的端口。具体地,第一报文的入端口信息可以由OF交换设备封装到第一报文中一起上送给控制器,也可以单独的发送给控制器。
S102、控制器根据上述第一报文和所述第一报文的入端口信息生成第一MAC地址表项,其中,该第一MAC地址表项的源地址为第二CE的MAC地址,该第一MAC地址表项的目的地址为第一CE的MAC地址;该第一MAC地址表项的出端口为上述第一报文的入端口。
S103、控制器将上述第一MAC地址表项保存到上述OF交换设备的MAC地址表。
在OF网络中,控制器在接收到OF交换设备上送的报文时,可以解析获取到该报文的源MAC地址、目的MAC地址、以及该OF交换设备接收该报文的入端口号,并进行学习,即生成MAC地址表项,在该MAC地址表项中将上述源MAC地址作为目的MAC地址记录,将上述目的MAC地址作为源MAC地址,将上述入端口作为出端口(outport)记录,当将MAC地址表项下发给上述OF交换设备后,该OF交换设备接收到与上一报文沿相反路径发送的报文时就可以知道将这个报文从哪一个端口发送出去了。
S104、控制器判断上述OF交换设备的MAC地址表中是否存在第二MAC地址表项,其中该第二MAC地址表项的源地址为第一CE的MAC地址,该第二MAC地址表项的目的地址为第二CE的MAC地址。
S105、如果存在上述第二MAC地址表项,控制器向上述OF交换设备发送上述第一MAC地址表项和上述第二MAC地址表项。
现有技术中,控制器每学习到一个MAC地址表项后就会下发给OF交换设备,例如,控制器学习到上述第一MAC地址表项后下发给OF控制器,那么当第二CE向上述第一CE发送第二报文时,采用现有技术匹配目的MAC的方式,就可以在上述第一MAC地址表项中匹配到第一CE的MAC地址,进而在该第一MAC地址表项中查到对应的出端口(outport)号,从而将第二报文从该出端口号对应的端口发送出去,到达第一CE,而不会上报控制器,这样控制器就不能学习到上述第二MAC地址表项。
本实施例中,OF网络中的控制器生成第一MAC地址表项后,要判断OF交换设备的MAC地址表中是否存在相对应的第二MAC地址表项,如果存在第二MAC地址表项,再将这一对MAC地址表项下发,这样可以使得控制器将往返的MAC地址表项都学习到,避免了控制器可能学习不到整个网络中的部分MAC地址表项的情况,使得控制器可以对整个网络中的数据流进行很好的控制。
图2为本发明提供的MAC地址学习方法实施例二的应用结构示意图,该方法实施例应用于OF网络中,以控制器控制范围内包含三个OF交换设备为例,这些OF交换设备可以为OF交换机。具体的,如图2所示,该应用场景中包括:控制器201,第一OF交换设备202,第二OF交换设备203,第三OF交换设备204,以及第一CE205,第二CE206,第三CE207。
进一步地,上述S104之后,如果不存在上述第二MAC地址表项,控制器接收上述OF交换设备发送的第二报文和上述第二报文的入端口信息,其中第二报文的源地址为第二CE的MAC地址,第二报文的目的地址为第一CE的MAC地址;第二报文的入端口为上述OF交换设备接收所述第二报文的端口。
与处理上述第一报文的方式相同,控制器根据第二报文的该第二报文的入端口信息生成上述第二MAC地址表项,其中,上述第二MAC地址表项的出端口为上述第二报文的入端口;进而,控制器将上述第二MAC地址表项保存到上述OF交换设备的MAC地址表;最后,控制器向上述OF交换设备发送该第一MAC地址表项和第二MAC地址表项。
更进一步地,在控制器学习生成获取与上述第一OF交换设备对应的上述第一MAC地址表项之后,该控制器将上述第一报文发送给上述第一OF交换设备,并指示该第一OF交换设备将该第一报文广播给与该第一OF交换设备通信的其它OF交换设备,以使上述其它OF交换设备中的第二与上述第二CE通信的OF交换设备将该第一报文发送给上述第二CE;该控制器接收上述其它OF交换设备发送的第一报文,该第一报文中包含第一CE的MAC地址和第二CE的MAC地址,该第一报文为其它OF交换设备在未匹配到包含上述源地址为第一CE的MAC地址、目的地址为第二CE的MAC地址的MAC地址表项时发送的第一CE的MAC地址和第二CE的MAC地址的时发送的;控制器学习生成获取上述第一MAC地址表项,并将上述第一MAC地址表项加入与上述其它OF交换设备中各OF交换设备对应的MAC地址表中;即与前述过程相同,上述第一报文广播到其它OF交换设备后同样未匹配到包含源地址为第一CE的MAC地址、目的地址为第二CE的MAC地址的MAC地址表项上述第一CE的MAC地址和第二CE的MAC地址的,于是也将该第一报文和该第一报文的入端口信息上送控制器,以使控制器进行MAC学习,然后控制器将学习获取生成的第一MAC地址表项分别加入到与各OF交换设备对应的地址表中。需要说明的是,上述第一MAC地址表项可以泛指在发送上述第一报文的过程中,控制器学习到的MAC地址表项;同理,下文中,第二MAC地址表项可以泛指在发送第二报文的过程中,控制器学习到的地址表项;第三MAC地址表项可以泛指在发送第三报文的过程中,控制器学习到的MAC地址表项;第四MAC地址表项可以泛指在发送第四报文的过程中,控制器学习到的MAC地址表项;另外,对应于不同的OF交换设备可以不同。
参照图2,假设之前没有任何报文交互,所有的地址表都是空的,需要说明的是,控制器会为管理范围内的所有OF交换设备维护一个MAC地址表;第一CE205向第二CE206发送第一报文的过程中,经过第一OF交换设备202时,第一OF交换设备202的端口a接收该第一报文,其中,记第一CE205的MAC地址为mac1,记第二CE206的MAC地址为mac2,该第一报文在第一OF交换设备202中未匹配到包含源MAC地址为mac1、目的MAC地址为mac2的MAC地址表项,于是将该第一报文和该第一报文的入端口信息(端口a)上送控制器,控制器进行MAC学习,从该第一报文中获取到该第一报文的源MAC地址为mac1、目的MAC地址为mac2,以及获取上述端口a,并记入与第一OF交换设备202对应的第一MAC地址表中,此时,该第一MAC地址表如表1.1所示,
表1.1
源MAC |
目的MAC |
出端口号 |
mac2 |
mac1 |
a |
这样当后续第一MAC地址表项下发给第一OF交换设备后,再有第二CE发送给第一CE的报文,该第一OF交换设备就知道将报文从端口a送出。
本实施例中,由于上述地址表中只有第一MAC地址表项,所以暂不发送,此时控制器会将该第一报文返回给上述第一OF交换设备202,并指示该第一OF交换设备202将该第一报文广播出去,使与该第一OF交换设备相连的OF交换设备都能够接收到该第一报文,上述指示可以是控制器在返回第一报文的同时发送一个指示消息来实现;以图2为例,第二OF交换设备203会从端口c接收到该第一报文,第三OF交换设备204会从端口e接收到该第一报文,那么,与上述第一OF交换设备202的处理方式一样,先进行匹配,当没有匹配到包含源MAC地址为mac1、目的MAC地址为mac2的MAC地址表项时,将该第一报文上送给控制器201,以使控制器201进行MAC学习,并将获取的第一MAC地址表项分别记入与第二OF交换设备203和第三OF交换设备204对应的MAC地址表中,其中与第二OF交换设备203对应的第二MAC地址表如表2.1所示,
表2.1
源MAC |
目的MAC |
出端口号 |
mac2 |
mac1 |
c |
与第三OF交换设备204对应的第三MAC地址表如表3.1所示,
表3.1
源MAC |
目的MAC |
出端口号 |
mac2 |
mac1 |
e |
此时与第二OF交换设备203和第三OF交换设备204对应的MAC地址表中都只包含一个MAC地址条目,因此不进行下发,都只是在控制器进行维护;在此之后,控制器会指示各OF交换设备将该第一报文从各端口广播出去,以使该第一报文能够到达第二CE206。
上述S102中,控制器在上述第二CE向上述第一CE发送第二报文时,学习获取并生成第二地址表项,具体为,上述控制器接收上述第二OF交换设备发送的该第二报文和该第二报文的入端口信息,该第二报文中包含的目的MAC地址为第一CE的MAC地址、源MAC地址为和第二CE的MAC地址,该第二报文为上述第二OF交换设备在未匹配到包含源地址为第二CE的MAC地址、目的地址为第一CE的MAC地址的MAC地址表项时发送的,此时,第二CE的MAC地址为源MAC地址,第一CE的MAC地址为目的MAC地址;然后,该控制器学习获取上述第二MAC地址表项,并将该第二MAC地址表项加入到与上述第二OF交换设备对应的第二地址表中,该第二地址表包括上述第一MAC地址表项和第二MAC地址表项。
参照图2,第二CE206向第一CE205发送第二报文的过程中,经过第二OF交换设备203时,第二OF交换设备203的端口d接收该第二报文,该第二报文在第二OF交换设备203中未匹配到包含源MAC地址为mac2、目的MAC地址为mac1的地址表项,于是将该第二报文和该第二报文的入端口信息(端口d)上送控制器201,控制器201进行MAC学习,从该第二报文中获取到该第二报文的源MAC地址为mac2、目的MAC地址为mac1,以及获取该入端口信息,即端口d,并记入与第二OF交换设备203对应的第二MAC地址表中,此时,该第二MAC地址表如表2.2所示,
表22
源MAC |
目的MAC |
出端口号 |
mac2 |
mac1 |
c |
mac1 |
mac2 |
d |
此时,第二MAC地址表中包含了一对MAC地址表项,于是将这一对MAC地址表项以流表的形式下发给上述第二OF交换设备;具体实现过程中,控制器向该第二OF交换设备下发该第一MAC地址表项和第二MAC地址表项之后,接收上述第一OF交换设备发送的上述第二报文,上述第二报文中包含第一CE的MAC地址和第二CE的MAC地址,上述第二报文为上述第一OF交换设备在未匹配到包含源地址为第二CE的MAC地址、目的地址为第一CE的MAC地址的MAC地址表项时发送的;接着,该控制器学习获取上述第二MAC地址表项,并将上述第二MAC地址表项加入到与上述第一OF交换设备对应的第一地址表中,上述第一地址表包括上述第一MAC地址表项和第二MAC地址表项;进一步地,上述控制器下发上述第一MAC地址表项和第二MAC地址表项,具体为上述控制器向上述第一OF交换设备下发上述第一MAC地址表项和第二MAC地址表项,以使上述第一OF交换设备根据上述第一MAC地址表项将上述第二报文发送给上述第一CE。
具体地,当第二OF交换设备接收到上述第一MAC地址表项和第二MAC地址表项之后,该第二OF交换设备中的第二报文可以匹配到其中的第一MAC地址表项,从而从端口c将该第二报文发出,通过第一OF交换设备的端口b将该第二报文发送给第一OF交换设备,第一OF交换设备未匹配到源MAC地址为mac2、目的MAC地址为mac1的MAC地址表项,于是将该第二报文上送控制器,控制器进行MAC学习,从该第二报文中获取到该第二报文的源MAC地址为mac2、目的MAC地址为mac1,以及获取该第二报文发送给第一OF交换设备时的入端口号b,并记入与第一OF交换设备对应的第一MAC地址表中,此时,该第一MAC地址表如表1.2所示,
表1.2
源MAC |
目的MAC |
出端口号 |
mac2 |
mac1 |
a |
mac1 |
mac2 |
b |
此时,第一MAC地址表中包含了一对地址表项,于是将这一对地址表项以流表的形式下发给上述第一OF交换设备,于是控制器返回给该第一OF交换设备的第二报文可以匹配到其中的第一地址表项,从而从端口a将该第二报文发送给第一CE。
接着,第一CE205向第三CE207发送第三报文的过程中,经过第一OF交换设备202时,从第一OF交换设备202的端口a输入,其中,记第一CE205的MAC地址为mac1,记第三CE207的MAC地址为mac3,该第三报文在第一OF交换设备202中未匹配到包含源MAC地址为mac1、目的MAC地址为mac3的MAC地址表项,于是将该第三报文上送控制器,控制器进行MAC学习,从该第三报文中获取到该第三报文的源MAC地址为mac1、目的MAC地址为mac3,以及获取该第三报文发送给第一OF交换设备202时的入端口号a,并作为第三MAC地址表项记入与第一OF交换设备202对应的第一MAC地址表中,此时,该MAC地址表如表1.3所示,
表1.3
源MAC |
目的MAC |
出端口号 |
mac2 |
mac1 |
a |
mac1 |
mac2 |
b |
mac3 |
mac1 |
a |
但此时地址表中对于mac3到mac1这条MAC地址表项来说,还不存在相对的mac1到mac3的MAC地址表项,因此暂时不下发,仅在控制器进行维护。
控制器会将该第三报文返回给上述第一OF交换设备202,并指示该第一OF交换设备202将该第三报文广播出去,使与该第一OF交换设备通信的OF交换设备都能够接收到该第三报文,上述指示可以是控制器在返回第三报文的同时发送一个指示消息来实现;以图2为例,第二交换设备203和第三交换设备204都会接收到该第三报文,那么,与上述第一交换设备202的处理方式一样,先进行匹配,当没有匹配到包含源MAC地址为mac1、目的MAC地址为mac3的MAC地址表项时,将该第三报文上送给控制器201,以使控制器201进行MAC学习,并作为第三MAC地址表项分别记入与第二OF交换设备203和第三OF交换设备204对应的MAC地址表中,其中与第二OF交换设备203对应的第二MAC地址表如表2.3所示,
表2.3
源MAC |
目的MAC |
出端口号 |
mac2 |
mac1 |
c |
mac1 |
mac2 |
d |
mac3 |
mac1 |
c |
与第三OF交换设备204对应的第三MAC地址表如表3.2所示,
表3.2
源MAC |
目的MAC |
出端口号 |
mac2 |
mac1 |
e |
mac3 |
mac1 |
e |
在第二地址表和第三地址表中对于mac3到mac1这条MAC地址表项来说,还不存在相对的mac1到mac3的MAC地址表项,因此暂时不下发,仅在控制器进行维护。进而,控制器会指示各OF交换设备将该第三报文从各端口广播出去,以使该第三报文能够到达第三CE207。
再接下来,第三CE207向第一CE205发送第四报文的过程中,经过第三OF交换设备204时,从第三OF交换设备204的端口f输入,该第四报文在第三OF交换设备204中未匹配到包含源MAC地址为mac3、目的MAC地址为mac1的MAC地址表项,于是将该第四报文上送控制器201,控制器201进行MAC学习,从该第四报文中获取到该第四报文的源MAC地址为mac3、目的MAC地址为mac1,以及获取该第四报文发送给第三OF交换设备204时的入端口号f,并作为第四MAC地址表项记入与第三OF交换设备204对应的第三MAC地址表中,此时,该第三MAC地址表如表3.3所示,
表3.3
源MAC |
目的MAC |
出端口号 |
mac2 |
mac1 |
e |
此时,第三MAC地址表中包含了“mac1到mac3”和“mac3到mac1”这一对MAC地址表项,于是将这一对MAC地址表项,即第三MAC地址表项和第四MAC地址表项以流表的形式下发给上述第二OF交换设备。
当第三OF交换设备接收到上述第三MAC地址表项和第四MAC地址表项之后,控制器返回给该第三OF交换设备的第四报文可以匹配到其中的第三MAC地址表项,从而从端口e将该第四报文发出,通过第一OF交换设备的端口g将该第四报文发送给第一OF交换设备,第一OF交换设备未匹配到源MAC地址为mac3、目的MAC地址为mac1的MAC地址表项,于是将该第四报文上送控制器,控制器进行MAC学习,从该第四报文中获取到该第四报文的源MAC地址为mac3、目的MAC地址为mac1,以及获取该第四报文发送给第一OF交换设备时的入端口号g,并作为第四MAC地址表项记入与第一OF交换设备对应的第一MAC地址表中,此时,该第一MAC地址表如表1.4所示,
表1.4
源MAC |
目的MAC |
出端口号 |
mac2 |
mac1 |
a |
mac1 |
mac2 |
b |
mac3 |
mac1 |
a |
mac1 |
mac3 |
g |
此时,第一MAC地址表中包含了“mac1到mac3”和“mac3到mac1”这一对MAC地址表项,于是将这一对MAC地址表项,即第三MAC地址表项和第四MAC地址表项以流表的形式下发给上述第一OF交换设备。如果采用现有技术,当OF交换设备接收到报文时,只进行目的MAC地址的匹配,那么当第四报文经过上述第一OF交换设备时,会在该第一OF交换设备中已有的上述第一MAC地址表项中匹配到目的MAC地址mac1,那么就会将该第四报文通过端口a直接发送给第一CE,而不会上送给控制器,这样的话控制器就不会学习到上述表1.4中的第四MAC地址表项,而采用本发明实施例,需要同时匹配到目的MAC和源MAC,那么第一OF交换设备就必须把该第四报文上送给控制器。
于是控制器返回给该第一OF交换设备的第四报文可以匹配到其中的第三MAC地址表项,从而从端口a将该第四报文发送给第一CE。
本实施例中,OF网络中的控制器生成第一MAC地址表项后,要判断OF交换设备的MAC地址表中是否存在相对应的第二MAC地址表项,如果存在第二MAC地址表项,再将这一对MAC地址表项下发,如果不存在,等学习生成第二MAC地址表项之后,再将这一对地址表项下发,这样可以使得控制器将往返的MAC地址表项都学习到;进一步的,本实施例中,使OF交换设备在接收到报文时同时匹配目的MAC地址和源MAC地址,以保证控制器可以学习到目的MAC地址相同但是源MAC地址不同的所有MAC地址表项,更好的避免了控制器可能学习不到整个网络中的部分MAC地址的情况,使得控制器可以对整个网络中的数据流进行很好的控制。另外,如果采用现有技术,控制器没有学习到上述第二MAC地址表项,那么下次第一CE向第二CE发送报文时可能还是匹配不到目的MAC,进而再把报文上送给控制器,而采用本发明实施例后,当第一CE再给第二CE发送报文时就可以不同上送控制器,因而也可以缓解控制器的负担。
图3为本发明提供的MAC地址学习方法实施例三的流程示意图,该方法的执行主体可以为上述第一OF交换设备或第二OF交换设备,如图3所示,与前述控制器侧相对应,该方法包括:
S301、OF交换设备接收CE发送的报文,其中,该报文源地址为第一CE的MAC地址,该报文的目的地址为第二CE的MAC地址;所述报文的入端口为所述OF交换设备接收所述第一报文的端口。
S302、若该报文未匹配到包含源地址为第一CE的MAC地址、目的地址为第二CE的MAC地址的MAC地址表项,则OF交换设备将该报文和该报文的入端口信息发送给控制器,以使控制器生成MAC地址表项,其中,该MAC地址表项的源地址为第二CE的MAC地址,该MAC地址表项的目的地址为第一CE的MAC地址;该MAC地址表项的出端口为所述报文的入端口。控制器侧的具体实施过程可参照前述方法实施例,在此不再赘述。
进一步地,在S302之后,该OF交换设备会接收到控制器发送的MAC地址表项,即成对的地址表项。
本实施例中,OF交换设备接收到CE发送的报文后,同时匹配该报文的目的MAC地址和源MAC地址,若没有同时匹配到就将该报文和该报文的入端口信息上送给控制器,使控制器进行MAC学习,获取对应的地址表项,并成对的下发,以避免控制器会学习不到OF网络中的一些地址表项,从而使控制器能够更好的控制整个网络的数据流。
图4为本发明提供的控制器实施例一的结构示意图,如图4所示,该控制器包括:接收模块401、生成模块402、保存模块403、判断模块404和发送模块405,其中,
接收模块401,用于接收开放流OF交换设备发送的第一报文和所述第一报文的入端口信息,其中第一报文的源地址为第一用户边缘设备CE的MAC地址,第一报文的目的地址为第二CE的MAC地址;第一报文的入端口为所述OF交换设备接收所述第一报文的端口;
生成模块402,用于根据所述第一报文和所述第一报文的入端口信息生成第一MAC地址表项,其中,所述第一MAC地址表项的源地址为第二CE的MAC地址,所述第一MAC地址表项的目的地址为第一CE的MAC地址;所述第一MAC地址表项的出端口为所述第一报文的入端口;
保存模块403、用于将所述第一MAC地址表项保存到所述OF交换设备的MAC地址表;
判断模块404,用于判断所述OF交换设备的MAC地址表中是否存在第二MAC地址表项,其中,所述第二MAC地址表项的源地址为第一CE的MAC地址,所述第二MAC地址表项的目的地址为第二CE的MAC地址;
发送模块405、用于如果存在所述第二MAC地址表项,控制器向所述OF交换设备发送所述第一MAC地址表项和所述第二MAC地址表项。
上述各模块用于执行前述方法实施例,具体实现方式类似,在此不再赘述。
本实施例中,OF网络中的控制器生成第一MAC地址表项后,要判断OF交换设备的MAC地址表中是否存在相对应的第二MAC地址表项,如果存在第二MAC地址表项,再将这一对MAC地址表项下发,这样可以使得控制器将往返的MAC地址表项都学习到,避免了控制器可能学习不到整个网络中的部分MAC地址表项的情况,使得控制器可以对整个网络中的数据流进行很好的控制。
进一步地,根据上述判断模块判断的结果,上述接收模块401,还用于如果不存在所述第二MAC地址表项,控制器接收所述OF交换设备发送的第二报文和所述第二报文的入端口信息,其中第二报文的源地址为第二CE的MAC地址,第二报文的目的地址为第一CE的MAC地址;第二报文的入端口为所述OF交换设备接收所述第二报文的端口;
生成模块402,还用于根据所述第二报文和所述第二报文的入端口信息生成所述第二MAC地址表项,其中,所述第二MAC地址表项的出端口为所述第二报文的入端口;
保存模块403,还用于将所述第二MAC地址表项保存到所述OF交换设备的MAC地址表;
发送模块404,还用于向所述OF交换设备发送所述第一MAC地址表项和所述第二MAC地址表项。
图5为本发明提供的交换设备实施例一的结构示意图,如图5所示,该交换设备包括:接收模块501和发送模块502,其中:
接收模块501,用于接收用户边缘设备CE发送的报文,其中,所述报文源地址为第一用户边缘设备CE的MAC地址,所述报文的目的地址为第二CE的MAC地址;所述报文的入端口为所述OF交换设备接收所述报文的端口;
发送模块502,用于若所述报文未匹配到包含源地址为第一CE的MAC地址、目的地址为第二CE的MAC地址的MAC地址表项,则OF交换设备将所述报文和所述报文的入端口信息发送给控制器,以使控制器生成MAC地址表项,其中,所述MAC地址表项的源地址为第二CE的MAC地址,所述MAC地址表项的目的地址为第一CE的MAC地址;所述MAC地址表项的出端口为所述报文的入端口。
进一步地,接收模块501,还用于接收控制器发送的MAC地址表项。
本实施例中,OF交换设备接收到CE发送的报文后,同时匹配该报文的目的MAC地址和源MAC地址,若没有同时匹配到就将该报文和该报文的入端口信息上送给控制器,使控制器进行MAC学习,获取对应的地址表项,并成对的下发,以避免控制器会学习不到OF网络中的一些地址表项,从而使控制器能够更好的控制整个网络的数据流。
图6为本发明提供的控制器实施例二的结构示意图,如图6所示,该控制器包括:接收器601、处理器602、存储器603和发送器604,其中:
接收器601,用于接收开放流OF交换设备发送的第一报文和所述第一报文的入端口信息,其中第一报文的源地址为第一用户边缘设备CE的MAC地址,第一报文的目的地址为第二CE的MAC地址;第一报文的入端口为所述OF交换设备接收所述第一报文的端口;
处理器602,用于根据所述第一报文和所述第一报文的入端口信息生成第一MAC地址表项,其中,所述第一MAC地址表项的源地址为第二CE的MAC地址,所述第一MAC地址表项的目的地址为第一CE的MAC地址;所述第一MAC地址表项的出端口为所述第一报文的入端口;
存储器603,用于将所述第一MAC地址表项保存到所述OF交换设备的MAC地址表;
处理器602,还用于判断所述OF交换设备的MAC地址表中是否存在第二MAC地址表项,其中,所述第二MAC地址表项的源地址为第一CE的MAC地址,所述第二MAC地址表项的目的地址为第二CE的MAC地址;发送器604,用于如果存在所述第二MAC地址表项,控制器向所述OF交换设备发送所述第一MAC地址表项和所述第二MAC地址表项。
本实施例中,OF网络中的控制器生成第一MAC地址表项后,要判断OF交换设备的MAC地址表中是否存在相对应的第二MAC地址表项,如果存在第二MAC地址表项,再将这一对MAC地址表项下发,这样可以使得控制器将往返的MAC地址表项都学习到,避免了控制器可能学习不到整个网络中的部分MAC地址表项的情况,使得控制器可以对整个网络中的数据流进行很好的控制。
进一步地,接收器601,还用于如果不存在所述第二MAC地址表项,控制器接收所述OF交换设备发送的第二报文和所述第二报文的入端口信息,其中第二报文的源地址为第二CE的MAC地址,第二报文的目的地址为第一CE的MAC地址;第二报文的入端口为所述OF交换设备接收所述第二报文的端口;
这种情况下,处理器602,还用于根据所述第二报文和所述第二报文的入端口信息生成所述第二MAC地址表项,其中,所述第二MAC地址表项的出端口为所述第二报文的入端口;
存储器603,将所述第二MAC地址表项保存到所述OF交换设备的MAC地址表;发送器604,用于向所述OF交换设备发送所述第一MAC地址表项和所述第二MAC地址表项。
该控制器用于执行前述方法实施例,其实现原理类似,在此不再赘述。
图7为本发明提供的交换设备实施例二的结构示意图,如图7所示,该交换设备包括:接收器701,发送器702,其中:
接收器701,用于接收CE发送的报文,其中,所述报文源地址为第一用户边缘设备CE的MAC地址,所述报文的目的地址为第二CE的MAC地址;所述报文的入端口为所述OF交换设备接收所述报文的端口;
发送器702,用于若所述报文未匹配到包含源地址为第一CE的MAC地址、目的地址为第二CE的MAC地址的MAC地址表项,则OF交换设备将所述报文和所述报文的入端口信息发送给控制器,以使控制器生成MAC地址表项,其中,所述MAC地址表项的源地址为第二CE的MAC地址,所述MAC地址表项的目的地址为第一CE的MAC地址;所述MAC地址表项的出端口为所述报文的入端口。
进一步地,上述接收器701,还用于接收控制器发送的MAC地址表项。
该交换设备用于执行前述方法实施例,其实现原理类似,在此不再赘述。
图8为本发明提供的MAC地址学习方法实施例四的流程示意图,如图8所示,该方法包括:
S801、OF交换设备接收CE发送的报文。
S802、OF交换设备根据上述报文生成MAC地址表项,其中上述MAC地址表项的目的地址为该报文的源地址;上述MAC地址表项的出端口为该OF交换设备接收所述报文的端口。
本实施例中,当OF交换设备接收到报文之后,同样将该报文在本OF交换设备中进行匹配,可以是匹配目的MAC地址,如果该报文没有匹配到,不需要将该报文上送给控制器,而是OF交换设备自己进行MAC学习,获取MAC地址表项,这样OF交换设备可以学习获取到它通信过程中的所有MAC地址表项,因为只要经过它的报文它都可以进行学习。
S803、OF交换设备保存该MAC地址表项。
S804、OF交换设备向控制器发送上述MAC地址表项。
当OF交换设备生成MAC学习到地址表项后,上送给控制器,具体可以是每学习一条MAC地址表项就上送控制器,也可以是将需要经过该OF交换设备转发的MAC地址信息都学习到以后再上送控制器,使控制器将接收到的MAC地址表项加入该OF交换设备对应的MAC地址表进行维护,并使控制器可以掌握整个网络的数据流向,以进行对整个网络数据流进行很好的控制。
本实施例中,OF交换设备根据接收到的报文生成MAC地址表项并进行保存,这样可以学习到它通信过程中的所有地址表项,将学习生成的MAC地址表项上送给控制器,控制器将各OF交换设备上送的MAC地址表项进行维护,可以获取整个网络的MAC地址,以对整个网络的数据流进行控制。
进一步地,上述S804中可以是上述OF交换设备通过OF消息向控制器发送该MAC地址表项。
具体地,上述OF消息可命名为OFP_MAC_MOD,上述OF消息的格式可以为:
对上述代码的主要内容作出说明如下:第(1)行用于定义上述OF消息名;第(3)行用于携带上送该OF消息的OF交换设备;第(4)行用于携带该MAC地址表项的标识;第(6)行用于携带上述地址表项的老化周期;第(8)行用于携带上述MAC地址表项要匹配的内容,在本实施例中匹配目的MAC;第(9)行用于携带匹配到目的MAC之后要进行的动作,在本实施例中指示将报文从哪个端口发送出去。
本实施例中,OF交换设备根据接收到的报文生成MAC地址表项并进行保存,这样可以学习到它通信过程中的所有地址表项,将学习生成的MAC地址表项通过OF消息上送给控制器,控制器将各OF交换设备上送的MAC地址表项进行维护,可以获取整个网络的MAC地址,以对整个网络的数据流进行控制。
图9为本发明提供的MAC地址学习方法实施例五的流程示意图,如图9所示,该方法包括:
S901、控制器接收OF交换设备发送的MAC地址表项。
S902、控制器将上述MAC地址表项保存到上述OF交换设备的MAC地址表。
与图8所示实施例相对应,该控制器接收OF交换设备发送的MAC地址表项,并保存到对应的MAC地址表,并进行维护,它可以获取整个网络的MAC地址,以对整个网络的数据流进行控制。
图10为本发明提供的交换设备实施例三的结构示意图,该交换设备可以是OF网络中的任一OF交换设备,该交换设备包括:接收模块110、生成模块120、保存模块130和发送模块140
接收模块110,用于接收CE发送的报文;
生成模块120,用于根据所述报文生成MAC地址表项,其中所述MAC地址表项的目的地址为所述报文的源地址;所述MAC地址表项的出端口为所述OF交换设备接收所述报文的端口;
保存模块130,用于保存所述MAC地址表项;
发送模块140,用于向控制器发送向控制器发送所述MAC地址表项。
进一步地,发送模块140,具体用于通过OF消息向控制器发送所述MAC地址表项。
该交换设备用于执行图8所示的方法实施例,其实现原理类似,在此不再赘述。
本实施例中,OF交换设备根据接收到的报文生成MAC地址表项并进行保存,这样可以学习到它通信过程中的所有地址表项,将学习生成的MAC地址表项通过OF消息上送给控制器,控制器将各OF交换设备上送的MAC地址表项进行维护,可以获取整个网络的MAC地址,以对整个网络的数据流进行控制。
图11为本发明提供的控制器实施例三的结构示意图,如图11所示,该控制器包括:接收模块111和保存模块112,其中:
接收模块111,用于接收OF交换设备发送的MAC地址表项;保存模块112,用于将所述MAC地址表项保存到所述OF交换设备对应的MAC地址表。
该控制器用于执行图9所示的方法实施例,其实现原理类似,在此不再赘述。
图12为本发明提供的交换设备实施例四的结构示意图,如图12所示,该交换设备可以是OF网络中的任一OF交换设备,该交换设备包括:接收器121、处理器122、存储器123和发送器124,其中:
接收器121,用于接收CE发送的报文;处理器122,根据所述报文生成MAC地址表项,其中所述MAC地址表项的目的地址为所述报文的源地址;所述MAC地址表项的出端口为所述OF交换设备接收所述报文的端口;存储器123,用于保存所述MAC地址表项;发送器124,用于向控制器发送所述MAC地址表项。
该交换设备用于执行图8所示的方法实施例,其实现原理类似,在此不再赘述。
图13为本发明提供的控制器实施例四的结构示意图,如图13所示,该控制器包括:接收器131和存储器132,其中:
接收器131,用于接收OF交换设备发送的MAC地址表项;存储器132,用于将所述MAC地址表项保存到所述OF交换设备对应的MAC地址表。
该控制器用于执行图9所示的方法实施例,其实现原理类似,在此不再赘述。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。