用于处理未知单播数据包的方法和系统的制作方法

文档序号:8003888阅读:389来源:国知局
用于处理未知单播数据包的方法和系统的制作方法
【专利摘要】本申请涉及用于处理未知单播数据包的方法和系统。所述系统包括:适于运行交换机控制器应用的处理器,用于检测网络中的交换机的逻辑器,用于确定交换机能够通过交换机控制器应用进行通信的逻辑器,以及用于改写用于处理交换机中的未知单播数据包以便当接收到未知单播数据包时,交换机将由其接收到的任何未知单播数据包发送到系统代替泛洪的默认规则的逻辑器。所述方法包括:检测网络中的交换机,确定交换机能够通过交换机控制器应用进行通信,以及改写用于处理交换机中的未知单播数据包以便当接收到未知单播数据包时,交换机将由其接收到的任何未知单播数据包发送到交换机控制器代替泛洪的默认规则。
【专利说明】用于处理未知单播数据包的方法和系统
【技术领域】
[0001]本发明涉及数据中心基础结构,具体来说,本发明涉及通过避免由交换机MAC地址表溢出所产生的未知单播泛洪(unicast flood)来改善结构带宽使用率。
【背景技术】
[0002]在分组交换网络交换机中,通常对目的地媒体访问控制(MAC)地址执行查询,以发现用于转发数据包的交换设备的实际目的地端口。对MAC地址学习表执行此查询。大多数系统使用某种类型的交换处理器,诸如专用集成电路(ASIC),来进行此判断。交换处理器维护用于执行查询解析的查询表,该查询表在典型的网络可以相当长,可能具有成千上万个条目。查询表存储在芯片中或者存储在芯片外部。
[0003]当交换机的MAC地址表变满时,没有容量学习新MAC地址条目,尽管在数据包处理过程中可能由交换机发现新的未知的MAC地址。在此情况下,当带有不在MAC地址表里的目的地MAC的单播数据包到达时,交换机可能既不能从传入的数据包“学习IAC地址,交换机也不能够确定将传入的数据包转发到哪一个端口,因为MAC地址不与交换机的外出端口相关联。
[0004]为了解决此情况,当前,交换机的默认行为是在全部外出端口(排除在其上接收到数据包的传入端口)上创建未知单播泛洪(发送到多个端口的单播数据包),好像单播泛洪是广播数据包(多播数据包)。在发送单播泛洪的时间和接收到响应的时间两者之间,MAC地址表中的一个或多个MAC地址条目必须老化(age out),以便来自具有目的地MAC地址的设备的响应通过创建MAC地址/交换机端口关联,允许交换机“学习”作出响应的设备的MAC地址,以便用于未来的转发引用。如果MAC地址表仍满(B卩,在响应时间间隔内,没有现有的MAC地址条目老化),那么相同的问题会持续,并且未知的单播广播反复地泛洪结构。
[0005]此默认交换机行为存在两个问题。首先,此行为消耗诸如结构带宽之类的关键资源,其次,此行为可能会导致非希望的主机接收到敏感的流量(以单播泛洪的形式)的安全问题。
[0006]相应地,具有能够解决接收具有未知MAC地址的数据包而不会产生单播泛洪的问题的系统和/或方法是有益的。

【发明内容】

[0007]在一个实施例中,系统包括以硬件实现的适于运行交换机控制器应用的处理器,被配置成用于检测网络中的交换机的逻辑器,被配置成用于确定所述交换机能够通过所述交换机控制器应用进行通信的逻辑器,以及被配置成用于改写用于处理所述交换机中的未知单播数据包以便当接收到未知单播数据包时,所述交换机将由所述交换机接收到的任何未知单播数据包发送到所述系统代替泛洪的默认规则的逻辑器。
[0008]根据另一实施例,用于处理未知单播数据包的计算机程序产品包括实现了计算机可读的程序代码的计算机可读存储介质,计算机可读的程序代码包括:被配置成用于检测网络中的交换机的计算机可读的程序代码,被配置成用于确定所述交换机能够通过所述交换机控制器应用进行通信的计算机可读的程序代码,以及被配置成用于改写用于处理所述交换机中的未知单播数据包以便当接收到未知单播数据包时,所述交换机将由所述交换机接收到的任何未知单播数据包发送到所述交换机控制器代替泛洪的默认规则的计算机可读的程序代码,其中所述交换机控制器能够运行所述交换机控制器应用和与所述交换机进行通信。
[0009]在再一个实施例中,一种用于处理未知单播数据包的方法包括:检测包括交换机和交换机控制器的网络中的交换机,确定所述交换机能够通过所述交换机控制器应用进行通信,以及改写用于处理所述交换机中的未知单播数据包以便当接收到未知单播数据包时,所述交换机将由所述交换机接收到的任何未知单播数据包发送到所述交换机控制器代替泛洪的默认规则。
[0010]根据另一实施例,交换机包括以硬件实现的适于运行OpenFlow应用的处理器,被配置成用于允许OpenFlow控制器改写用于处理所述交换机中的未知单播数据包以便当接收到未知单播数据包时,所述交换机将由所述交换机接收到的任何未知单播数据包发送到所述OpenFlow控制器代替泛洪的默认规则的逻辑器,被配置成用于接收未知单播数据包的逻辑器,被配置成用于确定何时本地媒体访问控制(MAC)地址表已满的逻辑器,被配置成用于当所述本地MAC地址不满时学习与所述数据包相关联的源MAC地址的逻辑器,被配置成用于当所述本地MAC地址已满时准备源MAC进入端口关联条目并将所述源MAC进入端口关联条目发送到所述OpenFlow控制器的逻辑器,被配置成用于确定与所述数据包相关联的目的地MAC地址何时位于所述本地MAC地址表中的逻辑器,被配置成用于当与所述数据包相关联的所述目的地MAC地址位于所述本地MAC地址表中时,根据所述目的地MAC地址转发所述数据包的逻辑器,以及被配置成用于根据存储在所述扩展的MAC地址表中的与所述数据包相关联的目的地MAC地址转发所述数据包或者广播所述数据包的逻辑器,其中当具有所述目的地MAC地址的条目位于所述扩展的MAC地址表中时,从所述OpenFlow控制器接收存储在所述扩展的MAC地址表中的与所述数据包相关联的所述目的地MAC地址。
[0011]通过阅读下面参考附图进行的作为本发明的原理飞示例示出的详细描述,本发明的其他方面和实施例将变得显而易见。
【专利附图】

【附图说明】
[0012]图1示出了根据一个实施例的网络体系结构。
[0013]图2示出了根据一个实施例的可以与图1的服务器和/或客户端相关联的代表性的硬件环境。
[0014]图3A是根据一个实施例的网络的简图。
[0015]图3B示出了根据一个实施例的网络的简图。
[0016]图4示出了根据一个实施例的使用OpenFlow的网络的简图。
[0017]图5是根据一个实施例的方法的流程图。
[0018]图6是根据另一实施例的方法的流程图。
[0019]图7是根据再一个实施例的方法的流程图。
[0020]图8是根据另一实施例的方法的流程图。【具体实施方式】
[0021]下面的描述只用于说明本发明的一般原理,而不对下列的权利要求书中所叙述的发明构思作出限制。进一步地,此处所描述的特定特征可以与各种可能的组合和置换中的每一种中的其他所描述的特征组合地使用。
[0022]除非此处以别的方式具体地定义,所有术语都是作为它们的最广泛的可能的解释给出的,包括从说明书暗示的含义以及所属领域的技术人员所理解的含义和/或如在词典、专著等等中所定义的。
[0023]还必须指出,如在说明书和所附权利要求书中所使用的,除非另作说明,单数形成“一”,“一个”包括多个涉及的对象。
[0024]在一种方法中,用于学习单播数据包的未知媒体访问控制(MAC)地址的默认规则可以使用诸如OpenFlow控制器(OFC)之类的交换机控制器来实现,该交换机控制器与在交换机上操作的诸如OpenFlow代理(OFA)之类的代理进行通信。交换机控制器可以代表交换机(其本机MAC地址表可能已满)维护扩展的MAC地址表,以指示向交换机的转发决定,如此避免了网络中的广播泛洪(broadcast flood)。
[0025]在一个一般性的实施例中,系统包括以硬件实现的适于运行交换机控制器应用的处理器,被配置成用于检测网络中的交换机的逻辑,被配置成用于确定所述交换机能够通过所述交换机控制器应用进行通信的逻辑,以及被配置成用于改写用于处理所述交换机中的未知单播数据包以便当接收到未知单播数据包时,所述交换机将由所述交换机接收到的任何未知单播数据包发送到所述系统代替泛洪的默认规则的逻辑。
[0026]根据另一一般性的实施例,用于处理未知单播数据包的计算机程序产品包括实现了计算机可读的程序代码的计算机可读存储介质,计算机可读的程序代码包括:被配置成用于检测网络中的交换机的计算机可读的程序代码,被配置成用于确定所述交换机能够通过所述交换机控制器应用进行通信的计算机可读的程序代码,以及被配置成用于改写用于处理所述交换机中的未知单 播数据包以便当接收到未知单播数据包时,所述交换机将由所述交换机接收到的任何未知单播数据包发送到所述交换机控制器代替泛洪的默认规则的计算机可读的程序代码,其中所述交换机控制器能够运行所述交换机控制器应用和与所述交换机进行通信。
[0027]在再一个一般性的实施例中,一种用于处理未知单播数据包的方法包括:检测包括交换机和交换机控制器的网络中的交换机,确定所述交换机能够通过所述交换机控制器应用进行通信,以及改写用于处理所述交换机中的未知单播数据包以便当接收到未知单播数据包时,所述交换机将由所述交换机接收到的任何未知单播数据包发送到所述交换机控制器代替泛洪的默认规则。
[0028]根据另--般性的实施例,交换机包括以硬件实现的适于运行OpenFlow应用的
处理器,被配置成用于允许OpenFlow控制器改写用于处理所述交换机中的未知单播数据包以便当接收到未知单播数据包时,所述交换机将由所述交换机接收到的任何未知单播数据包发送到所述OpenFlow控制器代替泛洪的默认规则的逻辑,被配置成用于接收未知单播数据包的逻辑,被配置成用于确定何时本地媒体访问控制(MAC)地址表已满的逻辑,被配置成用于当所述本地MAC地址不满时学习与所述数据包相关联的源MAC地址的逻辑,被配置成用于当所述本地MAC地址已满时准备源MAC进入端口关联条目并将所述源MAC进入端口关联条目发送到所述OpenFlow控制器的逻辑,被配置成用于确定与所述数据包相关联的目的地MAC地址何时位于所述本地MAC地址表中的逻辑,被配置成用于当与所述数据包相关联的所述目的地MAC地址位于所述本地MAC地址表中时根据所述目的地MAC地址转发所述数据包的逻辑,以及被配置成用于根据存储在所述扩展的MAC地址表中的与所述数据包相关联的目的地MAC地址转发所述数据包或者广播所述数据包的逻辑,其中当具有所述目的地MAC地址的条目位于所述扩展的MAC地址表中时,从所述OpenFlow控制器接收存储在所述扩展的MAC地址表中的与所述数据包相关联的所述目的地MAC地址。
[0029]所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为〃逻辑"、〃电路"、〃模块〃或〃系统"。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0030]可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或非瞬时的计算机可读存储介质。非瞬时的计算机可读介质可以是,例如,但不仅限于,电、磁、光、电磁、红外、或半导体系统、装置、或设备或前面的各项的任何合适的组合。非瞬时的计算机可读介质的更具体的示例(非穷尽列表)包括下列各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPR0M或闪存)、便携式压缩光盘只读存储器(⑶-ROM)、蓝光盘只读存储器(BD-R0M)、光存储设备、磁存储设备,或前面的各项的任何合适的组合。在此文档的上下文中,非瞬时的计算机可读存储介质可以是能够包含、或存储供指令执行系统、设备使用或与它们一起使用的程序或应用程序的任何有形的介质。
[0031]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是非瞬时的计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序,诸如具有一个或多个电线的电连接,光纤等。
[0032]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光纤电缆、RF等等,或者上述的任意合适的组合。
[0033]可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如"C"程序设计语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机或服务器可以通过任意种类的网络——包括局域网(LAN)、存储区域网(SAN)和/或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商(ISP)来通过因特网连接)。[0034]下面将参照根据本发明各个实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0035]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)0
[0036]计算机程序指令还可以加载到计算机、其他可编程数据处理设备,或其他设备中,以使一系列操作步骤在计算机上、其他可编程设备上或其他设备上执行,以产生计算机实现的过程,以便在计算机或其他可编程设备上执行的指令提供用于实现在流程图和/或框图的多个框中所指定的功能/动作的过程。
[0037]图1示出了根据一个实施例的网络体系结构100。如图1所示,提供了多个远程网络102,包括第一远程网络104和第二远程网络106。网关101可以I禹合在远程网络102和附近网络108之间。在本网络体系结构100的上下文中,网络104,106中每一个都可以呈现任何形式,包括但不仅限于,LAN、诸如因特网之类的WAN、公用交换电话网(PSTN)、内部电话网络等等。
[0038]在使用中,网关101充当从远程网络102到附近网络108的进入点。如此,网关101可以充当能够定向到达网关101的数据的给定数据包的路由器,以及对于给定数据包提供进出网关101的实际路径的交换机。
[0039]还包括耦合到附近网络108的并且通过网关101从远程网络102可访问的至少一个数据服务器114。应该注意,数据服务器114可以包括任何类型的计算设备/组件式软件(group ware)。耦合到每一个数据服务器114的是多个用户设备116。这样的用户设备116可以包括台式计算机、膝上型计算机、手持式计算机、打印机,和/或任何其他类型的包含逻辑的设备。应该注意,在某些实施例中,用户设备111也可以直接耦合到网络中的任何一种。
[0040]外围设备120或外围设备系列120,例如,传真机、打印机、扫描仪、硬盘驱动器、联网的和/或本地存储器单元或系统,等等,可以耦合到网络104、106、108中的一个或多个。应该注意,数据库和/或额外的组件可以与耦合到网络104、106、108的任何类型的网络元件一起使用或集成到它们中。在本描述的上下文中,网络元件可以是指网络的任何组件。
[0041]根据某些方法,此处所描述的方法和系统可以利用虚拟系统和/或模仿一个或多个其他系统的系统来实现,诸如仿真IBM z/OS环境的UNIX系统,虚拟地托管MICROSOFTWINDOWS环境的UNIX系统,仿真IBM z/0S环境的MICROSOFT WINDOWS系统等等。在某些实施例中,此虚拟化和/或仿真可以通过使用VMWARE软件来增强。
[0042]在更多方法中,一个或多个网络104、106、108可以表示通常被称为“云”的系统集群。在云计算中,诸如处理能力、外围设备、软件、数据、服务器等等之类的共享资源,以按需关系被提供到云中的任何系统,从而允许跨许多计算系统的服务的访问和分布。云计算通常涉及在云中操作的系统之间的因特网连接,但是如当前已知的,也可以使用连接系统的其他技术。
[0043]图2示出了根据一个实施例的与图1的用户设备116和/或服务器114相关联的代表性的硬件环境。图2示出了根据多个实施例的具有诸如微处理器之类的中央处理单元(CPU)210以及通过一个或多个总线212互连的若干个其他单元的工作站的典型硬件配置,总线212可以是不同类型,诸如局部总线、并行总线、串行总线等等。
[0044]图2所示出的工作站包括随机存取存储器(RAM) 214、只读存储器(ROM) 216、用于将诸如磁盘存储器单元220之类的外围设备连接到一个或多个总线212的I/O适配器218,用于将键盘224、鼠标226、扬声器228、麦克风232、和/或诸如触摸屏、数码相机(未示出)等等之类的其他用户接口设备连接到一个或多个总线212的用户接口适配器222,用于将工作站连接到通信网络235 (例如,数据处理网络)的通信适配器234,以及用于将一个或多个总线212连接到显示设备238的显示适配器236。
[0045]工作站可以具有诸如MICROSOFT WINDOWS操作系统(OS)、MAC OS,UNIX OS等等之类的操作系统。可以理解,优选实施例也可以在除所提及的那些以外的平台和操作系统上实现。优选实施例可以使用JAVA、XML、C和/或C++语言,或其他编程语言,以及面向对象的编程方法来编写。可以使用越来越多地被用来开发复杂应用的面向对象的编程(OOP)。
[0046]现在参考图3A,示出了根据一个实施例的系统300。系统300包括诸如OFC之类的交换机控制器302,以及交换机304。交换机控制器302适于维护指出了对未知单播数据包的特殊处理的兴趣的交换机中的每一个的页面目录。对于此描述,假设交换机304指出了对未知单播数据包的特殊处理的兴趣。每一个页面目录条目都是每交换机的,并指向由交换机控制器302为该特定交换机维护的扩展的MAC地址到端口号的表。
[0047]如图3B所示,当由已经填充了其MAC地址表306的交换机304接收到未知单播数据包时,交换机304将带有进入端口信息的数据包送到(punt)交换机控制器302。交换机控制器302在扩展的MAC地址表312中为数据包中指定的源设备308创建MAC地址表条目,并通知交换机304发出第一广播,以学习与数据包相关联的目的地地址。当目的地设备310 (在学习其地址之后,在转发时,应该接收数据包)作出响应时,规则将带有额外的进入端口信息的响应数据包送到交换机控制器302,在交换机控制器302中,为目的地设备310创建MAC地址表条目。然后,交换机控制器302参考扩展的MAC地址表312中的以前创建的源设备308的条目,以指示交换机304有关涉及接收到的数据包的转发决定。这导致源设备308连接到的外出端口上的单播传输。
[0048]源设备308和目的地设备310之间的任何随后的通信都请求交换机控制器302指南,这会导致单播通信(而不是不合需要的广播或泛洪)。这会持续直到交换机的本机MAC地址表306中的一个或多个条目老化,为新条目腾出空间。此时,交换机控制器302将扩展的MAC地址表与交换机的MAC地址表306同步。由于现在本地“学习”源和目的地设备的MAC地址,因此当接收到指出目的地设备310作为目的地地址的数据包时,不再触发未知单播处理规则,由交换机304本身本地作出外出决定。
[0049]总的来说,在常规默认规则下作为广播泛洪发送的东西仅限于单播传输,这会节省会话时间上的显著结构带宽,并提供安全通信,因为广播不会发送到由于隐私/权限设置潜在地不应该接收到它们的设备。[0050]在一个示例中,网络400包括启用OpenFlow的以太网交换机404、源设备408、目的地设备410、以及运行OFC软件的服务器402。服务器可以运行任何合适的操作系统,诸如Windows服务器、Linux等等。根据各实施例,假设图4中所描述的布局,参考图5_8更详细地说明了规则建立、对于正反向路径的决策序列、以及MAC地址表同步。当然,相同描述可以应用于任何布局,包括图3A-3B中所示出的那些,等等。
[0051]根据更多实施例,交换机控制器(服务器402)可以为诸如网络400中的其他交换机和/或交换设备之类的多个设备维护扩展的MAC地址表。可以为每一个设备,为每一个VLAN,为每一个单独的虚拟专用网络(VPN),每个域等等,单独地维护每一个扩展的MAC地址表,或者该表可以被包括在单一扩展的MAC地址表中。
[0052]现在参考图5,示出了根据一个实施例的用于初始化交换机中的默认规则的方法500的流程图。根据本发明,其中在各种实施例中,方法500可以在图1-4中所描绘的环境中的任何一个环境中执行。当然,如本领域技术人员在阅读本描述之后所理解的,比图5中具体描述的那些操作多一些或少一些的操作可以被包括在方法500中。
[0053]方法500的步骤中的每一个都可以通过操作环境的任何合适的组件来执行。例如,根据各实施例,方法500可以部分地或完全地由交换机、源设备、目的地设备、和/或运行OpenFlow软件的服务器或某种其他交换机控制器来执行。
[0054]如图5所示,方法500可以利用操作502启动,此时,检测交换机。可以使用当前已知的任何方法检测交换机,诸如监测心跳信号,通过发送对响应的请求来初始化通信,接收添加了交换机的指示等等。这也可以被称为交换机发现操作,并可以包括当前已知的任何交换机发现技术。
[0055]在操作504中,确定交换机是否能够通过诸如OpenFlow之类的交换机控制器应用进行通信,该交换机控制器应用适于修改诸如交换机、路由器、网关等等之类的网络设备的行为。此确定可以通过根据交换机控制器应用来发送消息并确定交换机是否能够作出响应而作出。在另一种方法中,能够通过交换机控制器应用进行通信的任何交换机可以在它对被设计用于在操作502中检测交换机的消息作出响应时指出这种兼容性。
[0056]在操作506中,当确定交换机不能够通过交换机控制器应用进行通信时,默认未知单播处理规则不被改写,例如,交换机控制器对发现的交换机不执行进一步的动作。
[0057]在操作508中,当确定交换机能够通过交换机控制器应用进行通信时,默认未知单播处理规则被改写,以便当接收到未知单播数据包时,向交换机控制器发送由交换机接收到的任何未知单播数据包,代替让交换机泛洪,例如未知单播数据包被发送到交换机控制器,然后该交换机控制器可以执行涉及未知单播数据包的额外的操作。
[0058]现在参考图6,示出了根据一个实施例的用于对数据包作出响应的方法600的流程图。根据本发明,其中,在各种实施例中,方法600可以在图1-4中所描绘的环境中的任何一个环境中执行。当然,如本领域技术人员在阅读本描述之后所理解的,比图6中具体描述的那些操作多一些或少一些的操作可以被包括在方法600中。
[0059]方法600的步骤中的每一个都可以通过操作环境的任何合适的组件来执行。例如,根据各实施例,方法600可以部分地或完全地由交换机、源设备、目的地设备、和/或运行OpenFlow软件的服务器或某种其他交换机控制器来执行。
[0060]如图6所示,方法600可以利用操作602启动,此时接收数据包。对于这些描述,假设数据包是未知单播数据包。如果它是多播数据包,那么方法600可以在操作602之后结束。
[0061]数据包可以在任何设备中接收,对于这些描述,假设数据包在交换机中接收。然而,能够接收网络流量的任何其他设备都可以接收数据包,并且方法600可以与其一起实现。
[0062]在操作604中,确定本地MAC地址表是否已满,例如,如果在交换机本地的表中有任何空间可以添加另一个设备的MAC地址的另一个条目,那么表未满。
[0063]在操作606中,当MAC地址表已满时,准备源MAC进入端口关联条目,并将其发送到交换机控制器。关联表示在其上面接收到数据包的进入端口和在数据包中指出的源MAC地址(可能在数据包的标头中)之间的关系。
[0064]在操作608中,交换机控制器接收源MAC进入端口关联条目,并创建和/或更新存储在交换机控制器上的或以别的方式可以被交换机控制器访问的扩展的MAC地址表中的条目。
[0065]在操作610中,交换机控制器指示交换机广播数据包。
[0066]在操作612中,交换机广播数据包。执行此操作,以便确定数据包的目的地地址。
[0067]如果存储在交换机控制器上的扩展的MAC地址表已经包括了源MAC进入端口关联条目,例如,交换机控制器在操作608中只更新条目,那么交换机控制器发回交换机的目的地地址,以用来将单播数据包发送到其打算的目的地,代替广播数据包,如在操作612中所指出的。
[0068]在操作614中,当本地MAC地址表未满时,在数据包中指出的源MAC地址由接收到数据包的交换机学习。
[0069]现在参考图7,示出了根据一个实施例的用于对数据包作出响应的方法700的流程图。根据本发明,其中,在各种实施例中,方法700可以在图1-4中所描绘的环境中的任何一个环境中执行。当然,如本领域技术人员在阅读本描述之后所理解的,比图7中具体描述的那些操作多一些或少一些的操作可以被包括在方法700中。
[0070]方法700的步骤中的每一个都可以通过操作环境的任何合适的组件来执行。例如,根据各实施例,方法700可以部分地或完全地由交换机、源设备、目的地设备、和/或运行OFC软件的服务器或某种其他交换机控制器来执行。
[0071]如图7所示,方法700可以利用操作702启动,此时,接收数据包。对于这些描述,假设数据包是未知单播数据包。如果它是多播数据包,那么方法700可以在操作702之后结束。
[0072]数据包可以在任何设备中接收,对于这些描述,假设数据包在交换机中接收。然而,能够接收网络流量的任何其他设备都可以接收数据包,并且方法700可以与其一起实现。
[0073]在操作704中,确定本地MAC地址表是否已满,例如,如果在交换机本地的表中有任何空间可以添加另一个设备的MAC地址的另一个条目,那么表未满。
[0074]在操作706中,当本地MAC地址表未满时,在数据包中指出的源MAC地址由接收到数据包的交换机学习。
[0075]在操作708中,当MAC地址表已满时,准备源MAC进入端口关联条目,并将其发送到交换机控制器。关联表示在其上接收到数据包的进入端口和在数据包中指出的源MAC地址(可能在数据包的标头中)之间的关系。
[0076]在操作710中,交换机控制器接收源MAC进入端口关联条目,并创建和/或更新存储在交换机控制器上的或以别的方式可以被交换机控制器访问的扩展的MAC地址表中的条目。
[0077]在操作712中,确定数据包的目的地MAC地址是否存储在本地MAC地址表中。
[0078]在操作714中,当目的地MAC地址位于本地MAC地址表中时,交换机根据存储的目的地MAC地址来转发数据包。
[0079]在操作716中,当目的地MAC地址未存储在本地MAC地址表中时,交换机控制器分析存储在交换机控制器上的或以别的方式可以被交换机控制器访问的扩展的MAC地址表,以查找数据包的目的地MAC地址。
[0080]在操作718中,当在扩展的MAC地址表中发现目的地MAC地址条目时,交换机控制器利用外出端口转发信息来对交换机作出响应,以及方法700继续操作714。
[0081]在操作720中,当在扩展的MAC地址表中未发现目的地MAC地址条目时,交换机控制器指示交换机广播数据包,以便确定数据包的目的地MAC地址。
[0082]现在参考图8,示出了根据一个实施例的用于同步MAC地址表的方法800的流程图。根据本发明,其中,在各种实施例中,方法800可以在图1-4中所描绘的环境中的任何一个环境中执行。当然,如本领域技术人员在阅读本描述之后所理解的,比图8中具体描述的那些操作多一些或少一些的操作可以被包括在方法800中。
[0083]方法800的步骤中的每一个都可以通过操作环境的任何合适的组件来执行。例如,根据各实施例,方法800可以部分地或完全地由交换机、源设备、目的地设备、和/或运行OpenFlow软件的服务器或某种其他交换机控制器来执行。
[0084]如图8所示,方法800可以利用操作802启动,此时,确定是否发生了触发事件。在一个实施例中,触发事件可以是同步时间间隔超时。在另一个实施例中,触发事件可以是同步计时器到期。如本领域技术人员所理解的,也可以使用其他触发事件。
[0085]在操作804中,当发生了触发事件时,确定交换机的本地MAC地址表是否已满,例如,如果在交换机本地的表中有任何空间可以添加另一个设备的MAC地址的另一个条目,那么表未满。
[0086]在操作806中,当本地MAC地址表已满时,触发事件停止,以便它可以被再次触发。例如,当触发事件是计时器时,计时器被复位。在另一个示例中,当触发事件是同步时间间隔时,时间间隔周期被复位到开始。
[0087]在操作808中,当本地MAC地址表未满时,交换机控制器上的扩展的MAC地址表与交换机上的本地MAC地址表同步,例如,扩展的MAC地址表中的条目被导入到本地MAC地址中达到可能的范围,最有用的条目首先导入。可以使用当前已知的任何方法,诸如先进、最后进、使用最多、最重要的等等,来确定有用的条目。
[0088]如图5-8所不,根据各实施例的方法500-800中的任何一个都可以在系统和/或计算机程序产品中实现。
[0089]根据一个实施例,交换机可以包括在各种实施例中以硬件实现的或以软件实现的处理器。处理器可以适于执行逻辑并运行OpenFlow应用或某种其他交换机控制器应用。根据各实施例,下列逻辑中的任何或全部都可以被包括在交换机中:被配置成用于允许诸如OpenFlow控制器之类的交换机控制器改写用于处理所述交换机中的未知单播数据包,以便当接收到未知单播数据包时,所述交换机将由所述交换机接收到的任何未知单播数据包发送到所述OpenFlow控制器代替泛洪的默认规则的逻辑,被配置成用于接收未知单播数据包的逻辑,被配置成用于确定本地MAC地址表何时已满的逻辑,被配置成用于当所述本地MAC地址不满时学习与所述数据包相关联的源MAC地址的逻辑,被配置成用于当所述本地MAC地址已满时准备源MAC进入端口关联条目并将所述源MAC进入端口关联条目发送到所述交换机控制器的逻辑,被配置成用于确定与所述数据包相关联的目的地MAC地址何时位于所述本地MAC地址表中的逻辑,被配置成用于当与所述数据包相关联的所述目的地MAC地址位于所述本地MAC地址表中时根据所述目的地MAC地址转发所述数据包的逻辑,以及被配置成用于根据存储在所述扩展的MAC地址表中的与所述数据包相关联的目的地MAC地址转发所述数据包或者广播所述数据包的逻辑。当具有所述目的地MAC地址的条目位于所述扩展的MAC地址表中时,从所述交换机控制器接收存储在所述扩展的MAC地址表中的与所述数据包相关联的所述目的地MAC地址。
[0090]尽管上文描述了各实施例,但是应该理解,它们只是作为示例来呈现的,而不作为限制。如此,本发明的实施例的范围不应该受到上文描述的任何示例性实施例的限制,而只应根据下面的权利要求和它们的等效内容进行限定。
【权利要求】
1.一种系统,包括: 以硬件实现的适于运行交换机控制器应用的处理器; 被配置成用于检测网络中的交换机的逻辑器; 被配置成用于确定所述交换机能够通过所述交换机控制器应用进行通信的逻辑器;以及 被配置成用于改写用于处理所述交换机中的未知单播数据包以便当接收到未知单播数据包时,所述交换机将由所述交换机接收到的任何未知单播数据包发送到所述系统代替泛洪的默认规则的逻辑器。
2.如权利要求1所述的系统,其中,所述交换机控制器应用遵循OpenFlow。
3.如权利要求1所述的系统,进一步包括: 被配置成用于从所述交换机接收源媒体访问控制(MAC)进入端口关联条目的逻辑器,其中所述进入端口涉及在所述交换机处接收到的未知单播数据包;以及 被配置成用于在扩展的MAC地址表中创建或更新带有所述源MAC进入端口关联条目中所包括的信息的条目的逻辑器。
4.如权利要求3所述的系统,进一步包括: 被配置成用于确定所述数据包的目的地MAC地址在位于所述交换机上的本地MAC地址表中的逻辑器;以及 被配置成用于指示所述交换机根据存储在所述本地MAC地址表中的所述目的地MAC地址来转发所述数据包的逻辑器。
5.如权利要求3所述的系统,进一步包括: 被配置成用于确定所述数据包的目的地MAC地址不在位于所述交换机上的本地MAC地址表中的逻辑器; 被配置成用于确定所述数据包的目的地MAC地址在所述扩展的MAC地址表中的逻辑器;以及 被配置成用于指示所述交换机根据存储在所述扩展的MAC地址表中的所述目的地MAC地址来转发所述数据包的逻辑器。
6.如权利要求3所述的系统,进一步包括: 被配置成用于确定所述数据包的目的地MAC地址不在位于所述交换机上的本地MAC地址表中的逻辑器; 被配置成用于确定所述数据包的目的地MAC地址不在所述扩展的MAC地址表中的逻辑器;以及 被配置成用于指示所述交换机广播所述数据包的逻辑器。
7.如权利要求1所述的系统,进一步包括: 被配置成用于确定何时发生了触发事件的逻辑器; 被配置成用于确定位于所述交换机上的本地媒体访问控制(MAC)地址表不满的逻辑器;以及 被配置成用于将可以被所述系统访问的扩展的MAC地址表与位于所述交换机上的所述本地MAC地址表同步的逻辑器。
8.如权利要求7所述的系统,其中,所述触发事件是同步计时器到期,以及其中,所述被配置成用于将所述扩展的MAC地址表与所述本地MAC地址表同步的逻辑器包括:被配置成用于从所述扩展的MAC地址表向所述本地MAC地址表导入条目的逻辑器,其中更有用的条目在不太有用的条目之前被导入。
9.一种用于处理未知单播数据包的计算机系统,包括: 用于检测网络中的交换机的装置; 用于确定所述交换机能够通过所述交换机控制器应用进行通信的装置;以及用于改写用于处理所述交换机中的未知单播数据包以便当接收到未知单播数据包时,所述交换机将由所述交换机接收到的任何未知单播数据包发送到所述交换机控制器代替泛洪的默认规则的装置,其中所述交换机控制器能够运行所述交换机控制器应用并与所述交换机进行通信。
10.如权利要求9所述的计算机系统,其中,所述交换机控制器应用遵循OpenFlow。
11.如权利要求9所述的计算机系统,进一步包括: 用于从所述交换机接收源媒体访问控制(MAC)进入端口关联条目的装置,其中所述进入端口涉及在所述交换机处接收到的未知单播数据包;以及 用于在扩展的MAC地址表中创建或更新带有所述源MAC进入端口关联条目中所包括的信息的条目的装置。
12.如权利要求11所述的计算机系统,进一步包括: 用于确定所述数据包的目的地MA C地址在位于所述交换机上的本地MAC地址表中的装置;以及 用于指示所述交换机根据存储在所述本地MAC地址表中的所述目的地MAC地址来转发所述数据包的装置。
13.如权利要求11所述的计算机系统,进一步包括: 用于确定所述数据包的目的地MAC地址不在位于所述交换机上的本地MAC地址表中的装置; 用于确定所述数据包的目的地MAC地址在所述扩展的MAC地址表中的装置;以及用于指示所述交换机根据存储在所述扩展的MAC地址表中的所述目的地MAC地址来转发所述数据包的装置。
14.如权利要求11所述的计算机系统,进一步包括: 用于确定所述数据包的目的地MAC地址不在位于所述交换机上的本地MAC地址表中的装置; 用于确定所述数据包的目的地MAC地址不在所述扩展的MAC地址表中的装置;以及 用于指示所述交换机广播所述数据包的装置。
15.如权利要求9所述的计算机系统,进一步包括: 用于确定何时发生了触发事件的装置; 用于确定位于所述交换机上的本地媒体访问控制(MAC)地址表不满的装置;以及用于将可以被所述交换机控制器访问的扩展的MAC地址表与位于所述交换机上的所述本地MAC地址表同步的装置。
16.如权利要求15所述的计算机系统,其中,所述触发事件是同步计时器到期,以及其中,所述用于将所述扩展的MAC地址表与所述本地MAC地址表同步的装置包括:用于从所述扩展的MAC地址表向所述本地MAC地址表导入条目的装置,其中更有用的条目在不太有用的条目之前被导入。
17.一种用于处理未知单播数据包的方法,所述方法包括: 检测网络中的交换机,所述网络包括所述交换机和交换机控制器; 确定所述交换机能够通过所述交换机控制器应用进行通信;以及 改写用于处理所述交换机中的未知单播数据包以便当接收到未知单播数据包时,所述交换机将由所述交换机接收到的任何未知单播数据包发送到所述交换机控制器代替泛洪的默认规则。
18.如权利要求17所述的方法,其中,所述交换机控制器应用遵循OpenFlow。
19.如权利要求17所述的方法,进一步包括: 从所述交换机接收源媒体访问控制(MAC)进入端口关联条目,其中所述进入端口涉及在所述交换机处接收到的未知单播数据包;以及 在扩展的MAC地址表中创建或更新带有所述源MAC进入端口关联条目中所包括的信息的条目,其中所述扩展的MAC地址表能够被所述交换机控制器访问。
20.如权利要求19所述的方法,进一步包括: 确定所述数据包的目的地MAC地址在位于所述交换机上的本地MAC地址表中;以及指示所述交换机根据存储在所述本地MAC地址表中的所述目的地MAC地址来转发所述数据包。
21.如权利要求19所述的方法,进一步包括: 确定所述数据包的目的地MAC地址不在位于所述交换机上的本地MAC地址表中; 确定所述数据包的目的地MAC地址在所述扩展的MAC地址表中;以及指示所述交换机根据存储在所述扩展的MAC地址表中的所述目的地MAC地址来转发所述数据包。
22.如权利要求19所述的方法,进一步包括: 确定所述数据包的目的地MAC地址不在位于所述交换机上的本地MAC地址表中; 确定所述数据包的目的地MAC地址不在所述扩展的MAC地址表中;以及 指示所述交换机广播所述数据包。
23.如权利要求17所述的方法,进一步包括: 确定何时发生了触发事件; 确定位于所述交换机上的本地媒体访问控制(MAC)地址表不满;以及将可以被所述交换机控制器访问的扩展的MAC地址表与位于所述交换机上的所述本地MAC地址表同步。
24.如权利要求23所述的方法,其中,所述触发事件是同步计时器到期,以及其中,将所述扩展的MAC地址表与所述本地MAC地址表同步包括:从所述扩展的MAC地址表向所述本地MAC地址表导入条目,其中更有用的条目在不太有用的条目之前被导入。
25.一种交换机,包括: 以硬件实现的适于运行OpenFlow应用的处理器; 被配置成用于允许OpenFlow控制器改写用于处理所述交换机中的未知单播数据包以便当接收到未知单播数据包时,所述交换机将由所述交换机接收到的任何未知单播数据包发送到所述OpenFlow控制器代替泛洪的默认规则的逻辑器; 被配置成用于接收未知单播数据包的逻辑器; 被配置成用于确定何时本地媒体访问控制(MAC)地址表已满的逻辑器; 被配置成用于当所述本地MAC地址不满时学习与所述数据包相关联的源MAC地址的逻辑器; 被配置成用于当所述本地MAC地址已满时准备源MAC进入端口关联条目并将所述源MAC进入端口关联条目发送到所述OpenFlow控制器的逻辑器; 被配置成用于确定与所述数据包相关联的目的地MAC地址何时位于所述本地MAC地址表中的逻辑器; 被配置成用于当与所述数据包相关联的所述目的地MAC地址位于所述本地MAC地址表中时,根据所述目的地MAC地址转发所述数据包的逻辑器;以及 被配置成用于根据存储在所述扩展的MAC地址表中的与所述数据包相关联的目的地MAC地址转发所述数据包或者广播所述数据包的逻辑器, 其中当具有所述目的地MAC地址的条目位于所述扩展的MAC地址表中时,从所述OpenFlow控制器接收存储在所述扩展的MAC地址表中的与所述数据包相关联的所述目的地MAC地址。
【文档编号】H04L12/741GK103581062SQ201310345224
【公开日】2014年2月12日 申请日期:2013年8月9日 优先权日:2012年8月9日
【发明者】B·G·巴纳瓦利卡, K·G·坎伯, A·P·库布海尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1